From 7291b41c9c566487003edfe41e241da34d70422d Mon Sep 17 00:00:00 2001 From: yuruixin Date: Sun, 8 Jan 2023 18:28:31 +0800 Subject: [PATCH 001/182] optimize: print Stack Trace in EnhancedServiceLoader.loadFile#catch (#5237) --- changes/en-us/develop.md | 2 ++ changes/zh-cn/develop.md | 2 ++ .../java/io/seata/common/loader/EnhancedServiceLoader.java | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 6a6f7c8cde6..c548a2c9073 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -12,6 +12,7 @@ Add changes here for all PR submitted to the develop branch. ### optimize: - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level +- [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx @@ -23,5 +24,6 @@ Thanks to these contributors for their code commits. Please report an unintended - [xssdpgy](https://github.com/xssdpgy) - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) +- [yuruixin](https://github.com/yuruixin) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 1721a178503..93e746dd6fd 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -13,6 +13,7 @@ ### optimize: - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 +- [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 @@ -24,5 +25,6 @@ - [xssdpgy](https://github.com/xssdpgy) - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) +- [yuruixin](https://github.com/yuruixin) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java index d9be35d9212..547b7a9cc1a 100644 --- a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java +++ b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java @@ -540,7 +540,7 @@ private void loadFile(String dir, ClassLoader loader, List Date: Mon, 9 Jan 2023 17:44:41 +0800 Subject: [PATCH 002/182] optimize: Throwable#getCause once more (#5208) --- changes/en-us/develop.md | 2 ++ changes/zh-cn/develop.md | 3 ++- .../java/io/seata/server/transaction/at/ATCore.java | 5 +++-- .../annotation/GlobalTransactionalInterceptor.java | 11 ++++++----- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index c548a2c9073..6eba3841094 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -11,9 +11,11 @@ Add changes here for all PR submitted to the develop branch. - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate ### optimize: +- [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) + ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 93e746dd6fd..1f93299345e 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -6,15 +6,16 @@ - [[#xxx](https://github.com/seata/seata/pull/xxx)] 支持 xxx ### bugfix: -- [[#xxx](https://github.com/seata/seata/pull/xxx)] 修复 xxx - [[#5194](https://github.com/seata/seata/pull/5194)] 修复使用Oracle作为服务端DB存储时的建表失败问题 - [[#5021](https://github.com/seata/seata/pull/5201)] 修复 JDK17 下获取 Spring 原始代理对象失败的问题 - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 ### optimize: +- [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) + ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 diff --git a/server/src/main/java/io/seata/server/transaction/at/ATCore.java b/server/src/main/java/io/seata/server/transaction/at/ATCore.java index b26530d1ef1..81163b99f9c 100644 --- a/server/src/main/java/io/seata/server/transaction/at/ATCore.java +++ b/server/src/main/java/io/seata/server/transaction/at/ATCore.java @@ -80,8 +80,9 @@ protected void branchSessionLock(GlobalSession globalSession, BranchSession bran branchSession.getBranchId())); } } catch (StoreException e) { - if (e.getCause() instanceof BranchTransactionException) { - throw new BranchTransactionException(((BranchTransactionException)e.getCause()).getCode(), + Throwable cause = e.getCause(); + if (cause instanceof BranchTransactionException) { + throw new BranchTransactionException(((BranchTransactionException)cause).getCode(), String.format("Global lock acquire failed xid = %s branchId = %s", globalSession.getXid(), branchSession.getBranchId())); } diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java index 6011eced7c7..7bc8609ecad 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java +++ b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java @@ -246,17 +246,18 @@ public TransactionInfo getTransactionInfo() { }); } catch (TransactionalExecutor.ExecutionException e) { TransactionalExecutor.Code code = e.getCode(); + Throwable cause = e.getCause(); switch (code) { case RollbackDone: throw e.getOriginalException(); case BeginFailure: succeed = false; - failureHandler.onBeginFailure(e.getTransaction(), e.getCause()); - throw e.getCause(); + failureHandler.onBeginFailure(e.getTransaction(), cause); + throw cause; case CommitFailure: succeed = false; - failureHandler.onCommitFailure(e.getTransaction(), e.getCause()); - throw e.getCause(); + failureHandler.onCommitFailure(e.getTransaction(), cause); + throw cause; case RollbackFailure: failureHandler.onRollbackFailure(e.getTransaction(), e.getOriginalException()); throw e.getOriginalException(); @@ -265,7 +266,7 @@ public TransactionInfo getTransactionInfo() { throw e.getOriginalException(); case TimeoutRollback: failureHandler.onTimeoutRollback(e.getTransaction(), e.getOriginalException()); - throw e.getCause(); + throw cause; default: throw new ShouldNeverHappenException(String.format("Unknown TransactionalExecutor.Code: %s", code)); } From fc29936df32eb2f1e094388d48aa3b68e93b8e2f Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Tue, 10 Jan 2023 18:36:41 +0800 Subject: [PATCH 003/182] bugfix: seata-core dependency transitive conflict in seata-dubbo (#5203) --- all/pom.xml | 6 ++++++ changes/en-us/develop.md | 2 ++ changes/zh-cn/develop.md | 2 ++ dependencies/pom.xml | 2 +- integration/dubbo/pom.xml | 9 ++++++--- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index b87fe16cec9..e0215683f9e 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -399,6 +399,12 @@ org.apache.dubbo.extensions dubbo-filter-seata + + + io.seata + seata-core + + com.google.protobuf diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 6eba3841094..2be0b0db0f3 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -8,8 +8,10 @@ Add changes here for all PR submitted to the develop branch. ### bugfix: - [[#5194](https://github.com/seata/seata/pull/5194)] fix wrong keyword order for oracle when creating a table - [[#5021](https://github.com/seata/seata/pull/5201)] Fix JDK Reflection for Spring origin proxy failed in JDK17 +- [[#5023](https://github.com/seata/seata/pull/5203)] Fix `seata-core` dependency transitive conflict in `seata-dubbo` - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate + ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 1f93299345e..3d9b326af77 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -8,8 +8,10 @@ ### bugfix: - [[#5194](https://github.com/seata/seata/pull/5194)] 修复使用Oracle作为服务端DB存储时的建表失败问题 - [[#5021](https://github.com/seata/seata/pull/5201)] 修复 JDK17 下获取 Spring 原始代理对象失败的问题 +- [[#5023](https://github.com/seata/seata/pull/5203)] 修复 `seata-core` 模块传递依赖冲突 - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 + ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 67db5b5a7f0..1b8364aa7a6 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -32,7 +32,7 @@ dependencies for Seata built with Maven - 1.0.0 + 1.0.2 2.5.9 1.8.3 1.12.13 diff --git a/integration/dubbo/pom.xml b/integration/dubbo/pom.xml index 2138072be8f..c146949ef9e 100644 --- a/integration/dubbo/pom.xml +++ b/integration/dubbo/pom.xml @@ -29,13 +29,16 @@ seata-dubbo ${project.version} apache dubbo integration for Seata built with Maven - - 1.0.0 - org.apache.dubbo.extensions dubbo-filter-seata + + + io.seata + seata-core + + From d19cfee0819befa633d611750cf6ad3f8d6bdc69 Mon Sep 17 00:00:00 2001 From: xingfudeshi Date: Thu, 12 Jan 2023 14:49:01 +0800 Subject: [PATCH 004/182] bugfix: fix the inconsistent configuration item names related to LoadBalance (#5233) --- changes/en-us/develop.md | 3 + changes/zh-cn/develop.md | 2 + .../java/io/seata/common/DefaultValues.java | 2 +- .../ConsistentHashLoadBalance.java | 6 +- .../config/ConfigurationFactoryTest.java | 8 +-- .../src/test/resources/file.conf | 6 +- script/client/conf/file.conf | 4 +- script/client/spring/application.properties | 2 +- script/client/spring/application.yml | 2 +- ...itional-spring-configuration-metadata.json | 9 ++- .../client/LoadBalancePropertiesTest.java | 70 +++++++++++++++++++ test/src/test/resources/file.conf | 4 +- 12 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/test/java/io/seata/spring/boot/autoconfigure/properties/client/LoadBalancePropertiesTest.java diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 2be0b0db0f3..90c5f323cac 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -10,6 +10,8 @@ Add changes here for all PR submitted to the develop branch. - [[#5021](https://github.com/seata/seata/pull/5201)] Fix JDK Reflection for Spring origin proxy failed in JDK17 - [[#5023](https://github.com/seata/seata/pull/5203)] Fix `seata-core` dependency transitive conflict in `seata-dubbo` - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate +- [[#5233](https://github.com/seata/seata/pull/5233)] fix the inconsistent configuration item names related to LoadBalance + ### optimize: @@ -29,5 +31,6 @@ Thanks to these contributors for their code commits. Please report an unintended - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) +- [xingfudeshi](https://github.com/xingfudeshi) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 3d9b326af77..9248b04fc5e 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -10,6 +10,7 @@ - [[#5021](https://github.com/seata/seata/pull/5201)] 修复 JDK17 下获取 Spring 原始代理对象失败的问题 - [[#5023](https://github.com/seata/seata/pull/5203)] 修复 `seata-core` 模块传递依赖冲突 - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 +- [[#5233](https://github.com/seata/seata/pull/5233)] 修复LoadBalance相关配置不一致的问题 ### optimize: @@ -29,5 +30,6 @@ - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) +- [xingfudeshi](https://github.com/xingfudeshi) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/common/src/main/java/io/seata/common/DefaultValues.java b/common/src/main/java/io/seata/common/DefaultValues.java index 8ab3777d72e..a2086b27587 100644 --- a/common/src/main/java/io/seata/common/DefaultValues.java +++ b/common/src/main/java/io/seata/common/DefaultValues.java @@ -141,7 +141,7 @@ public interface DefaultValues { * the constant TM_INTERCEPTOR_ORDER */ int TM_INTERCEPTOR_ORDER = Integer.MIN_VALUE + 1000; - + /** * the constant TCC_ACTION_INTERCEPTOR_ORDER */ diff --git a/discovery/seata-discovery-core/src/main/java/io/seata/discovery/loadbalance/ConsistentHashLoadBalance.java b/discovery/seata-discovery-core/src/main/java/io/seata/discovery/loadbalance/ConsistentHashLoadBalance.java index 25aed09918a..421b57d3487 100644 --- a/discovery/seata-discovery-core/src/main/java/io/seata/discovery/loadbalance/ConsistentHashLoadBalance.java +++ b/discovery/seata-discovery-core/src/main/java/io/seata/discovery/loadbalance/ConsistentHashLoadBalance.java @@ -37,13 +37,13 @@ public class ConsistentHashLoadBalance implements LoadBalance { /** - * The constant LOAD_BALANCE_CONSISTENT_HASH_VISUAL_NODES. + * The constant LOAD_BALANCE_CONSISTENT_HASH_VIRTUAL_NODES. */ - public static final String LOAD_BALANCE_CONSISTENT_HASH_VISUAL_NODES = LOAD_BALANCE_PREFIX + "visualNodes"; + public static final String LOAD_BALANCE_CONSISTENT_HASH_VIRTUAL_NODES = LOAD_BALANCE_PREFIX + "virtualNodes"; /** * The constant VIRTUAL_NODES_NUM. */ - private static final int VIRTUAL_NODES_NUM = ConfigurationFactory.getInstance().getInt(LOAD_BALANCE_CONSISTENT_HASH_VISUAL_NODES, VIRTUAL_NODES_DEFAULT); + private static final int VIRTUAL_NODES_NUM = ConfigurationFactory.getInstance().getInt(LOAD_BALANCE_CONSISTENT_HASH_VIRTUAL_NODES, VIRTUAL_NODES_DEFAULT); @Override public T select(List invokers, String xid) { diff --git a/discovery/seata-discovery-core/src/test/java/io/seata/config/ConfigurationFactoryTest.java b/discovery/seata-discovery-core/src/test/java/io/seata/config/ConfigurationFactoryTest.java index 2e26179202f..7b45ac9fac0 100644 --- a/discovery/seata-discovery-core/src/test/java/io/seata/config/ConfigurationFactoryTest.java +++ b/discovery/seata-discovery-core/src/test/java/io/seata/config/ConfigurationFactoryTest.java @@ -37,9 +37,9 @@ void getInstance() { void getLoadBalance() { Configuration configuration = ConfigurationFactory.getInstance(); String loadBalanceType = configuration.getConfig(LoadBalanceFactory.LOAD_BALANCE_TYPE); - int visualNode = configuration.getInt(ConsistentHashLoadBalance.LOAD_BALANCE_CONSISTENT_HASH_VISUAL_NODES); - Assertions.assertEquals("RandomLoadBalance", loadBalanceType); - Assertions.assertEquals(10,visualNode); + int virtualNode = configuration.getInt(ConsistentHashLoadBalance.LOAD_BALANCE_CONSISTENT_HASH_VIRTUAL_NODES); + Assertions.assertEquals("XID", loadBalanceType); + Assertions.assertEquals(10,virtualNode); } -} \ No newline at end of file +} diff --git a/discovery/seata-discovery-core/src/test/resources/file.conf b/discovery/seata-discovery-core/src/test/resources/file.conf index 12e134002ba..908d7c2a89c 100644 --- a/discovery/seata-discovery-core/src/test/resources/file.conf +++ b/discovery/seata-discovery-core/src/test/resources/file.conf @@ -17,7 +17,7 @@ #loadBalance config client { loadBalance { - type = "RandomLoadBalance" - visualNodes = 10 + type = "XID" + virtualNodes = 10 } -} \ No newline at end of file +} diff --git a/script/client/conf/file.conf b/script/client/conf/file.conf index 7c99daa059a..a91822aaede 100644 --- a/script/client/conf/file.conf +++ b/script/client/conf/file.conf @@ -106,7 +106,7 @@ client { } } loadBalance { - type = "RandomLoadBalance" + type = "XID" virtualNodes = 10 } } @@ -120,4 +120,4 @@ tcc { # tcc fence log clean period cleanPeriod = 1h } -} \ No newline at end of file +} diff --git a/script/client/spring/application.properties b/script/client/spring/application.properties index 0c4d4b72d42..662b4de3ced 100755 --- a/script/client/spring/application.properties +++ b/script/client/spring/application.properties @@ -54,7 +54,7 @@ seata.client.undo.log-table=undo_log seata.client.undo.compress.enable=true seata.client.undo.compress.type=zip seata.client.undo.compress.threshold=64k -seata.client.load-balance.type=RandomLoadBalance +seata.client.load-balance.type=XID seata.client.load-balance.virtual-nodes=10 seata.log.exception-rate=100 seata.service.vgroup-mapping.default_tx_group=default diff --git a/script/client/spring/application.yml b/script/client/spring/application.yml index 9a547964d57..9a62f299e30 100755 --- a/script/client/spring/application.yml +++ b/script/client/spring/application.yml @@ -44,7 +44,7 @@ seata: type: zip threshold: 64k load-balance: - type: RandomLoadBalance + type: XID virtual-nodes: 10 service: vgroup-mapping: diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 5ca2a8de55c..6e13dff145a 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -214,7 +214,7 @@ "name": "seata.client.load-balance.type", "type": "java.lang.String", "sourceType": "io.seata.spring.boot.autoconfigure.properties.client.LoadBalanceProperties", - "defaultValue": "RandomLoadBalance" + "defaultValue": "XID" }, { "name": "seata.client.load-balance.virtual-nodes", @@ -348,7 +348,7 @@ "name": "seata.client.load-balance.type", "values": [ { - "value": "RandomLoadBalance", + "value": "XID", "description": "the default load balance." }, { @@ -359,6 +359,9 @@ }, { "value": "LeastActiveLoadBalance" + }, + { + "value": "RandomLoadBalance" } ] }, @@ -442,4 +445,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/test/java/io/seata/spring/boot/autoconfigure/properties/client/LoadBalancePropertiesTest.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/test/java/io/seata/spring/boot/autoconfigure/properties/client/LoadBalancePropertiesTest.java new file mode 100644 index 00000000000..a427af72ae9 --- /dev/null +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/test/java/io/seata/spring/boot/autoconfigure/properties/client/LoadBalancePropertiesTest.java @@ -0,0 +1,70 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.spring.boot.autoconfigure.properties.client; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.config.Configuration; +import io.seata.config.ExtConfigurationProvider; +import io.seata.config.FileConfiguration; +import io.seata.config.springcloud.SpringApplicationContextProvider; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; + +import static io.seata.spring.boot.autoconfigure.StarterConstants.LOAD_BALANCE_PREFIX; +import static io.seata.spring.boot.autoconfigure.StarterConstants.PROPERTY_BEAN_MAP; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; + +/** + * @author xingfudeshi@gmail.com + **/ +@Import(SpringApplicationContextProvider.class) +@org.springframework.context.annotation.Configuration +public class LoadBalancePropertiesTest { + private static AnnotationConfigApplicationContext applicationContext; + + @BeforeAll + public static void initContext() { + applicationContext = new AnnotationConfigApplicationContext(LoadBalancePropertiesTest.class); + } + + @Bean + LoadBalanceProperties loadBalanceProperties() { + LoadBalanceProperties loadBalanceProperties = new LoadBalanceProperties(); + PROPERTY_BEAN_MAP.put(LOAD_BALANCE_PREFIX, LoadBalanceProperties.class); + return loadBalanceProperties; + } + + @Test + public void testLoadBalanceProperties() { + FileConfiguration configuration = mock(FileConfiguration.class); + Configuration currentConfiguration = + EnhancedServiceLoader.load(ExtConfigurationProvider.class).provide(configuration); + System.setProperty("seata.client.loadBalance.virtualNodes", "30"); + assertEquals(30, currentConfiguration.getInt("client.loadBalance.virtualNodes")); + System.setProperty("seata.client.loadBalance.type", "test"); + assertEquals("test", currentConfiguration.getConfig("client.loadBalance.type")); + } + + @AfterAll + public static void closeContext() { + applicationContext.close(); + } +} diff --git a/test/src/test/resources/file.conf b/test/src/test/resources/file.conf index f42eec4474b..249f11f9a27 100644 --- a/test/src/test/resources/file.conf +++ b/test/src/test/resources/file.conf @@ -63,7 +63,7 @@ client { sagaCompensatePersistModeUpdate = false } loadBalance { - type = "RandomLoadBalance" + type = "XID" virtualNodes = 10 } -} \ No newline at end of file +} From a84bbcc8cd77dbba4bfe377048169fb427079688 Mon Sep 17 00:00:00 2001 From: justabug Date: Tue, 17 Jan 2023 17:21:52 +0800 Subject: [PATCH 005/182] optimize: Only AT mode try to get channel with other app (#5153) --- changes/en-us/develop.md | 2 ++ changes/zh-cn/develop.md | 2 ++ core/src/main/java/io/seata/core/rpc/RemotingServer.java | 3 ++- .../seata/core/rpc/netty/AbstractNettyRemotingServer.java | 5 +++-- .../main/java/io/seata/core/rpc/netty/ChannelManager.java | 4 ++-- .../main/java/io/seata/server/coordinator/AbstractCore.java | 6 ++++-- .../main/java/io/seata/server/session/BranchSession.java | 4 ++++ .../io/seata/server/coordinator/DefaultCoordinatorTest.java | 3 ++- 8 files changed, 21 insertions(+), 8 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 90c5f323cac..e82d886cd5d 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -18,6 +18,7 @@ Add changes here for all PR submitted to the develop branch. - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) +- [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app ### test: @@ -32,5 +33,6 @@ Thanks to these contributors for their code commits. Please report an unintended - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) - [xingfudeshi](https://github.com/xingfudeshi) +- [Bughue](https://github.com/Bughue) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 9248b04fc5e..511597fe61a 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -17,6 +17,7 @@ - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) +- [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel ### test: @@ -31,5 +32,6 @@ - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) - [xingfudeshi](https://github.com/xingfudeshi) +- [Bughue](https://github.com/Bughue) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/core/src/main/java/io/seata/core/rpc/RemotingServer.java b/core/src/main/java/io/seata/core/rpc/RemotingServer.java index 4839e2fc0c5..fa388ed9e48 100644 --- a/core/src/main/java/io/seata/core/rpc/RemotingServer.java +++ b/core/src/main/java/io/seata/core/rpc/RemotingServer.java @@ -37,10 +37,11 @@ public interface RemotingServer { * @param resourceId rm client resourceId * @param clientId rm client id * @param msg transaction message {@code io.seata.core.protocol} + * @param tryOtherApp try other app * @return client result message * @throws TimeoutException TimeoutException */ - Object sendSyncRequest(String resourceId, String clientId, Object msg) throws TimeoutException; + Object sendSyncRequest(String resourceId, String clientId, Object msg, boolean tryOtherApp) throws TimeoutException; /** * server send sync request. diff --git a/core/src/main/java/io/seata/core/rpc/netty/AbstractNettyRemotingServer.java b/core/src/main/java/io/seata/core/rpc/netty/AbstractNettyRemotingServer.java index 880b8f47308..4e67446b547 100644 --- a/core/src/main/java/io/seata/core/rpc/netty/AbstractNettyRemotingServer.java +++ b/core/src/main/java/io/seata/core/rpc/netty/AbstractNettyRemotingServer.java @@ -63,8 +63,9 @@ public AbstractNettyRemotingServer(ThreadPoolExecutor messageExecutor, NettyServ } @Override - public Object sendSyncRequest(String resourceId, String clientId, Object msg) throws TimeoutException { - Channel channel = ChannelManager.getChannel(resourceId, clientId); + public Object sendSyncRequest(String resourceId, String clientId, Object msg, boolean tryOtherApp) + throws TimeoutException { + Channel channel = ChannelManager.getChannel(resourceId, clientId, tryOtherApp); if (channel == null) { throw new RuntimeException("rm client is not connected. dbkey:" + resourceId + ",clientId:" + clientId); } diff --git a/core/src/main/java/io/seata/core/rpc/netty/ChannelManager.java b/core/src/main/java/io/seata/core/rpc/netty/ChannelManager.java index f5c93c3c56f..caaabba879b 100644 --- a/core/src/main/java/io/seata/core/rpc/netty/ChannelManager.java +++ b/core/src/main/java/io/seata/core/rpc/netty/ChannelManager.java @@ -276,7 +276,7 @@ private static Channel getChannelFromSameClientMap(Map clie * @param clientId Client ID - ApplicationId:IP:Port * @return Corresponding channel, NULL if not found. */ - public static Channel getChannel(String resourceId, String clientId) { + public static Channel getChannel(String resourceId, String clientId, boolean tryOtherApp) { Channel resultChannel = null; String[] clientIdInfo = readClientId(clientId); @@ -381,7 +381,7 @@ public static Channel getChannel(String resourceId, String clientId) { } } - if (resultChannel == null) { + if (resultChannel == null && tryOtherApp) { resultChannel = tryOtherApp(applicationIdMap, targetApplicationId); if (resultChannel == null) { diff --git a/server/src/main/java/io/seata/server/coordinator/AbstractCore.java b/server/src/main/java/io/seata/server/coordinator/AbstractCore.java index 84ab8036b2e..9b8f79ab39c 100644 --- a/server/src/main/java/io/seata/server/coordinator/AbstractCore.java +++ b/server/src/main/java/io/seata/server/coordinator/AbstractCore.java @@ -172,8 +172,9 @@ public BranchStatus branchCommit(GlobalSession globalSession, BranchSession bran protected BranchStatus branchCommitSend(BranchCommitRequest request, GlobalSession globalSession, BranchSession branchSession) throws IOException, TimeoutException { + BranchCommitResponse response = (BranchCommitResponse) remotingServer.sendSyncRequest( - branchSession.getResourceId(), branchSession.getClientId(), request); + branchSession.getResourceId(), branchSession.getClientId(), request, branchSession.isAT()); return response.getBranchStatus(); } @@ -196,8 +197,9 @@ public BranchStatus branchRollback(GlobalSession globalSession, BranchSession br protected BranchStatus branchRollbackSend(BranchRollbackRequest request, GlobalSession globalSession, BranchSession branchSession) throws IOException, TimeoutException { + BranchRollbackResponse response = (BranchRollbackResponse) remotingServer.sendSyncRequest( - branchSession.getResourceId(), branchSession.getClientId(), request); + branchSession.getResourceId(), branchSession.getClientId(), request, branchSession.isAT()); return response.getBranchStatus(); } diff --git a/server/src/main/java/io/seata/server/session/BranchSession.java b/server/src/main/java/io/seata/server/session/BranchSession.java index 402701f4493..af0bcf63295 100644 --- a/server/src/main/java/io/seata/server/session/BranchSession.java +++ b/server/src/main/java/io/seata/server/session/BranchSession.java @@ -297,6 +297,10 @@ public boolean unlock() throws TransactionException { return true; } + public boolean isAT() { + return this.getBranchType() == BranchType.AT; + } + public LockStatus getLockStatus() { return lockStatus; } diff --git a/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java b/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java index 39ae7873c02..c83eefdc30c 100644 --- a/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java +++ b/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java @@ -249,7 +249,8 @@ static Stream xidAndBranchIdProviderForRollback() throws Exception { public static class MockServerMessageSender implements RemotingServer { @Override - public Object sendSyncRequest(String resourceId, String clientId, Object message) throws TimeoutException { + public Object sendSyncRequest(String resourceId, String clientId, Object message, boolean tryOtherApp) + throws TimeoutException { if (message instanceof BranchCommitRequest) { final BranchCommitResponse branchCommitResponse = new BranchCommitResponse(); branchCommitResponse.setBranchStatus(BranchStatus.PhaseTwo_Committed); From 24ccd9933e8a183cd5c6158e4a480e7b194255f1 Mon Sep 17 00:00:00 2001 From: justabug Date: Wed, 18 Jan 2023 00:12:52 +0800 Subject: [PATCH 006/182] security: fix some security vulnerabilities (#5172) --- build/pom.xml | 2 +- changes/en-us/develop.md | 3 +++ changes/zh-cn/develop.md | 2 ++ dependencies/pom.xml | 16 +++++++++++----- pom.xml | 2 +- server/pom.xml | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/build/pom.xml b/build/pom.xml index 60f52896fc9..899e27c268a 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -74,7 +74,7 @@ 2.5.13 - 5.3.19 + 5.3.20 5.8.2 diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index e82d886cd5d..3826f11910f 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -20,6 +20,9 @@ Add changes here for all PR submitted to the develop branch. - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) - [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app +### security: +- [[#5172](https://github.com/seata/seata/pull/5172)] fix some security vulnerabilities + ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 511597fe61a..80dbc2eb7e6 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -19,6 +19,8 @@ - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) - [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel +### security: +- [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试 diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 1b8364aa7a6..bcb6dc37bca 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -36,7 +36,7 @@ 2.5.9 1.8.3 1.12.13 - 2.6.5 + 2.6.10 5.5.3 1.2.83 1.5.9 @@ -55,7 +55,7 @@ 1.4.2 0.5.0 1.11.2 - 27.0.1-jre + 30.1-jre 1 1.3.2 4.0.1 @@ -69,7 +69,7 @@ 1.10.12 1.7.1 - 3.11.4 + 3.16.3 1.27.1 5.3.0 0.45 @@ -80,6 +80,7 @@ 1.4.19 0.10.5 + 2.13.4.1 0.6.0 1.2.9 6.5 @@ -90,9 +91,9 @@ - 5.1.35 + 5.1.42 19.3.0.0 - 42.1.4 + 42.3.3 1.4.181 2.7.2 @@ -615,6 +616,11 @@ jjwt-jackson ${jwt.version} + + com.fasterxml.jackson.core + jackson-databind + ${jackson.databind.version} + io.prometheus simpleclient_httpserver diff --git a/pom.xml b/pom.xml index 764cb6e129a..90e31432011 100644 --- a/pom.xml +++ b/pom.xml @@ -157,7 +157,7 @@ false latest false - 5.1.35 + 5.1.42 8.0.27 diff --git a/server/pom.xml b/server/pom.xml index d260d1a99f9..c2e3589e33c 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -370,7 +370,7 @@ release-seata - 5.1.35 + 5.1.42 8.0.27 false From 6a7e1bb6b3a5cfde3b9ab4541923a8239de472e8 Mon Sep 17 00:00:00 2001 From: pengten <30648785+pengten@users.noreply.github.com> Date: Fri, 20 Jan 2023 19:19:33 +0800 Subject: [PATCH 007/182] optimize: unlock branch synchronously. (#5177) --- changes/en-us/develop.md | 2 ++ changes/zh-cn/develop.md | 2 ++ .../coordinator/DefaultCoordinator.java | 35 ++++++++++++++----- .../seata/server/session/GlobalSession.java | 12 ++++++- .../seata/server/session/SessionHelper.java | 27 ++++++++++---- .../server/session/SessionLifecycle.java | 16 +++++++++ .../server/session/GlobalSessionTest.java | 2 +- 7 files changed, 79 insertions(+), 17 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 3826f11910f..91fd519d47b 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -19,6 +19,7 @@ Add changes here for all PR submitted to the develop branch. - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) - [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app +- [[#5177](https://github.com/seata/seata/pull/5177)] If `server.session.enable-branch-async-remove` is true, delete the branch asynchronously and unlock it synchronously. ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] fix some security vulnerabilities @@ -37,5 +38,6 @@ Thanks to these contributors for their code commits. Please report an unintended - [yuruixin](https://github.com/yuruixin) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) +- [pengten](https://github.com/pengten) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 80dbc2eb7e6..dc962976881 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -18,6 +18,7 @@ - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) - [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel +- [[#5177](https://github.com/seata/seata/pull/5177)] 如果 `server.session.enable-branch-async-remove` 为真,异步删除分支,同步解锁。 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 @@ -35,5 +36,6 @@ - [yuruixin](https://github.com/yuruixin) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) +- [pengten](https://github.com/pengten) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index e109ee4aa04..a4c8cb1b72c 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -66,6 +66,7 @@ import io.seata.server.session.SessionCondition; import io.seata.server.session.SessionHelper; import io.seata.server.session.SessionHolder; +import io.seata.server.store.StoreConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -77,6 +78,7 @@ import static io.seata.common.Constants.UNDOLOG_DELETE; import static io.seata.common.DefaultValues.DEFAULT_ASYNC_COMMITTING_RETRY_PERIOD; import static io.seata.common.DefaultValues.DEFAULT_COMMITING_RETRY_PERIOD; +import static io.seata.common.DefaultValues.DEFAULT_ENABLE_BRANCH_ASYNC_REMOVE; import static io.seata.common.DefaultValues.DEFAULT_MAX_COMMIT_RETRY_TIMEOUT; import static io.seata.common.DefaultValues.DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT; import static io.seata.common.DefaultValues.DEFAULT_ROLLBACKING_RETRY_PERIOD; @@ -138,7 +140,7 @@ public class DefaultCoordinator extends AbstractTCInboundHandler implements Tran /** * the pool size of branch asynchronous remove thread pool */ - private static final int BRANCH_ASYNC_POOL_SIZE = Runtime.getRuntime().availableProcessors(); + private static final int BRANCH_ASYNC_POOL_SIZE = Runtime.getRuntime().availableProcessors() * 2; private static final Duration MAX_COMMIT_RETRY_TIMEOUT = ConfigurationFactory.getInstance().getDuration( ConfigurationKeys.MAX_COMMIT_RETRY_TIMEOUT, DurationUtil.DEFAULT_DURATION, DEFAULT_MAX_COMMIT_RETRY_TIMEOUT); @@ -170,12 +172,7 @@ public class DefaultCoordinator extends AbstractTCInboundHandler implements Tran private final GlobalStatus[] retryCommittingStatuses = new GlobalStatus[] {GlobalStatus.Committing, GlobalStatus.CommitRetrying}; - private final ThreadPoolExecutor branchRemoveExecutor = new ThreadPoolExecutor(BRANCH_ASYNC_POOL_SIZE, BRANCH_ASYNC_POOL_SIZE, - Integer.MAX_VALUE, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>( - CONFIG.getInt(ConfigurationKeys.SESSION_BRANCH_ASYNC_QUEUE_SIZE, DEFAULT_BRANCH_ASYNC_QUEUE_SIZE) - ), new NamedThreadFactory("branchSessionRemove", BRANCH_ASYNC_POOL_SIZE), - new ThreadPoolExecutor.CallerRunsPolicy()); + private final ThreadPoolExecutor branchRemoveExecutor; private RemotingServer remotingServer; @@ -194,6 +191,19 @@ private DefaultCoordinator(RemotingServer remotingServer) { } this.remotingServer = remotingServer; this.core = new DefaultCore(remotingServer); + boolean enableBranchAsyncRemove = CONFIG.getBoolean( + ConfigurationKeys.ENABLE_BRANCH_ASYNC_REMOVE, DEFAULT_ENABLE_BRANCH_ASYNC_REMOVE); + // create branchRemoveExecutor + if (enableBranchAsyncRemove && StoreConfig.getSessionMode() != StoreConfig.SessionMode.FILE) { + branchRemoveExecutor = new ThreadPoolExecutor(BRANCH_ASYNC_POOL_SIZE, BRANCH_ASYNC_POOL_SIZE, + Integer.MAX_VALUE, TimeUnit.MILLISECONDS, + new ArrayBlockingQueue<>( + CONFIG.getInt(ConfigurationKeys.SESSION_BRANCH_ASYNC_QUEUE_SIZE, DEFAULT_BRANCH_ASYNC_QUEUE_SIZE) + ), new NamedThreadFactory("branchSessionRemove", BRANCH_ASYNC_POOL_SIZE), + new ThreadPoolExecutor.CallerRunsPolicy()); + } else { + branchRemoveExecutor = null; + } } public static DefaultCoordinator getInstance(RemotingServer remotingServer) { @@ -533,14 +543,18 @@ public void destroy() { asyncCommitting.shutdown(); timeoutCheck.shutdown(); undoLogDelete.shutdown(); - branchRemoveExecutor.shutdown(); + if (branchRemoveExecutor != null) { + branchRemoveExecutor.shutdown(); + } try { retryRollbacking.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); retryCommitting.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); asyncCommitting.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); timeoutCheck.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); undoLogDelete.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); - branchRemoveExecutor.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); + if (branchRemoveExecutor != null) { + branchRemoveExecutor.awaitTermination(TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS, TimeUnit.MILLISECONDS); + } } catch (InterruptedException ignore) { } @@ -582,6 +596,9 @@ static class BranchRemoveTask implements Runnable { */ public BranchRemoveTask(GlobalSession globalSession, BranchSession branchSession) { this.globalSession = globalSession; + if (branchSession == null) { + throw new IllegalArgumentException("BranchSession can`t be null!"); + } this.branchSession = branchSession; } diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 8f510e98217..1f4c4c61821 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -312,7 +312,7 @@ public void loadBranchs() { } @Override - public void removeBranch(BranchSession branchSession) throws TransactionException { + public void unlockBranch(BranchSession branchSession) throws TransactionException { // do not unlock if global status in (Committing, CommitRetrying, AsyncCommitting), // because it's already unlocked in 'DefaultCore.commit()' if (status != Committing && status != CommitRetrying && status != AsyncCommitting) { @@ -320,12 +320,22 @@ public void removeBranch(BranchSession branchSession) throws TransactionExceptio throw new TransactionException("Unlock branch lock failed, xid = " + this.xid + ", branchId = " + branchSession.getBranchId()); } } + } + + @Override + public void removeBranch(BranchSession branchSession) throws TransactionException { for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onRemoveBranch(this, branchSession); } remove(branchSession); } + @Override + public void removeAndUnlockBranch(BranchSession branchSession) throws TransactionException { + unlockBranch(branchSession); + removeBranch(branchSession); + } + /** * Gets branch. * diff --git a/server/src/main/java/io/seata/server/session/SessionHelper.java b/server/src/main/java/io/seata/server/session/SessionHelper.java index f1c85975a9d..e766893c732 100644 --- a/server/src/main/java/io/seata/server/session/SessionHelper.java +++ b/server/src/main/java/io/seata/server/session/SessionHelper.java @@ -294,7 +294,8 @@ public static Boolean forEach(Collection sessions, BranchSessionH */ public static void removeBranch(GlobalSession globalSession, BranchSession branchSession, boolean isAsync) throws TransactionException { - if (Objects.equals(Boolean.TRUE, ENABLE_BRANCH_ASYNC_REMOVE) && isAsync) { + globalSession.unlockBranch(branchSession); + if (isEnableBranchRemoveAsync() && isAsync) { COORDINATOR.doBranchRemoveAsync(globalSession, branchSession); } else { globalSession.removeBranch(branchSession); @@ -312,12 +313,26 @@ public static void removeAllBranch(GlobalSession globalSession, boolean isAsync) if (branchSessions == null || branchSessions.isEmpty()) { return; } - if (Objects.equals(Boolean.TRUE, ENABLE_BRANCH_ASYNC_REMOVE) && isAsync) { - COORDINATOR.doBranchRemoveAllAsync(globalSession); - } else { - for (BranchSession branchSession : branchSessions) { - globalSession.removeBranch(branchSession); + boolean isAsyncRemove = isEnableBranchRemoveAsync() && isAsync; + for (BranchSession branchSession : branchSessions) { + if (isAsyncRemove) { + globalSession.unlockBranch(branchSession); + } else { + globalSession.removeAndUnlockBranch(branchSession); } } + if (isAsyncRemove) { + COORDINATOR.doBranchRemoveAllAsync(globalSession); + } + } + + /** + * if true, enable delete the branch asynchronously + * + * @return the boolean + */ + private static boolean isEnableBranchRemoveAsync() { + return Objects.equals(Boolean.TRUE, DELAY_HANDLE_SESSION) + && Objects.equals(Boolean.TRUE, ENABLE_BRANCH_ASYNC_REMOVE); } } diff --git a/server/src/main/java/io/seata/server/session/SessionLifecycle.java b/server/src/main/java/io/seata/server/session/SessionLifecycle.java index 05cd87a3ab8..eb9bfcddfb9 100644 --- a/server/src/main/java/io/seata/server/session/SessionLifecycle.java +++ b/server/src/main/java/io/seata/server/session/SessionLifecycle.java @@ -58,6 +58,14 @@ public interface SessionLifecycle { */ void addBranch(BranchSession branchSession) throws TransactionException; + /** + * Release the lock of branch. + * + * @param branchSession the branch session + * @throws TransactionException the transaction exception + */ + void unlockBranch(BranchSession branchSession) throws TransactionException; + /** * Remove branch. * @@ -66,6 +74,14 @@ public interface SessionLifecycle { */ void removeBranch(BranchSession branchSession) throws TransactionException; + /** + * Remove branch and release the lock of branch. + * + * @param branchSession the branchSession + * @throws TransactionException the TransactionException + */ + void removeAndUnlockBranch(BranchSession branchSession) throws TransactionException; + /** * Is active boolean. * diff --git a/server/src/test/java/io/seata/server/session/GlobalSessionTest.java b/server/src/test/java/io/seata/server/session/GlobalSessionTest.java index 6a6b945c9a8..c4787ce69e6 100644 --- a/server/src/test/java/io/seata/server/session/GlobalSessionTest.java +++ b/server/src/test/java/io/seata/server/session/GlobalSessionTest.java @@ -144,7 +144,7 @@ public void addBranchTest(GlobalSession globalSession, BranchSession branchSessi @MethodSource("branchSessionProvider") public void removeBranchTest(GlobalSession globalSession, BranchSession branchSession) throws Exception { globalSession.addBranch(branchSession); - globalSession.removeBranch(branchSession); + globalSession.removeAndUnlockBranch(branchSession); } /** From fda8060779d00b1f985f156afb3d913a69357dcd Mon Sep 17 00:00:00 2001 From: HEIBAIJIE Date: Sun, 29 Jan 2023 15:03:03 +0800 Subject: [PATCH 008/182] bugfix: fix the incomplete dependency of distribution module (#5261) --- changes/en-us/develop.md | 1 + changes/zh-cn/develop.md | 1 + distribution/pom.xml | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 91fd519d47b..96e6e2c2007 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -11,6 +11,7 @@ Add changes here for all PR submitted to the develop branch. - [[#5023](https://github.com/seata/seata/pull/5203)] Fix `seata-core` dependency transitive conflict in `seata-dubbo` - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate - [[#5233](https://github.com/seata/seata/pull/5233)] fix the inconsistent configuration item names related to LoadBalance +- [[#5245](https://github.com/seata/seata/pull/5245)] fix the incomplete dependency of distribution module diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index dc962976881..0e9e410f924 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -11,6 +11,7 @@ - [[#5023](https://github.com/seata/seata/pull/5203)] 修复 `seata-core` 模块传递依赖冲突 - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 - [[#5233](https://github.com/seata/seata/pull/5233)] 修复LoadBalance相关配置不一致的问题 +- [[#5245](https://github.com/seata/seata/pull/5245)] 修复不完整的distribution模块依赖 ### optimize: diff --git a/distribution/pom.xml b/distribution/pom.xml index 891d610b041..f2f8f6e5b58 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -37,6 +37,11 @@ seata-server ${project.version} + + io.seata + apm-seata-skywalking-plugin + ${project.version} + seata From 63f685e204f75094e917b92fcf6da5ff06479d0c Mon Sep 17 00:00:00 2001 From: CrazyLionLi <31852897+JavaLionLi@users.noreply.github.com> Date: Sun, 29 Jan 2023 17:24:18 +0800 Subject: [PATCH 009/182] optimize: kryo 5.4.0 compatibility with jdk17 (#5243) --- changes/en-us/develop.md | 3 +++ changes/zh-cn/develop.md | 3 +++ .../core/serializer/SerializerClassRegistry.java | 2 -- dependencies/pom.xml | 2 +- .../serializer/kryo/KryoSerializerFactory.java | 6 +----- .../seata/serializer/kryo/KryoSerializerTest.java | 13 +++++++++++++ 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 96e6e2c2007..3766764a22d 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -19,6 +19,7 @@ Add changes here for all PR submitted to the develop branch. - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more - [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level - [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) +- [[#5243](https://github.com/seata/seata/pull/5243)] optimize kryo 5.4.0 optimize compatibility with jdk17 - [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app - [[#5177](https://github.com/seata/seata/pull/5177)] If `server.session.enable-branch-async-remove` is true, delete the branch asynchronously and unlock it synchronously. @@ -37,8 +38,10 @@ Thanks to these contributors for their code commits. Please report an unintended - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) +- [CrazyLionLi](https://github.com/JavaLionLi) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) + Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index 0e9e410f924..e4cf69bbdab 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -18,6 +18,7 @@ - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 - [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 - [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) +- [[#5243](https://github.com/seata/seata/pull/5243)] 升级 kryo 5.4.0 优化对jdk17的兼容性 - [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel - [[#5177](https://github.com/seata/seata/pull/5177)] 如果 `server.session.enable-branch-async-remove` 为真,异步删除分支,同步解锁。 @@ -35,8 +36,10 @@ - [albumenj](https://github.com/albumenj) - [PeppaO](https://github.com/PeppaO) - [yuruixin](https://github.com/yuruixin) +- [CrazyLionLi](https://github.com/JavaLionLi) - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) + 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/core/src/main/java/io/seata/core/serializer/SerializerClassRegistry.java b/core/src/main/java/io/seata/core/serializer/SerializerClassRegistry.java index 833b05e3c2f..6ffe71cd36a 100644 --- a/core/src/main/java/io/seata/core/serializer/SerializerClassRegistry.java +++ b/core/src/main/java/io/seata/core/serializer/SerializerClassRegistry.java @@ -15,7 +15,6 @@ */ package io.seata.core.serializer; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.BitSet; import java.util.Calendar; @@ -80,7 +79,6 @@ public class SerializerClassRegistry { registerClass(Date.class); registerClass(Calendar.class); registerClass(ConcurrentHashMap.class); - registerClass(SimpleDateFormat.class); registerClass(GregorianCalendar.class); registerClass(Vector.class); registerClass(BitSet.class); diff --git a/dependencies/pom.xml b/dependencies/pom.xml index bcb6dc37bca..e53f3475364 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -71,7 +71,7 @@ 3.16.3 1.27.1 - 5.3.0 + 5.4.0 0.45 4.0.63 2.57 diff --git a/serializer/seata-serializer-kryo/src/main/java/io/seata/serializer/kryo/KryoSerializerFactory.java b/serializer/seata-serializer-kryo/src/main/java/io/seata/serializer/kryo/KryoSerializerFactory.java index d23e46211f7..c9b3c93925f 100644 --- a/serializer/seata-serializer-kryo/src/main/java/io/seata/serializer/kryo/KryoSerializerFactory.java +++ b/serializer/seata-serializer-kryo/src/main/java/io/seata/serializer/kryo/KryoSerializerFactory.java @@ -21,15 +21,12 @@ import java.net.URI; import java.util.Arrays; import java.util.BitSet; -import java.util.GregorianCalendar; import java.util.UUID; import java.util.regex.Pattern; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.serializers.DefaultSerializers; import com.esotericsoftware.kryo.util.Pool; -import de.javakaffee.kryoserializers.ArraysAsListSerializer; import de.javakaffee.kryoserializers.BitSetSerializer; -import de.javakaffee.kryoserializers.GregorianCalendarSerializer; import de.javakaffee.kryoserializers.JdkProxySerializer; import de.javakaffee.kryoserializers.RegexSerializer; import de.javakaffee.kryoserializers.URISerializer; @@ -52,8 +49,7 @@ protected Kryo create() { kryo.setRegistrationRequired(false); // register serializer - kryo.register(Arrays.asList("").getClass(), new ArraysAsListSerializer()); - kryo.register(GregorianCalendar.class, new GregorianCalendarSerializer()); + kryo.register(Arrays.asList("").getClass()); kryo.register(InvocationHandler.class, new JdkProxySerializer()); kryo.register(BigDecimal.class, new DefaultSerializers.BigDecimalSerializer()); kryo.register(BigInteger.class, new DefaultSerializers.BigIntegerSerializer()); diff --git a/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java b/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java index bfc5f834978..b90ff04bb0a 100644 --- a/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java +++ b/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java @@ -15,6 +15,7 @@ */ package io.seata.serializer.kryo; +import com.esotericsoftware.kryo.Kryo; import io.seata.core.exception.TransactionExceptionCode; import io.seata.core.model.BranchStatus; import io.seata.core.model.BranchType; @@ -38,6 +39,18 @@ public static void before() { kryoCodec = new KryoSerializer(); } + /** + * 测试jdk版本对内置对象序列化的兼容性 + */ + @Test + public void testSerializerFactory() { + KryoSerializerFactory factory = KryoSerializerFactory.getInstance(); + KryoInnerSerializer kryoInnerSerializer = factory.get(); + Kryo kryo = kryoInnerSerializer.getKryo(); + assertThat(kryo).isNotNull(); + factory.returnKryo(kryoInnerSerializer); + } + @Test public void testBranchCommitRequest() { From 72347f255efc027bd9426a751b61a0cdbfead248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Sun, 29 Jan 2023 19:58:12 +0800 Subject: [PATCH 010/182] bugfix: fix `getConfig` throw `ClassCastException` when use JDK proxy (#5239) --- changes/en-us/develop.md | 5 +- changes/zh-cn/develop.md | 3 +- .../java/io/seata/common/DefaultValues.java | 11 +- .../common/loader/EnhancedServiceLoader.java | 32 +++- .../io/seata/common/util/ReflectionUtil.java | 40 +++++ .../io/seata/config/ConfigurationCache.java | 8 +- .../io/seata/config/ConfigurationFactory.java | 8 +- .../struct/cache/AbstractTableMetaCache.java | 13 +- .../seata/rm/datasource/util/JdbcUtils.java | 6 +- .../properties/ShutdownProperties.java | 6 +- .../config/ConfigZooKeeperProperties.java | 10 +- .../registry/RegistryZooKeeperProperties.java | 12 +- .../SpringBootConfigurationProvider.java | 166 +++++++++++------- .../autoconfigure/BasePropertiesTest.java | 4 +- .../config/test/ZooKeeperPropertiesTest.java | 4 +- .../properties/server/ServerProperties.java | 15 +- .../server/ServerRecoveryProperties.java | 24 +-- .../server/ServerUndoProperties.java | 6 +- .../server/store/StoreDBProperties.java | 6 +- .../coordinator/DefaultCoordinator.java | 14 +- .../coordinator/DefaultCoordinatorTest.java | 12 +- .../annotation/GlobalTransactionScanner.java | 10 +- .../SeataAutoDataSourceProxyCreator.java | 1 + .../sqlparser/druid/DefaultDruidLoader.java | 6 +- 24 files changed, 265 insertions(+), 157 deletions(-) diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md index 3766764a22d..af224973635 100644 --- a/changes/en-us/develop.md +++ b/changes/en-us/develop.md @@ -12,8 +12,7 @@ Add changes here for all PR submitted to the develop branch. - [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate - [[#5233](https://github.com/seata/seata/pull/5233)] fix the inconsistent configuration item names related to LoadBalance - [[#5245](https://github.com/seata/seata/pull/5245)] fix the incomplete dependency of distribution module - - +- [[#5239](https://github.com/seata/seata/pull/5239)] fix `getConfig` throw `ClassCastException` when use JDK proxy ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more @@ -26,7 +25,6 @@ Add changes here for all PR submitted to the develop branch. ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] fix some security vulnerabilities - ### test: - [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx @@ -42,6 +40,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) +- [wangliang181230](https://github.com/wangliang181230) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md index e4cf69bbdab..2d91a3337d7 100644 --- a/changes/zh-cn/develop.md +++ b/changes/zh-cn/develop.md @@ -12,7 +12,7 @@ - [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 - [[#5233](https://github.com/seata/seata/pull/5233)] 修复LoadBalance相关配置不一致的问题 - [[#5245](https://github.com/seata/seata/pull/5245)] 修复不完整的distribution模块依赖 - +- [[#5239](https://github.com/seata/seata/pull/5239)] 修复当使用JDK代理时,`getConfig` 方法获取部分配置时抛出 `ClassCastException` 异常的问题 ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 @@ -40,6 +40,7 @@ - [xingfudeshi](https://github.com/xingfudeshi) - [Bughue](https://github.com/Bughue) - [pengten](https://github.com/pengten) +- [wangliang181230](https://github.com/wangliang181230) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/common/src/main/java/io/seata/common/DefaultValues.java b/common/src/main/java/io/seata/common/DefaultValues.java index a2086b27587..bf12a6c3668 100644 --- a/common/src/main/java/io/seata/common/DefaultValues.java +++ b/common/src/main/java/io/seata/common/DefaultValues.java @@ -226,7 +226,7 @@ public interface DefaultValues { int DEFAULT_SERVICE_SESSION_RELOAD_READ_SIZE = 100; /** - *the constant DEFAULT_PROMETHEUS_PORT + * the constant DEFAULT_PROMETHEUS_PORT */ int DEFAULT_PROMETHEUS_PORT = 9898; @@ -248,12 +248,12 @@ public interface DefaultValues { /** * the const DEFAULT_MAX_COMMIT_RETRY_TIMEOUT */ - long DEFAULT_MAX_COMMIT_RETRY_TIMEOUT = 100; + long DEFAULT_MAX_COMMIT_RETRY_TIMEOUT = -1L; /** * the const DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT */ - long DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT = 100; + long DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT = -1L; /** * the const DEFAULT_ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE @@ -281,4 +281,9 @@ public interface DefaultValues { int DEFAULT_REDIS_MIN_IDLE = 10; int DEFAULT_QUERY_LIMIT = 1000; + + /** + * Default druid location in classpath + */ + String DRUID_LOCATION = "lib/sqlparser/druid.jar"; } diff --git a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java index 547b7a9cc1a..3b6942c8a40 100644 --- a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java +++ b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java @@ -397,14 +397,12 @@ private S loadExtension(ClassLoader loader, Class[] argTypes, loadAllExtensionClass(loader); ExtensionDefinition defaultExtensionDefinition = getDefaultExtensionDefinition(); return getExtensionInstance(defaultExtensionDefinition, loader, argTypes, args); + } catch (EnhancedServiceNotFoundException e) { + throw e; } catch (Throwable e) { - if (e instanceof EnhancedServiceNotFoundException) { - throw (EnhancedServiceNotFoundException)e; - } else { - throw new EnhancedServiceNotFoundException( - "not found service provider for : " + type.getName() + " caused by " + ExceptionUtils - .getFullStackTrace(e)); - } + throw new EnhancedServiceNotFoundException( + "not found service provider for : " + type.getName() + + " caused by " + ExceptionUtils.getFullStackTrace(e)); } } @@ -519,7 +517,10 @@ private void loadFile(String dir, ClassLoader loader, List 0) { + hasClasses = true; try { ExtensionDefinition extensionDefinition = getUnloadedExtensionDefinition(line, loader); if (extensionDefinition == null) { @@ -540,7 +542,7 @@ private void loadFile(String dir, ClassLoader loader, List getClassByName(String className) throws ClassNotFoundExce return Class.forName(className, true, Thread.currentThread().getContextClassLoader()); } + /** + * Get the wrapped class + * + * @param clazz the class + * @return the wrapped class + */ + public static Class getWrappedClass(Class clazz) { + if (clazz.isPrimitive()) { + if (clazz.equals(byte.class)) { + return Byte.class; + } + if (clazz.equals(boolean.class)) { + return Boolean.class; + } + if (clazz.equals(char.class)) { + return Character.class; + } + if (clazz.equals(short.class)) { + return Short.class; + } + if (clazz.equals(int.class)) { + return Integer.class; + } + if (clazz.equals(long.class)) { + return Long.class; + } + if (clazz.equals(float.class)) { + return Float.class; + } + if (clazz.equals(double.class)) { + return Double.class; + } + if (clazz.equals(void.class)) { + return Void.class; + } + } + + return clazz; + } + //endregion diff --git a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java index f887f7810e5..e837ce78fae 100644 --- a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java +++ b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java @@ -104,18 +104,18 @@ public Configuration proxy(Configuration originalConfiguration) throws Exception return new ByteBuddy().subclass(Configuration.class).method(ElementMatchers.any()) .intercept(InvocationHandlerAdapter.of((proxy, method, args) -> { String methodName = method.getName(); - if (methodName.startsWith(METHOD_PREFIX) && !method.getName().equalsIgnoreCase(METHOD_LATEST_CONFIG)) { + if (methodName.startsWith(METHOD_PREFIX) && !methodName.equalsIgnoreCase(METHOD_LATEST_CONFIG)) { String rawDataId = (String)args[0]; ObjectWrapper wrapper = CONFIG_CACHE.get(rawDataId); ObjectWrapper.ConfigType type = - ObjectWrapper.getTypeByName(method.getName().substring(METHOD_PREFIX.length())); + ObjectWrapper.getTypeByName(methodName.substring(METHOD_PREFIX.length())); Object defaultValue = null; if (args.length > 1 - && method.getParameterTypes()[1].getSimpleName().equalsIgnoreCase(type.name())) { + && method.getParameterTypes()[1].getSimpleName().equalsIgnoreCase(type.name())) { defaultValue = args[1]; } if (null == wrapper - || (null != defaultValue && !Objects.equals(defaultValue, wrapper.lastDefaultValue))) { + || (null != defaultValue && !Objects.equals(defaultValue, wrapper.lastDefaultValue))) { Object result = method.invoke(originalConfiguration, args); // The wrapper.data only exists in the cache when it is not null. if (result != null) { diff --git a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java index f71f14198c3..55eb54d3fbc 100644 --- a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java +++ b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java @@ -69,10 +69,12 @@ private static void load() { LOGGER.info("load Configuration from :{}", extConfiguration == null ? configuration.getClass().getSimpleName() : "Spring Configuration"); } - } catch (EnhancedServiceNotFoundException ignore) { - + } catch (EnhancedServiceNotFoundException e) { + if (LOGGER.isDebugEnabled()) { + LOGGER.warn("failed to load extConfiguration: {}", e.getMessage(), e); + } } catch (Exception e) { - LOGGER.error("failed to load extConfiguration:{}", e.getMessage(), e); + LOGGER.error("failed to load extConfiguration: {}", e.getMessage(), e); } CURRENT_FILE_INSTANCE = extConfiguration == null ? configuration : extConfiguration; } diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/sql/struct/cache/AbstractTableMetaCache.java b/rm-datasource/src/main/java/io/seata/rm/datasource/sql/struct/cache/AbstractTableMetaCache.java index dccd807f76f..2c1470447a7 100755 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/sql/struct/cache/AbstractTableMetaCache.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/sql/struct/cache/AbstractTableMetaCache.java @@ -44,8 +44,17 @@ public abstract class AbstractTableMetaCache implements TableMetaCache { private static final long EXPIRE_TIME = 900 * 1000; - private static final Cache TABLE_META_CACHE = Caffeine.newBuilder().maximumSize(CACHE_SIZE) - .expireAfterWrite(EXPIRE_TIME, TimeUnit.MILLISECONDS).softValues().build(); + private static final Cache TABLE_META_CACHE; + + static { + try { + TABLE_META_CACHE = Caffeine.newBuilder().maximumSize(CACHE_SIZE) + .expireAfterWrite(EXPIRE_TIME, TimeUnit.MILLISECONDS).softValues().build(); + } catch (Throwable t) { + LOGGER.error("Build the `TABLE_META_CACHE` failed:", t); + throw t; + } + } @Override diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/util/JdbcUtils.java b/rm-datasource/src/main/java/io/seata/rm/datasource/util/JdbcUtils.java index b462bc131dd..2f2e119dbeb 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/util/JdbcUtils.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/util/JdbcUtils.java @@ -104,7 +104,7 @@ public static String buildResourceId(String jdbcUrl) { } public static Driver loadDriver(String driverClassName) throws SQLException { - Class clazz = null; + Class clazz = null; try { ClassLoader contextLoader = Thread.currentThread().getContextClassLoader(); if (contextLoader != null) { @@ -124,9 +124,7 @@ public static Driver loadDriver(String driverClassName) throws SQLException { try { return (Driver)clazz.newInstance(); - } catch (IllegalAccessException e) { - throw new SQLException(e.getMessage(), e); - } catch (InstantiationException e) { + } catch (IllegalAccessException | InstantiationException e) { throw new SQLException(e.getMessage(), e); } } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/ShutdownProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/ShutdownProperties.java index 9010ede0942..8dec76f747a 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/ShutdownProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/ShutdownProperties.java @@ -30,13 +30,13 @@ public class ShutdownProperties { /** * when destroy server, wait seconds */ - private long wait = DEFAULT_SHUTDOWN_TIMEOUT_SEC; + private int wait = DEFAULT_SHUTDOWN_TIMEOUT_SEC; - public long getWait() { + public int getWait() { return wait; } - public ShutdownProperties setWait(long wait) { + public ShutdownProperties setWait(int wait) { this.wait = wait; return this; } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java index 897f97eb5ac..e4c1556b588 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/config/ConfigZooKeeperProperties.java @@ -27,8 +27,8 @@ @ConfigurationProperties(prefix = CONFIG_ZK_PREFIX) public class ConfigZooKeeperProperties { private String serverAddr; - private long sessionTimeout = 6000L; - private long connectTimeout = 2000L; + private int sessionTimeout = 6000; + private int connectTimeout = 2000; private String username; private String password; private String nodePath = "/seata/seata.properties"; @@ -46,16 +46,16 @@ public long getSessionTimeout() { return sessionTimeout; } - public ConfigZooKeeperProperties setSessionTimeout(long sessionTimeout) { + public ConfigZooKeeperProperties setSessionTimeout(int sessionTimeout) { this.sessionTimeout = sessionTimeout; return this; } - public long getConnectTimeout() { + public int getConnectTimeout() { return connectTimeout; } - public ConfigZooKeeperProperties setConnectTimeout(long connectTimeout) { + public ConfigZooKeeperProperties setConnectTimeout(int connectTimeout) { this.connectTimeout = connectTimeout; return this; } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java index dcb0c407a86..90c494a9f29 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/properties/registry/RegistryZooKeeperProperties.java @@ -28,8 +28,8 @@ public class RegistryZooKeeperProperties { private String cluster = "default"; private String serverAddr = "127.0.0.1:2181"; - private long sessionTimeout = 6000L; - private long connectTimeout = 2000L; + private int sessionTimeout = 6000; + private int connectTimeout = 2000; private String username; private String password; @@ -51,20 +51,20 @@ public RegistryZooKeeperProperties setServerAddr(String serverAddr) { return this; } - public long getSessionTimeout() { + public int getSessionTimeout() { return sessionTimeout; } - public RegistryZooKeeperProperties setSessionTimeout(long sessionTimeout) { + public RegistryZooKeeperProperties setSessionTimeout(int sessionTimeout) { this.sessionTimeout = sessionTimeout; return this; } - public long getConnectTimeout() { + public int getConnectTimeout() { return connectTimeout; } - public RegistryZooKeeperProperties setConnectTimeout(long connectTimeout) { + public RegistryZooKeeperProperties setConnectTimeout(int connectTimeout) { this.connectTimeout = connectTimeout; return this; } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java index c552a6f0792..5a3c4cdd07c 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java @@ -16,22 +16,26 @@ package io.seata.spring.boot.autoconfigure.provider; import java.lang.reflect.Field; -import java.util.HashMap; +import java.time.Duration; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; + import io.seata.common.exception.ShouldNeverHappenException; import io.seata.common.holder.ObjectHolder; +import io.seata.common.util.CollectionUtils; +import io.seata.common.util.ReflectionUtil; import io.seata.config.Configuration; import io.seata.config.ExtConfigurationProvider; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.lang.Nullable; import static io.seata.common.Constants.OBJECT_KEY_SPRING_CONFIGURABLE_ENVIRONMENT; import static io.seata.common.util.StringFormatUtils.DOT; @@ -52,7 +56,7 @@ public class SpringBootConfigurationProvider implements ExtConfigurationProvider private static final String INTERCEPT_METHOD_PREFIX = "get"; - private static final Map PROPERTY_BEAN_INSTANCE_MAP = new HashMap<>(64); + private static final Map PROPERTY_BEAN_INSTANCE_MAP = new ConcurrentHashMap<>(64); @Override public Configuration provide(Configuration originalConfiguration) { @@ -61,20 +65,49 @@ public Configuration provide(Configuration originalConfiguration) { if (method.getName().startsWith(INTERCEPT_METHOD_PREFIX) && args.length > 0) { Object result; String rawDataId = (String)args[0]; + Class dataType = ReflectionUtil.getWrappedClass(method.getReturnType()); + + // 1. Get config value from the system property result = originalConfiguration.getConfigFromSys(rawDataId); - if (null == result) { - if (args.length == 1) { - result = get(convertDataId(rawDataId)); - } else { - result = get(convertDataId(rawDataId), args[1]); + + if (result == null) { + String dataId = convertDataId(rawDataId); + + // 2. Get config value from the springboot environment + result = getConfigFromEnvironment(dataId, dataType); + if (result != null) { + return result; + } + + // 3. Get config defaultValue from the arguments + if (args.length > 1) { + result = args[1]; + + if (result != null) { + // See Configuration#getConfig(String dataId, long timeoutMills) + if (dataType.isAssignableFrom(result.getClass())) { + return result; + } else { + result = null; + } + } + } + + // 4. Get config defaultValue from the property object + try { + result = getDefaultValueFromPropertyObject(dataId); + } catch (Throwable t) { + LOGGER.error("Get config '{}' default value from the property object failed:", dataId, t); } } + if (result != null) { - // If the return type is String,need to convert the object to string - if (method.getReturnType().equals(String.class)) { - return String.valueOf(result); + if (dataType.isAssignableFrom(result.getClass())) { + return result; } - return result; + + // Convert type + return this.convertType(result, dataType); } } @@ -82,62 +115,53 @@ public Configuration provide(Configuration originalConfiguration) { }); } - private Object get(String dataId, Object defaultValue) throws IllegalAccessException, InstantiationException { - Object result = get(dataId); - if (result == null) { - return defaultValue; - } - return result; - } - - private Object get(String dataId) throws IllegalAccessException { + private Object getDefaultValueFromPropertyObject(String dataId) throws IllegalAccessException { String propertyPrefix = getPropertyPrefix(dataId); String propertySuffix = getPropertySuffix(dataId); - Class propertyClass = PROPERTY_BEAN_MAP.get(propertyPrefix); - Object valueObject = null; - if (propertyClass != null) { - try { - valueObject = getFieldValue( - Objects.requireNonNull(PROPERTY_BEAN_INSTANCE_MAP.computeIfAbsent(propertyPrefix, k -> { - try { - return propertyClass.newInstance(); - } catch (InstantiationException | IllegalAccessException e) { - LOGGER.error("PropertyClass for prefix: [" + propertyPrefix - + "] should not be null. error :" + e.getMessage(), e); - } - return null; - })), propertySuffix, dataId); - } catch (NoSuchBeanDefinitionException ignore) { - } - } else { + // Get the property class + final Class propertyClass = PROPERTY_BEAN_MAP.get(propertyPrefix); + if (propertyClass == null) { throw new ShouldNeverHappenException("PropertyClass for prefix: [" + propertyPrefix + "] should not be null."); } - return valueObject; + // Instantiate the property object + Object propertyObj = CollectionUtils.computeIfAbsent(PROPERTY_BEAN_INSTANCE_MAP, propertyPrefix, k -> { + try { + return propertyClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + LOGGER.warn("PropertyClass for prefix: [" + propertyPrefix + "] should not be null. error :" + e.getMessage(), e); + } + return null; + }); + Objects.requireNonNull(propertyObj, () -> "Instantiate the property object fail: " + propertyClass.getName()); + + // Get defaultValue from the property object + return getDefaultValueFromPropertyObject(propertyObj, propertySuffix); } /** - * get field value + * Get defaultValue from the property object * - * @param object - * @param fieldName - * @param dataId - * @return java.lang.Object + * @param propertyObj the property object + * @param fieldName the field name + * @return defaultValue * @author xingfudeshi@gmail.com */ - private Object getFieldValue(Object object, String fieldName, String dataId) throws IllegalAccessException { - Optional fieldOptional = Stream.of(object.getClass().getDeclaredFields()) + @Nullable + private Object getDefaultValueFromPropertyObject(Object propertyObj, String fieldName) throws IllegalAccessException { + Optional fieldOptional = Stream.of(propertyObj.getClass().getDeclaredFields()) .filter(f -> f.getName().equalsIgnoreCase(fieldName)).findAny(); + + // Get defaultValue from the field if (fieldOptional.isPresent()) { Field field = fieldOptional.get(); - if (Objects.equals(field.getType(), Map.class)) { - return getConfig(dataId, null, String.class); + if (!Map.class.isAssignableFrom(field.getType())) { + field.setAccessible(true); + return field.get(propertyObj); } - field.setAccessible(true); - Object defaultValue = field.get(object); - return getConfig(dataId, defaultValue, field.getType()); } + return null; } @@ -191,19 +215,41 @@ private String getPropertySuffix(String dataId) { /** * get spring config - * @param dataId data id - * @param defaultValue default value - * @param type type + * + * @param dataId data id + * @param dataType data type * @return object */ - private Object getConfig(String dataId, Object defaultValue, Class type) { - ConfigurableEnvironment environment = - (ConfigurableEnvironment)ObjectHolder.INSTANCE.getObject(OBJECT_KEY_SPRING_CONFIGURABLE_ENVIRONMENT); - Object value = environment.getProperty(dataId, type); + @Nullable + private Object getConfigFromEnvironment(String dataId, Class dataType) { + ConfigurableEnvironment environment = (ConfigurableEnvironment)ObjectHolder.INSTANCE.getObject(OBJECT_KEY_SPRING_CONFIGURABLE_ENVIRONMENT); + Object value = environment.getProperty(dataId, dataType); if (value == null) { - value = environment.getProperty(io.seata.common.util.StringUtils.hump2Line(dataId), type); + value = environment.getProperty(io.seata.common.util.StringUtils.hump2Line(dataId), dataType); + } + return value; + } + + private Object convertType(Object configValue, Class dataType) { + if (String.class.equals(dataType)) { + return String.valueOf(configValue); + } + if (Long.class.equals(dataType)) { + return Long.parseLong(String.valueOf(configValue)); + } + if (Integer.class.equals(dataType)) { + return Integer.parseInt(String.valueOf(configValue)); + } + if (Short.class.equals(dataType)) { + return Short.parseShort(String.valueOf(configValue)); + } + if (Boolean.class.equals(dataType)) { + return Boolean.parseBoolean(String.valueOf(configValue)); + } + if (Duration.class.equals(dataType)) { + return Duration.parse(String.valueOf(configValue)); } - return value != null ? value : defaultValue; + return configValue; } } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/BasePropertiesTest.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/BasePropertiesTest.java index 7501da2ef67..e450017a2bb 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/BasePropertiesTest.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/BasePropertiesTest.java @@ -43,8 +43,8 @@ public class BasePropertiesTest { protected static final String STR_TEST_EEE = "eee"; protected static final String STR_TEST_FFF = "fff"; - protected static final long LONG_TEST_ONE = 1L; - protected static final long LONG_TEST_TWO = 2L; + protected static final int LONG_TEST_ONE = 1; + protected static final int LONG_TEST_TWO = 2; @BeforeEach public void setUp() throws IOException { diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/properties/config/test/ZooKeeperPropertiesTest.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/properties/config/test/ZooKeeperPropertiesTest.java index 4a95734e907..a86afbae9ca 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/properties/config/test/ZooKeeperPropertiesTest.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/test/java/io/seata/spring/boot/autoconfigure/properties/config/test/ZooKeeperPropertiesTest.java @@ -49,8 +49,8 @@ public void testConfigZooKeeperProperties() { assertEquals(STR_TEST_BBB, currentConfiguration.getConfig("config.zk.serverAddr")); assertEquals(STR_TEST_CCC, currentConfiguration.getConfig("config.zk.username")); assertEquals(STR_TEST_DDD, currentConfiguration.getConfig("config.zk.password")); - assertEquals(LONG_TEST_ONE, currentConfiguration.getLong("config.zk.connectTimeout")); - assertEquals(LONG_TEST_TWO, currentConfiguration.getLong("config.zk.sessionTimeout")); + assertEquals(LONG_TEST_ONE, currentConfiguration.getInt("config.zk.connectTimeout")); + assertEquals(LONG_TEST_TWO, currentConfiguration.getInt("config.zk.sessionTimeout")); } } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerProperties.java index 8bb69d771a9..7aec3ff5274 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerProperties.java @@ -15,9 +15,6 @@ */ package io.seata.spring.boot.autoconfigure.properties.server; -import java.time.Duration; - -import io.seata.common.util.DurationUtil; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -29,8 +26,8 @@ @Component @ConfigurationProperties(prefix = SERVER_PREFIX) public class ServerProperties { - private Duration maxCommitRetryTimeout = DurationUtil.DEFAULT_DURATION; - private Duration maxRollbackRetryTimeout = DurationUtil.DEFAULT_DURATION; + private long maxCommitRetryTimeout = -1L; + private long maxRollbackRetryTimeout = -1L; private Boolean rollbackRetryTimeoutUnlockEnable = false; private Boolean enableCheckAuth = true; private Boolean enableParallelRequestHandle = false; @@ -38,20 +35,20 @@ public class ServerProperties { private Integer servicePort; private Integer xaerNotaRetryTimeout = 60000; - public Duration getMaxCommitRetryTimeout() { + public long getMaxCommitRetryTimeout() { return maxCommitRetryTimeout; } - public ServerProperties setMaxCommitRetryTimeout(Duration maxCommitRetryTimeout) { + public ServerProperties setMaxCommitRetryTimeout(long maxCommitRetryTimeout) { this.maxCommitRetryTimeout = maxCommitRetryTimeout; return this; } - public Duration getMaxRollbackRetryTimeout() { + public long getMaxRollbackRetryTimeout() { return maxRollbackRetryTimeout; } - public ServerProperties setMaxRollbackRetryTimeout(Duration maxRollbackRetryTimeout) { + public ServerProperties setMaxRollbackRetryTimeout(long maxRollbackRetryTimeout) { this.maxRollbackRetryTimeout = maxRollbackRetryTimeout; return this; } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerRecoveryProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerRecoveryProperties.java index bd2eb2b0021..9935f1402e0 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerRecoveryProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerRecoveryProperties.java @@ -31,43 +31,43 @@ @ConfigurationProperties(prefix = SERVER_RECOVERY_PREFIX) public class ServerRecoveryProperties { - private int committingRetryPeriod = DEFAULT_COMMITING_RETRY_PERIOD; - private int asyncCommittingRetryPeriod = DEFAULT_ASYNC_COMMITTING_RETRY_PERIOD; - private int rollbackingRetryPeriod = DEFAULT_ROLLBACKING_RETRY_PERIOD; - private int timeoutRetryPeriod = DEFAULT_TIMEOUT_RETRY_PERIOD; + private long committingRetryPeriod = DEFAULT_COMMITING_RETRY_PERIOD; + private long asyncCommittingRetryPeriod = DEFAULT_ASYNC_COMMITTING_RETRY_PERIOD; + private long rollbackingRetryPeriod = DEFAULT_ROLLBACKING_RETRY_PERIOD; + private long timeoutRetryPeriod = DEFAULT_TIMEOUT_RETRY_PERIOD; - public int getCommittingRetryPeriod() { + public long getCommittingRetryPeriod() { return committingRetryPeriod; } - public ServerRecoveryProperties setCommittingRetryPeriod(int committingRetryPeriod) { + public ServerRecoveryProperties setCommittingRetryPeriod(long committingRetryPeriod) { this.committingRetryPeriod = committingRetryPeriod; return this; } - public int getAsyncCommittingRetryPeriod() { + public long getAsyncCommittingRetryPeriod() { return asyncCommittingRetryPeriod; } - public ServerRecoveryProperties setAsyncCommittingRetryPeriod(int asyncCommittingRetryPeriod) { + public ServerRecoveryProperties setAsyncCommittingRetryPeriod(long asyncCommittingRetryPeriod) { this.asyncCommittingRetryPeriod = asyncCommittingRetryPeriod; return this; } - public int getRollbackingRetryPeriod() { + public long getRollbackingRetryPeriod() { return rollbackingRetryPeriod; } - public ServerRecoveryProperties setRollbackingRetryPeriod(int rollbackingRetryPeriod) { + public ServerRecoveryProperties setRollbackingRetryPeriod(long rollbackingRetryPeriod) { this.rollbackingRetryPeriod = rollbackingRetryPeriod; return this; } - public Integer getTimeoutRetryPeriod() { + public long getTimeoutRetryPeriod() { return timeoutRetryPeriod; } - public ServerRecoveryProperties setTimeoutRetryPeriod(int timeoutRetryPeriod) { + public ServerRecoveryProperties setTimeoutRetryPeriod(long timeoutRetryPeriod) { this.timeoutRetryPeriod = timeoutRetryPeriod; return this; } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerUndoProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerUndoProperties.java index f1fc876ab3a..895b60d9216 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerUndoProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/ServerUndoProperties.java @@ -28,14 +28,14 @@ @Component @ConfigurationProperties(prefix = SERVER_UNDO_PREFIX) public class ServerUndoProperties { - private int logSaveDays = DEFAULT_SAVE_DAYS; + private short logSaveDays = DEFAULT_SAVE_DAYS; private long logDeletePeriod = DEFAULT_UNDO_LOG_DELETE_PERIOD; - public int getLogSaveDays() { + public short getLogSaveDays() { return logSaveDays; } - public ServerUndoProperties setLogSaveDays(int logSaveDays) { + public ServerUndoProperties setLogSaveDays(short logSaveDays) { this.logSaveDays = logSaveDays; return this; } diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java index 0bd3c8db313..68771a0764a 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreDBProperties.java @@ -42,7 +42,7 @@ public class StoreDBProperties { private String lockTable = "lock_table"; private String distributedLockTable = "distributed_lock"; private Integer queryLimit = DEFAULT_QUERY_LIMIT; - private Integer maxWait = 5000; + private Long maxWait = 5000L; public String getDatasource() { return datasource; @@ -160,11 +160,11 @@ public StoreDBProperties setQueryLimit(Integer queryLimit) { return this; } - public Integer getMaxWait() { + public Long getMaxWait() { return maxWait; } - public StoreDBProperties setMaxWait(Integer maxWait) { + public StoreDBProperties setMaxWait(Long maxWait) { this.maxWait = maxWait; return this; } diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index a4c8cb1b72c..75c09ac2d2a 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -15,7 +15,6 @@ */ package io.seata.server.coordinator; -import java.time.Duration; import java.util.Collection; import java.util.Map; import java.util.concurrent.ArrayBlockingQueue; @@ -26,7 +25,6 @@ import io.netty.channel.Channel; import io.seata.common.thread.NamedThreadFactory; import io.seata.common.util.CollectionUtils; -import io.seata.common.util.DurationUtil; import io.seata.config.ConfigurationFactory; import io.seata.core.constants.ConfigurationKeys; import io.seata.core.context.RootContext; @@ -142,11 +140,11 @@ public class DefaultCoordinator extends AbstractTCInboundHandler implements Tran */ private static final int BRANCH_ASYNC_POOL_SIZE = Runtime.getRuntime().availableProcessors() * 2; - private static final Duration MAX_COMMIT_RETRY_TIMEOUT = ConfigurationFactory.getInstance().getDuration( - ConfigurationKeys.MAX_COMMIT_RETRY_TIMEOUT, DurationUtil.DEFAULT_DURATION, DEFAULT_MAX_COMMIT_RETRY_TIMEOUT); + private static final long MAX_COMMIT_RETRY_TIMEOUT = ConfigurationFactory.getInstance().getLong( + ConfigurationKeys.MAX_COMMIT_RETRY_TIMEOUT, DEFAULT_MAX_COMMIT_RETRY_TIMEOUT); - private static final Duration MAX_ROLLBACK_RETRY_TIMEOUT = ConfigurationFactory.getInstance().getDuration( - ConfigurationKeys.MAX_ROLLBACK_RETRY_TIMEOUT, DurationUtil.DEFAULT_DURATION, DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT); + private static final long MAX_ROLLBACK_RETRY_TIMEOUT = ConfigurationFactory.getInstance().getLong( + ConfigurationKeys.MAX_ROLLBACK_RETRY_TIMEOUT, DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT); private static final boolean ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE = ConfigurationFactory.getInstance().getBoolean( ConfigurationKeys.ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE, DEFAULT_ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE); @@ -381,7 +379,7 @@ protected void handleRetryRollbacking() { // The function of this 'return' is 'continue'. return; } - if (isRetryTimeout(now, MAX_ROLLBACK_RETRY_TIMEOUT.toMillis(), rollbackingSession.getBeginTime())) { + if (isRetryTimeout(now, MAX_ROLLBACK_RETRY_TIMEOUT, rollbackingSession.getBeginTime())) { if (ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE) { rollbackingSession.clean(); } @@ -422,7 +420,7 @@ protected void handleRetryCommitting() { // The function of this 'return' is 'continue'. return; } - if (isRetryTimeout(now, MAX_COMMIT_RETRY_TIMEOUT.toMillis(), committingSession.getBeginTime())) { + if (isRetryTimeout(now, MAX_COMMIT_RETRY_TIMEOUT, committingSession.getBeginTime())) { // Prevent thread safety issues SessionHolder.getRetryCommittingSessionManager().removeGlobalSession(committingSession); LOGGER.error("Global transaction commit retry timeout and has removed [{}]", committingSession.getXid()); diff --git a/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java b/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java index c83eefdc30c..594d92c0188 100644 --- a/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java +++ b/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java @@ -16,7 +16,6 @@ package io.seata.server.coordinator; import java.io.IOException; -import java.time.Duration; import java.util.Collection; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -24,9 +23,9 @@ import java.util.stream.Stream; import io.netty.channel.Channel; +import io.seata.common.DefaultValues; import io.seata.common.XID; import io.seata.common.loader.EnhancedServiceLoader; -import io.seata.common.util.DurationUtil; import io.seata.common.util.NetUtil; import io.seata.common.util.ReflectionUtil; import io.seata.config.Configuration; @@ -61,6 +60,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; + /** * The type DefaultCoordinator test. * @@ -169,7 +169,7 @@ public void test_handleRetryRollbackingTimeOut() throws TransactionException, In Assertions.assertNotNull(globalSession.getBranchSessions()); Assertions.assertNotNull(branchId); - ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "MAX_ROLLBACK_RETRY_TIMEOUT", Duration.ofMillis(10)); + ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "MAX_ROLLBACK_RETRY_TIMEOUT", 10L); ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE", false); TimeUnit.MILLISECONDS.sleep(100); globalSession.queueToRetryRollback(); @@ -180,7 +180,7 @@ public void test_handleRetryRollbackingTimeOut() throws TransactionException, In } finally { globalSession.closeAndClean(); ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "MAX_ROLLBACK_RETRY_TIMEOUT", - ConfigurationFactory.getInstance().getDuration(ConfigurationKeys.MAX_ROLLBACK_RETRY_TIMEOUT, DurationUtil.DEFAULT_DURATION, 100)); + ConfigurationFactory.getInstance().getLong(ConfigurationKeys.MAX_ROLLBACK_RETRY_TIMEOUT, DefaultValues.DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT)); } } @@ -196,7 +196,7 @@ public void test_handleRetryRollbackingTimeOut_unlock() throws TransactionExcept Assertions.assertNotNull(globalSession.getBranchSessions()); Assertions.assertNotNull(branchId); - ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "MAX_ROLLBACK_RETRY_TIMEOUT", Duration.ofMillis(10)); + ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "MAX_ROLLBACK_RETRY_TIMEOUT", 10L); ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE", true); TimeUnit.MILLISECONDS.sleep(100); @@ -209,7 +209,7 @@ public void test_handleRetryRollbackingTimeOut_unlock() throws TransactionExcept } finally { globalSession.closeAndClean(); ReflectionUtil.modifyStaticFinalField(defaultCoordinator.getClass(), "MAX_ROLLBACK_RETRY_TIMEOUT", - ConfigurationFactory.getInstance().getDuration(ConfigurationKeys.MAX_ROLLBACK_RETRY_TIMEOUT, DurationUtil.DEFAULT_DURATION, 100)); + ConfigurationFactory.getInstance().getLong(ConfigurationKeys.MAX_ROLLBACK_RETRY_TIMEOUT, DefaultValues.DEFAULT_MAX_ROLLBACK_RETRY_TIMEOUT)); } } diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java index b8f74400ef8..ef455ea6e54 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java +++ b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java @@ -288,8 +288,8 @@ protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) Class serviceInterface = SpringProxyUtils.findTargetClass(bean); Class[] interfacesIfJdk = SpringProxyUtils.findInterfaces(bean); - if (!existsAnnotation(new Class[]{serviceInterface}) - && !existsAnnotation(interfacesIfJdk)) { + if (!existsAnnotation(serviceInterface) + && !existsAnnotation(interfacesIfJdk)) { return bean; } @@ -302,7 +302,7 @@ protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) interceptor = globalTransactionalInterceptor; } - LOGGER.info("Bean[{}] with name [{}] would use interceptor [{}]", bean.getClass().getName(), beanName, interceptor.getClass().getName()); + LOGGER.info("Bean [{}] with name [{}] would use interceptor [{}]", bean.getClass().getName(), beanName, interceptor.getClass().getName()); if (!AopUtils.isAopProxy(bean)) { bean = super.wrapIfNecessary(bean, beanName, cacheKey); } else { @@ -325,7 +325,7 @@ protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) private boolean doCheckers(Object bean, String beanName) { if (PROXYED_SET.contains(beanName) || EXCLUDE_BEAN_NAME_SET.contains(beanName) - || FactoryBean.class.isAssignableFrom(bean.getClass())) { + || FactoryBean.class.isAssignableFrom(bean.getClass())) { return false; } @@ -461,7 +461,7 @@ private boolean isTransactionInterceptor(Advisor advisor) { //endregion the methods about findAddSeataAdvisorPosition END - private boolean existsAnnotation(Class[] classes) { + private boolean existsAnnotation(Class... classes) { if (CollectionUtils.isNotEmpty(classes)) { for (Class clazz : classes) { if (clazz == null) { diff --git a/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java b/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java index a3b50c84119..b5fdb69d4d3 100644 --- a/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java +++ b/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java @@ -88,6 +88,7 @@ protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) DataSource origin = (DataSource) bean; SeataDataSourceProxy proxy = buildProxy(origin, dataSourceProxyMode); DataSourceProxyHolder.put(origin, proxy); + LOGGER.info("Auto proxy data source '{}' by '{}' mode.", beanName, dataSourceProxyMode); return enhancer; } diff --git a/sqlparser/seata-sqlparser-druid/src/main/java/io/seata/sqlparser/druid/DefaultDruidLoader.java b/sqlparser/seata-sqlparser-druid/src/main/java/io/seata/sqlparser/druid/DefaultDruidLoader.java index a03904bf358..c19ca7d34af 100644 --- a/sqlparser/seata-sqlparser-druid/src/main/java/io/seata/sqlparser/druid/DefaultDruidLoader.java +++ b/sqlparser/seata-sqlparser-druid/src/main/java/io/seata/sqlparser/druid/DefaultDruidLoader.java @@ -22,14 +22,12 @@ import java.net.URL; import java.security.CodeSource; +import static io.seata.common.DefaultValues.DRUID_LOCATION; + /** * @author ggndnn */ class DefaultDruidLoader implements DruidLoader { - /** - * Default druid location in classpath - */ - private final static String DRUID_LOCATION = "lib/sqlparser/druid.jar"; private final static DefaultDruidLoader DRUID_LOADER = new DefaultDruidLoader(DRUID_LOCATION); From 4527a41a756479e823e52048145f8759d8e6f3c2 Mon Sep 17 00:00:00 2001 From: jimin Date: Sun, 29 Jan 2023 21:02:47 +0800 Subject: [PATCH 011/182] optimize: optimize workflow for 2.x (#5268) --- .github/workflows/build.yml | 6 ++-- .github/workflows/codeql-analysis.yml | 4 +-- .github/workflows/license-checker.yaml | 6 ++-- .github/workflows/publishes.yml | 2 +- .licenserc.yaml | 1 + build/pom.xml | 2 +- .../java/io/seata/core/protocol/Version.java | 2 +- .../serializer/kryo/KryoSerializerTest.java | 34 +++++++++++++++++++ 8 files changed, 45 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 53a38906e9a..9c8db4f4d44 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,14 +2,14 @@ name: "build" on: push: - branches: [ develop, master ] + branches: [ 2.x, develop, master ] pull_request: - branches: [ develop, master ] + branches: [ 2.x, develop, master ] jobs: build_arm64-binary: runs-on: ubuntu-latest - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' }} + if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/2.x') }} strategy: fail-fast: false steps: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d4dee337b2f..f7f2c925fac 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -12,11 +12,9 @@ name: "CodeQL" on: - push: - branches: [ develop, master ] pull_request: # The branches below must be a subset of the branches above - branches: [ develop ] + branches: [ 2.x, develop ] schedule: - cron: '36 19 * * 6' diff --git a/.github/workflows/license-checker.yaml b/.github/workflows/license-checker.yaml index 5b09707ccac..d3ac84bb88c 100644 --- a/.github/workflows/license-checker.yaml +++ b/.github/workflows/license-checker.yaml @@ -2,7 +2,7 @@ name: License checker on: pull_request: - branches: [ develop, master ] + branches: [ 2.x, develop, master ] jobs: check-license: @@ -13,14 +13,14 @@ jobs: uses: actions/checkout@v2.4.0 # step 2 - name: Check License Header - uses: apache/skywalking-eyes/header@25edfc2fd8d52fb266653fb5f6c42da633d85c07 + uses: apache/skywalking-eyes/header@8fc52baabc14c86294d96034bcc194cfa7f76b05 with: log: info config: .licenserc.yaml mode: check # step 3 - name: Check Dependencies' License - uses: apache/skywalking-eyes/dependency@25edfc2fd8d52fb266653fb5f6c42da633d85c07 + uses: apache/skywalking-eyes/dependency@8fc52baabc14c86294d96034bcc194cfa7f76b05 with: log: info config: .licenserc.yaml diff --git a/.github/workflows/publishes.yml b/.github/workflows/publishes.yml index 55ea8e55cf2..3ab37947947 100644 --- a/.github/workflows/publishes.yml +++ b/.github/workflows/publishes.yml @@ -50,7 +50,7 @@ jobs: REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} run: | - if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" ]; then + if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then ./mvnw -T 4C clean package -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; else ./mvnw -T 4C clean package -Pimage,release-image -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn; diff --git a/.licenserc.yaml b/.licenserc.yaml index 4f49c31a6ae..699f39beee0 100644 --- a/.licenserc.yaml +++ b/.licenserc.yaml @@ -74,6 +74,7 @@ header: - 'console/src/main/resources/static/**' - 'ext/apm-seata-skywalking-plugin/config/agent.config' - 'server/src/main/resources/lua/redislocker/redislock.lua' + - 'server/src/main/resources/banner.txt' comment: on-failure diff --git a/build/pom.xml b/build/pom.xml index 899e27c268a..0e0e2514849 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -63,7 +63,7 @@ - 1.6.1 + 1.7.0-SNAPSHOT 1.8 diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java index ec64f8816d6..56e96f47c9e 100644 --- a/core/src/main/java/io/seata/core/protocol/Version.java +++ b/core/src/main/java/io/seata/core/protocol/Version.java @@ -36,7 +36,7 @@ public class Version { /** * The constant CURRENT. */ - private static final String CURRENT = "1.6.1"; + private static final String CURRENT = "1.7.0-SNAPSHOT"; private static final String VERSION_0_7_1 = "0.7.1"; private static final String VERSION_1_5_0 = "1.5.0"; private static final int MAX_VERSION_DOT = 3; diff --git a/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java b/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java index b90ff04bb0a..74eb4eac343 100644 --- a/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java +++ b/serializer/seata-serializer-kryo/src/test/java/io/seata/serializer/kryo/KryoSerializerTest.java @@ -15,7 +15,14 @@ */ package io.seata.serializer.kryo; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.util.HashMap; +import java.util.Map; + import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; import io.seata.core.exception.TransactionExceptionCode; import io.seata.core.model.BranchStatus; import io.seata.core.model.BranchType; @@ -95,4 +102,31 @@ public void testBranchCommitResponse() { } + @Test + public void testKryoBasic() { + Kryo kryo = new Kryo(); + kryo.setReferences(true); + kryo.setRegistrationRequired(false); + //kryo.register(HashMap.class); + + long beginMills=System.currentTimeMillis(); + for (int i = 0; i < 1; i++) { + Map map = new HashMap<>(); + map.put(String.valueOf(i), "test"); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + Output output = new Output(outputStream); + kryo.writeClassAndObject(output, map); + output.close(); + byte[] outByte = outputStream.toByteArray(); + + ByteArrayInputStream inputStream = new ByteArrayInputStream(outByte); + Input input = new Input(inputStream); + input.close(); + Map result = (HashMap)kryo.readClassAndObject(input); + assertThat(result).isEqualTo(map); + } + //System.out.println(System.currentTimeMillis()-beginMills); + } + } From c7fba75c4c282db5b3d243d819269c88434cd2e6 Mon Sep 17 00:00:00 2001 From: sunrui1225 Date: Tue, 31 Jan 2023 15:17:15 +0800 Subject: [PATCH 012/182] feature: optimize TCC structure, supporting API access (#5165) --- all/pom.xml | 8 +- build/pom.xml | 2 +- changes/en-us/2.0.0.md | 2 +- changes/zh-cn/2.0.0.md | 2 +- .../main/java/io/seata/common/Constants.java | 11 +- .../java/io/seata/common/DefaultValues.java | 19 +- .../java/io/seata/core/protocol/Version.java | 2 +- dependencies/pom.xml | 2 +- integration-tx-api/pom.xml | 64 +++++ .../api}/annotation/AspectTransactional.java | 2 +- .../BusinessActionContextParameterDesc.java | 73 ++++++ .../tx/api}/event/DegradeCheckEvent.java | 2 +- .../api/fence/DefaultCommonFenceHandler.java | 72 ++++++ .../tx/api/fence/FenceHandler.java | 37 +++ .../api/fence/config/CommonFenceConfig.java | 82 ++----- .../fence/constant/CommonFenceConstant.java | 10 +- .../fence/exception/CommonFenceException.java | 20 +- .../tx/api/fence/store/CommonFenceDO.java | 10 +- .../tx/api/fence/store/CommonFenceStore.java | 31 ++- .../store/db/CommonFenceStoreDataBaseDAO.java | 74 +++--- .../store/db/sql/CommonFenceStoreSqls.java | 14 +- .../api}/interceptor/ActionContextFilter.java | 2 +- .../api}/interceptor/ActionContextUtil.java | 14 +- .../interceptor/ActionInterceptorHandler.java | 88 ++++--- .../interceptor/DefaultInvocationWrapper.java | 65 +++++ .../tx/api/interceptor/InvocationWrapper.java | 37 +++ .../TwoPhaseBusinessActionParam.java | 78 ++++++ .../tx/api/interceptor/TxBeanParserUtils.java | 69 ++++++ .../AbstractProxyInvocationHandler.java | 37 +++ .../handler/DefaultInvocationHandler.java | 56 +++++ ...GlobalTransactionalInterceptorHandler.java | 172 +++++--------- .../handler/ProxyInvocationHandler.java | 32 +++ .../parser/DefaultInterfaceParser.java | 67 ++++++ .../parser/DefaultResourceRegisterParser.java | 61 +++++ .../parser/DefaultTargetClassParser.java | 76 ++++++ .../GlobalTransactionalInterceptorParser.java | 92 +++++++ .../interceptor/parser/InterfaceParser.java | 29 +++ .../parser/RegisterResourceParser.java | 26 ++ .../interceptor/parser/TargetClassParser.java | 28 +++ .../tx/api/json/DefaultJsonParser.java | 76 ++++++ .../integration/tx/api/json/JsonParser.java | 32 +++ .../tx/api}/remoting/Protocols.java | 2 +- .../tx/api}/remoting/RemotingDesc.java | 25 +- .../tx/api}/remoting/RemotingParser.java | 2 +- .../tx/api/remoting}/TwoPhaseResult.java | 4 +- .../parser/AbstractedRemotingParser.java | 6 +- .../parser/DefaultRemotingParser.java | 91 +------ .../remoting/parser/DubboRemotingParser.java | 14 +- .../remoting/parser/HSFRemotingParser.java | 12 +- .../parser/SofaRpcRemotingParser.java | 12 +- .../integration/tx/api/util}/DubboUtil.java | 2 +- .../integration/tx/api/util/JsonUtil.java | 34 +++ .../integration/tx/api/util/ProxyUtil.java | 63 +++++ .../rm/tcc/api/BusinessActionContext.java | 24 +- .../api/BusinessActionContextParameter.java | 14 +- .../rm/tcc/api/BusinessActionContextUtil.java | 58 ++++- .../java/io/seata/rm/tcc/api/ParamType.java | 0 .../seata/spring/annotation/GlobalLock.java | 13 - .../annotation/GlobalTransactional.java | 13 +- ....tx.api.interceptor.parser.InterfaceParser | 1 + ...integration.tx.api.remoting.RemotingParser | 3 + .../ActionInterceptorHandlerTest.java | 20 +- .../tx/api/interceptor/TestAction.java | 34 +++ .../tx/api/interceptor/TestParam.java | 66 ++++++ .../tx/api/interceptor/parser/Business.java | 29 +++ .../api/interceptor/parser/BusinessImpl.java | 34 +++ ...balTransactionalInterceptorParserTest.java | 44 ++++ .../ProxyUtilsGlobalTransactionalTest.java | 84 +++++++ pom.xml | 1 + .../SeataClientEnvironmentPostProcessor.java | 7 +- .../SeataTCCFenceAutoConfiguration.java | 10 +- ...itional-spring-configuration-metadata.json | 4 +- spring/pom.xml | 17 +- .../io/seata/rm/fence/SpringFenceConfig.java | 66 ++++++ .../io/seata/rm/fence/SpringFenceHandler.java | 144 +++++------ .../seata/spring/SpringTargetClassParser.java | 35 +++ .../AspectTransactionalInterceptor.java | 30 ++- .../annotation/GlobalTransactionScanner.java | 224 ++---------------- .../parser/RemotingFactoryBeanParser.java | 85 +++++++ .../spring/tcc/TccActionInterceptor.java | 181 -------------- .../spring/tcc/TccAnnotationProcessor.java | 9 +- .../seata/spring/util/SpringProxyUtils.java | 6 +- .../seata/spring/util/TCCBeanParserUtils.java | 210 ---------------- ...x.api.interceptor.parser.TargetClassParser | 1 + ...integration.tx.api.remoting.RemotingParser | 1 + .../GlobalTransactionScannerTest.java | 130 ---------- .../spring/annotation/MethodDescTest.java | 9 +- tcc/pom.xml | 7 +- .../io/seata/rm/tcc/TCCResourceManager.java | 68 ++---- .../java/io/seata/rm/tcc/api/LocalTCC.java | 4 +- .../rm/tcc/api/TwoPhaseBusinessAction.java | 4 +- .../TccActionInterceptorHandler.java | 132 +++++++++++ .../parser/TccActionInterceptorParser.java | 97 ++++++++ .../io/seata/rm/tcc/json/FastJsonParser.java | 36 +++ .../parser/LocalTCCRemotingParser.java | 14 +- .../parser/TccRegisterResourceParser.java | 120 ++++++++++ ....tx.api.interceptor.parser.InterfaceParser | 1 + ....interceptor.parser.RegisterResourceParser | 1 + ...o.seata.integration.tx.api.json.JsonParser | 1 + ...integration.tx.api.remoting.RemotingParser | 1 + .../io.seata.rm.tcc.remoting.RemotingParser | 4 - .../java/io/seata/rm/tcc/NormalTccAction.java | 64 +++++ .../io/seata/rm/tcc/NormalTccActionImpl.java | 48 ++++ .../test/java/io/seata/rm/tcc/TccAction.java | 2 +- .../rm/tcc/interceptor/ProxyUtilsTccTest.java | 130 ++++++++++ .../TccActionInterceptorParserTest.java | 43 ++++ .../parser/LocalTCCRemotingParserTest.java | 2 +- .../TccRegisterResourceParserTest.java} | 21 +- .../io/seata/rm/tcc/spring}/Business.java | 2 +- .../io/seata/rm/tcc/spring}/BusinessImpl.java | 3 +- .../seata/rm/tcc/spring}/BusinessProxy.java | 2 +- .../spring/GlobalTransactionScannerTest.java | 130 ++++++++++ .../rm/tcc}/spring/tcc/LocalTccAction.java | 2 +- .../tcc}/spring/tcc/LocalTccActionImpl.java | 2 +- .../seata/rm/tcc}/spring/tcc/TccAction.java | 2 +- .../rm/tcc}/spring/tcc/TccActionImpl.java | 2 +- .../tm/api/DefaultFailureHandlerImpl.java | 10 +- .../io/seata/tm/api/FailureHandlerHolder.java | 36 +++ .../tm/api/DefaultFailureHandlerImplTest.java | 4 +- 119 files changed, 3149 insertions(+), 1396 deletions(-) create mode 100644 integration-tx-api/pom.xml rename {spring/src/main/java/io/seata/spring => integration-tx-api/src/main/java/io/seata/integration/tx/api}/annotation/AspectTransactional.java (99%) create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java rename {spring/src/main/java/io/seata/spring => integration-tx-api/src/main/java/io/seata/integration/tx/api}/event/DegradeCheckEvent.java (95%) create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java rename tcc/src/main/java/io/seata/rm/tcc/config/TCCFenceConfig.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java (58%) rename tcc/src/main/java/io/seata/rm/tcc/constant/TCCFenceConstant.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/constant/CommonFenceConstant.java (88%) rename tcc/src/main/java/io/seata/rm/tcc/exception/TCCFenceException.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/exception/CommonFenceException.java (64%) rename tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceDO.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceDO.java (93%) rename tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceStore.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceStore.java (72%) rename tcc/src/main/java/io/seata/rm/tcc/store/db/TCCFenceStoreDataBaseDAO.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/CommonFenceStoreDataBaseDAO.java (65%) rename tcc/src/main/java/io/seata/rm/tcc/store/db/sql/TCCFenceStoreSqls.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/sql/CommonFenceStoreSqls.java (88%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/interceptor/ActionContextFilter.java (95%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/interceptor/ActionContextUtil.java (97%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/interceptor/ActionInterceptorHandler.java (75%) create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TwoPhaseBusinessActionParam.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TxBeanParserUtils.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java rename spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java => integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java (73%) create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/Protocols.java (95%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/RemotingDesc.java (89%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/RemotingParser.java (97%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting}/TwoPhaseResult.java (97%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/parser/AbstractedRemotingParser.java (89%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/parser/DefaultRemotingParser.java (52%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/parser/DubboRemotingParser.java (84%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/parser/HSFRemotingParser.java (90%) rename {tcc/src/main/java/io/seata/rm/tcc => integration-tx-api/src/main/java/io/seata/integration/tx/api}/remoting/parser/SofaRpcRemotingParser.java (87%) rename {tcc/src/main/java/io/seata/rm/tcc/remoting/parser => integration-tx-api/src/main/java/io/seata/integration/tx/api/util}/DubboUtil.java (98%) create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java create mode 100644 integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java rename {tcc => integration-tx-api}/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java (92%) rename {tcc => integration-tx-api}/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java (85%) rename {tcc => integration-tx-api}/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java (66%) rename {tcc => integration-tx-api}/src/main/java/io/seata/rm/tcc/api/ParamType.java (100%) rename {spring => integration-tx-api}/src/main/java/io/seata/spring/annotation/GlobalLock.java (83%) rename {spring => integration-tx-api}/src/main/java/io/seata/spring/annotation/GlobalTransactional.java (95%) create mode 100644 integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser create mode 100644 integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser rename {tcc/src/test/java/io/seata/rm/tcc => integration-tx-api/src/test/java/io/seata/integration/tx/api}/interceptor/ActionInterceptorHandlerTest.java (83%) create mode 100644 integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestAction.java create mode 100644 integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestParam.java create mode 100644 integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/Business.java create mode 100644 integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/BusinessImpl.java create mode 100644 integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java create mode 100644 integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java create mode 100644 spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java rename tcc/src/main/java/io/seata/rm/tcc/TCCFenceHandler.java => spring/src/main/java/io/seata/rm/fence/SpringFenceHandler.java (70%) create mode 100644 spring/src/main/java/io/seata/spring/SpringTargetClassParser.java create mode 100644 spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java delete mode 100644 spring/src/main/java/io/seata/spring/tcc/TccActionInterceptor.java delete mode 100644 spring/src/main/java/io/seata/spring/util/TCCBeanParserUtils.java create mode 100644 spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.TargetClassParser create mode 100644 spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser delete mode 100644 spring/src/test/java/io/seata/spring/annotation/GlobalTransactionScannerTest.java create mode 100644 tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java create mode 100644 tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java create mode 100644 tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java create mode 100644 tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java create mode 100644 tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser create mode 100644 tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.RegisterResourceParser create mode 100644 tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.json.JsonParser create mode 100644 tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser delete mode 100644 tcc/src/main/resources/META-INF/services/io.seata.rm.tcc.remoting.RemotingParser create mode 100644 tcc/src/test/java/io/seata/rm/tcc/NormalTccAction.java create mode 100644 tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java create mode 100644 tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java create mode 100644 tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java rename tcc/src/test/java/io/seata/rm/tcc/{remoting/parser/DefaultRemotingParserTest.java => resource/parser/TccRegisterResourceParserTest.java} (67%) rename {spring/src/test/java/io/seata/spring/annotation => tcc/src/test/java/io/seata/rm/tcc/spring}/Business.java (95%) rename {spring/src/test/java/io/seata/spring/annotation => tcc/src/test/java/io/seata/rm/tcc/spring}/BusinessImpl.java (92%) rename {spring/src/test/java/io/seata/spring/annotation => tcc/src/test/java/io/seata/rm/tcc/spring}/BusinessProxy.java (97%) create mode 100644 tcc/src/test/java/io/seata/rm/tcc/spring/GlobalTransactionScannerTest.java rename {spring/src/test/java/io/seata => tcc/src/test/java/io/seata/rm/tcc}/spring/tcc/LocalTccAction.java (95%) rename {spring/src/test/java/io/seata => tcc/src/test/java/io/seata/rm/tcc}/spring/tcc/LocalTccActionImpl.java (95%) rename {spring/src/test/java/io/seata => tcc/src/test/java/io/seata/rm/tcc}/spring/tcc/TccAction.java (97%) rename {spring/src/test/java/io/seata => tcc/src/test/java/io/seata/rm/tcc}/spring/tcc/TccActionImpl.java (96%) create mode 100644 tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java diff --git a/all/pom.xml b/all/pom.xml index e0215683f9e..c9b499ebef2 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -421,10 +421,6 @@ edas-sdk provided - - net.bytebuddy - byte-buddy - aopalliance aopalliance @@ -600,6 +596,10 @@ lz4-java provided + + net.bytebuddy + byte-buddy + diff --git a/build/pom.xml b/build/pom.xml index 0e0e2514849..c354e83fb69 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -63,7 +63,7 @@ - 1.7.0-SNAPSHOT + 2.0.0-SNAPSHOT 1.8 diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 4593f9bae53..d37630d02f6 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -15,7 +15,7 @@ Seata is an easy-to-use, high-performance, open source distributed transaction s The version is updated as follows: ### feature: - - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later + - [[#5165](https://github.com/seata/seata/pull/5165)] optimize TCC structure, supporting API access. add integration layer module(seata-integration-tx-api) for transaction process definition and proxy enhancement. ### bugfix: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 591880a4071..f1a64501825 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -15,7 +15,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 此版本更新如下: ### feature: - - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 + - [[#5165](https://github.com/seata/seata/pull/5165)] TCC结构拆分,支持API方式接入。增加集成层模块(seata-integration-tx-api),对事务流程定义以及代理部分增强。 ### bugfix: - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 diff --git a/common/src/main/java/io/seata/common/Constants.java b/common/src/main/java/io/seata/common/Constants.java index 08bb175eadd..f5a4507dcc7 100644 --- a/common/src/main/java/io/seata/common/Constants.java +++ b/common/src/main/java/io/seata/common/Constants.java @@ -69,7 +69,7 @@ public interface Constants { /** * Use TCC fence */ - String USE_TCC_FENCE = "useTCCFence"; + String USE_COMMON_FENCE = "useTCCFence"; /** * phase one method name @@ -94,7 +94,7 @@ public interface Constants { /** * branch context */ - String TCC_ACTION_CONTEXT = "actionContext"; + String TX_ACTION_CONTEXT = "actionContext"; /** * default charset name @@ -165,5 +165,10 @@ public interface Constants { * The constant REGISTRY_TYPE_SPLIT_CHAR. */ String REGISTRY_TYPE_SPLIT_CHAR = ","; + + /** + * phase two compensation method name + */ + String COMPENSATION_METHOD = "sys::compensation"; -} +} \ No newline at end of file diff --git a/common/src/main/java/io/seata/common/DefaultValues.java b/common/src/main/java/io/seata/common/DefaultValues.java index bf12a6c3668..7851b3ac676 100644 --- a/common/src/main/java/io/seata/common/DefaultValues.java +++ b/common/src/main/java/io/seata/common/DefaultValues.java @@ -147,23 +147,28 @@ public interface DefaultValues { */ int TCC_ACTION_INTERCEPTOR_ORDER = Integer.MIN_VALUE + 1000; + /** + * the constant SAGA_ACTION_INTERCEPTOR_ORDER + */ + int SAGA_ACTION_INTERCEPTOR_ORDER = Integer.MIN_VALUE + 1000; + /** * the constant DEFAULT_DISTRIBUTED_LOCK_EXPIRE */ int DEFAULT_DISTRIBUTED_LOCK_EXPIRE = 10000; /** - * the constant DEFAULT_TCC_FENCE_CLEAN_PERIOD + * the constant DEFAULT_COMMON_FENCE_CLEAN_PERIOD */ - int DEFAULT_TCC_FENCE_CLEAN_PERIOD = 1; + int DEFAULT_COMMON_FENCE_CLEAN_PERIOD = 1; /** - * the constant DEFAULT_TCC_FENCE_LOG_TABLE_NAME + * the constant DEFAULT_COMMON_FENCE_LOG_TABLE_NAME */ - String DEFAULT_TCC_FENCE_LOG_TABLE_NAME = "tcc_fence_log"; + String DEFAULT_COMMON_FENCE_LOG_TABLE_NAME = "tcc_fence_log"; /** - * the constant TCC_FENCE_BEAN_NAME + * the constant COMMON_FENCE_BEAN_NAME */ - String TCC_FENCE_BEAN_NAME = "tccFenceConfig"; + String COMMON_FENCE_BEAN_NAME = "tccFenceConfig"; /** * the constant DEFAULT_RPC_RM_REQUEST_TIMEOUT @@ -286,4 +291,4 @@ public interface DefaultValues { * Default druid location in classpath */ String DRUID_LOCATION = "lib/sqlparser/druid.jar"; -} +} \ No newline at end of file diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java index 56e96f47c9e..0ed4bbd15c7 100644 --- a/core/src/main/java/io/seata/core/protocol/Version.java +++ b/core/src/main/java/io/seata/core/protocol/Version.java @@ -36,7 +36,7 @@ public class Version { /** * The constant CURRENT. */ - private static final String CURRENT = "1.7.0-SNAPSHOT"; + private static final String CURRENT = "2.0.0-SNAPSHOT"; private static final String VERSION_0_7_1 = "0.7.1"; private static final String VERSION_1_5_0 = "1.5.0"; private static final int MAX_VERSION_DOT = 3; diff --git a/dependencies/pom.xml b/dependencies/pom.xml index e53f3475364..9c11cce0f28 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -35,7 +35,6 @@ 1.0.2 2.5.9 1.8.3 - 1.12.13 2.6.10 5.5.3 1.2.83 @@ -114,6 +113,7 @@ 2.23.4 3.12.2 9.4.38.v20210224 + 1.12.17 diff --git a/integration-tx-api/pom.xml b/integration-tx-api/pom.xml new file mode 100644 index 00000000000..12cc16bc2d6 --- /dev/null +++ b/integration-tx-api/pom.xml @@ -0,0 +1,64 @@ + + + + + io.seata + seata-parent + ${revision} + + 4.0.0 + seata-integration-tx-api + seata-integration-tx-api ${project.version} + jar + + + + + ${project.groupId} + seata-tm + ${project.version} + + + ${project.groupId} + seata-rm-datasource + ${project.version} + + + ${project.groupId} + seata-rm + ${project.version} + + + ${project.groupId} + seata-serializer-all + ${project.version} + + + ${project.groupId} + seata-common + ${project.version} + + + net.bytebuddy + byte-buddy + + + + + diff --git a/spring/src/main/java/io/seata/spring/annotation/AspectTransactional.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/AspectTransactional.java similarity index 99% rename from spring/src/main/java/io/seata/spring/annotation/AspectTransactional.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/AspectTransactional.java index b603bd8c8e2..b51b0f2c147 100644 --- a/spring/src/main/java/io/seata/spring/annotation/AspectTransactional.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/AspectTransactional.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; +package io.seata.integration.tx.api.annotation; import io.seata.common.DefaultValues; import io.seata.common.LockStrategyMode; diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java new file mode 100644 index 00000000000..693c3807a03 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java @@ -0,0 +1,73 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.annotation; + +import io.seata.common.util.StringUtils; +import io.seata.rm.tcc.api.BusinessActionContextParameter; + +import java.lang.annotation.Annotation; + +/** + * @author leezongjie + * @date 2022/12/23 + */ +public class BusinessActionContextParameterDesc { + private String paramName; + private int index; + private boolean isParamInProperty; + + private BusinessActionContextParameterDesc() { + } + + public static BusinessActionContextParameterDesc createFromBusinessActionContextParameter(Annotation annotation) { + if (annotation == null) { + return null; + } + BusinessActionContextParameterDesc businessActionContextParameterDesc = null; + if (annotation instanceof BusinessActionContextParameter) { + businessActionContextParameterDesc = new BusinessActionContextParameterDesc(); + BusinessActionContextParameter businessActionContextParameter = (BusinessActionContextParameter) annotation; + businessActionContextParameterDesc.setIndex(businessActionContextParameter.index()); + businessActionContextParameterDesc.setParamInProperty(businessActionContextParameter.isParamInProperty()); + businessActionContextParameterDesc.setParamName(StringUtils.isNotBlank(businessActionContextParameter.paramName()) ? businessActionContextParameter.paramName() : businessActionContextParameter.value()); + } + return businessActionContextParameterDesc; + } + + public String getParamName() { + return paramName; + } + + public void setParamName(String paramName) { + this.paramName = paramName; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public boolean isParamInProperty() { + return isParamInProperty; + } + + public void setParamInProperty(boolean paramInProperty) { + isParamInProperty = paramInProperty; + } +} diff --git a/spring/src/main/java/io/seata/spring/event/DegradeCheckEvent.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/event/DegradeCheckEvent.java similarity index 95% rename from spring/src/main/java/io/seata/spring/event/DegradeCheckEvent.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/event/DegradeCheckEvent.java index 2d1c6d3ad01..17eaba69196 100644 --- a/spring/src/main/java/io/seata/spring/event/DegradeCheckEvent.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/event/DegradeCheckEvent.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.event; +package io.seata.integration.tx.api.event; import io.seata.core.event.Event; diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java new file mode 100644 index 00000000000..e853b46c9bb --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java @@ -0,0 +1,72 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.fence; + +import io.seata.common.executor.Callback; + +import java.lang.reflect.Method; +import java.util.Date; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public class DefaultCommonFenceHandler implements FenceHandler { + + private FenceHandler fenceHandler; + + private static class SingletonHolder { + private static final DefaultCommonFenceHandler INSTANCE = new DefaultCommonFenceHandler(); + } + + public static DefaultCommonFenceHandler get() { + return DefaultCommonFenceHandler.SingletonHolder.INSTANCE; + } + + public void setFenceHandler(FenceHandler fenceHandler) { + this.fenceHandler = fenceHandler; + } + + private void check() { + if (fenceHandler == null) { + throw new RuntimeException("fenceHandler is null, need to set a fenceHandler implement"); + } + } + + @Override + public Object prepareFence(String xid, Long branchId, String actionName, Callback targetCallback) { + check(); + return fenceHandler.prepareFence(xid, branchId, actionName, targetCallback); + } + + @Override + public boolean commitFence(Method commitMethod, Object targetTCCBean, String xid, Long branchId, Object[] args) { + check(); + return fenceHandler.commitFence(commitMethod, targetTCCBean, xid, branchId, args); + } + + @Override + public boolean rollbackFence(Method rollbackMethod, Object targetTCCBean, String xid, Long branchId, Object[] args, String actionName) { + check(); + return fenceHandler.rollbackFence(rollbackMethod, targetTCCBean, xid, branchId, args, actionName); + } + + @Override + public int deleteFenceByDate(Date datetime) { + check(); + return fenceHandler.deleteFenceByDate(datetime); + } +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java new file mode 100644 index 00000000000..70a54773b9a --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.fence; + +import io.seata.common.executor.Callback; + +import java.lang.reflect.Method; +import java.util.Date; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public interface FenceHandler { + + Object prepareFence(String xid, Long branchId, String actionName, Callback targetCallback); + + boolean commitFence(Method commitMethod, Object targetTCCBean, String xid, Long branchId, Object[] args); + + boolean rollbackFence(Method rollbackMethod, Object targetTCCBean, String xid, Long branchId, Object[] args, String actionName); + + int deleteFenceByDate(Date datetime); + +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/config/TCCFenceConfig.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java similarity index 58% rename from tcc/src/main/java/io/seata/rm/tcc/config/TCCFenceConfig.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java index fffc08ab993..1023fa16916 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/config/TCCFenceConfig.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java @@ -13,89 +13,61 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.config; +package io.seata.integration.tx.api.fence.config; import java.time.Duration; import java.util.Date; +import java.util.Random; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; -import javax.sql.DataSource; - import io.seata.common.DefaultValues; -import io.seata.common.exception.FrameworkErrorCode; import io.seata.common.thread.NamedThreadFactory; import io.seata.core.rpc.Disposable; -import io.seata.rm.tcc.TCCFenceHandler; -import io.seata.rm.tcc.exception.TCCFenceException; -import io.seata.rm.tcc.store.db.TCCFenceStoreDataBaseDAO; +import io.seata.integration.tx.api.fence.DefaultCommonFenceHandler; +import io.seata.integration.tx.api.fence.store.db.CommonFenceStoreDataBaseDAO; import org.apache.commons.lang.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.support.TransactionTemplate; /** - * TCC Fence Config + * Common Fence Config * * @author kaka2code */ -public class TCCFenceConfig implements InitializingBean, Disposable { +public class CommonFenceConfig implements Disposable { - private static final Logger LOGGER = LoggerFactory.getLogger(TCCFenceConfig.class); + private static final Logger LOGGER = LoggerFactory.getLogger(CommonFenceConfig.class); private final AtomicBoolean initialized = new AtomicBoolean(false); /** - * TCC fence clean period max value. maximum interval is 68 years + * Common fence clean period max value. maximum interval is 68 years */ private static final Duration MAX_PERIOD = Duration.ofSeconds(Integer.MAX_VALUE); /** - * TCC fence clean period. only duration type format are supported + * Common fence clean period. only duration type format are supported */ - private Duration cleanPeriod = Duration.ofDays(DefaultValues.DEFAULT_TCC_FENCE_CLEAN_PERIOD); + private Duration cleanPeriod = Duration.ofDays(DefaultValues.DEFAULT_COMMON_FENCE_CLEAN_PERIOD); /** - * TCC fence log table name + * Common fence log table name */ - private String logTableName = DefaultValues.DEFAULT_TCC_FENCE_LOG_TABLE_NAME; + private String logTableName = DefaultValues.DEFAULT_COMMON_FENCE_LOG_TABLE_NAME; - /** - * TCC fence datasource - */ - private final DataSource dataSource; - - /** - * TCC fence transactionManager - */ - private final PlatformTransactionManager transactionManager; /** - * TCC fence clean scheduled thread pool + * Common fence clean scheduled thread pool */ private final ScheduledThreadPoolExecutor tccFenceClean = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("tccFenceClean", 1)); - public TCCFenceConfig(final DataSource dataSource, final PlatformTransactionManager transactionManager) { - this.dataSource = dataSource; - this.transactionManager = transactionManager; - } - public AtomicBoolean getInitialized() { return initialized; } - public DataSource getDataSource() { - return dataSource; - } - - public PlatformTransactionManager getTransactionManager() { - return transactionManager; - } - public void setCleanPeriod(Duration cleanPeriod) { this.cleanPeriod = cleanPeriod; } @@ -115,8 +87,8 @@ public void initCleanTask() { tccFenceClean.scheduleWithFixedDelay(() -> { Date timeBefore = null; try { - timeBefore = DateUtils.addSeconds(new Date(), -(int)periodSeconds); - int deletedRowCount = TCCFenceHandler.deleteFenceByDate(timeBefore); + timeBefore = DateUtils.addSeconds(new Date(), -(int) periodSeconds); + int deletedRowCount = DefaultCommonFenceHandler.get().deleteFenceByDate(timeBefore); if (deletedRowCount > 0) { LOGGER.info("TCC fence clean task executed success, timeBefore: {}, deleted row count: {}", timeBefore, deletedRowCount); @@ -124,7 +96,8 @@ public void initCleanTask() { } catch (RuntimeException e) { LOGGER.error("Delete tcc fence log failed, timeBefore: {}", timeBefore, e); } - }, 0, periodSeconds, TimeUnit.SECONDS); + }, new Random(System.currentTimeMillis()).nextInt(60), periodSeconds, TimeUnit.SECONDS); + LOGGER.info("TCC fence log clean task start success, cleanPeriod:{}", cleanPeriod); } catch (NumberFormatException e) { LOGGER.error("TCC fence log clean period only supports positive integers, clean task start failed"); @@ -137,24 +110,13 @@ public void destroy() { tccFenceClean.shutdown(); } - @Override - public void afterPropertiesSet() { + public void init() { // set log table name if (logTableName != null) { - TCCFenceStoreDataBaseDAO.getInstance().setLogTableName(logTableName); - } - if (dataSource != null) { - // set dataSource - TCCFenceHandler.setDataSource(dataSource); - } else { - throw new TCCFenceException(FrameworkErrorCode.DateSourceNeedInjected); - } - if (transactionManager != null) { - // set transaction template - TCCFenceHandler.setTransactionTemplate(new TransactionTemplate(transactionManager)); - } else { - throw new TCCFenceException(FrameworkErrorCode.TransactionManagerNeedInjected); + CommonFenceStoreDataBaseDAO.getInstance().setLogTableName(logTableName); } + initCleanTask(); } -} + +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/constant/TCCFenceConstant.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/constant/CommonFenceConstant.java similarity index 88% rename from tcc/src/main/java/io/seata/rm/tcc/constant/TCCFenceConstant.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/constant/CommonFenceConstant.java index 7c9a2b416cf..a7cb0277eeb 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/constant/TCCFenceConstant.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/constant/CommonFenceConstant.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.constant; +package io.seata.integration.tx.api.fence.constant; /** - * TCC Fence Constant + * Common Fence Constant * * @author kaka2code */ -public class TCCFenceConstant { +public class CommonFenceConstant { - private TCCFenceConstant() { + private CommonFenceConstant() { throw new IllegalStateException("Utility class"); } @@ -45,4 +45,4 @@ private TCCFenceConstant() { * Suspended status. */ public static final int STATUS_SUSPENDED = 4; -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/exception/TCCFenceException.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/exception/CommonFenceException.java similarity index 64% rename from tcc/src/main/java/io/seata/rm/tcc/exception/TCCFenceException.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/exception/CommonFenceException.java index 716da66ed1f..c77fa639381 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/exception/TCCFenceException.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/exception/CommonFenceException.java @@ -13,40 +13,40 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.exception; +package io.seata.integration.tx.api.fence.exception; import io.seata.common.exception.FrameworkErrorCode; import io.seata.common.exception.FrameworkException; /** - * TCC Fence Exception + * Common Fence Exception * * @author kaka2code */ -public class TCCFenceException extends FrameworkException { +public class CommonFenceException extends FrameworkException { - public TCCFenceException(FrameworkErrorCode err) { + public CommonFenceException(FrameworkErrorCode err) { super(err); } - public TCCFenceException(String msg) { + public CommonFenceException(String msg) { super(msg); } - public TCCFenceException(String msg, FrameworkErrorCode errCode) { + public CommonFenceException(String msg, FrameworkErrorCode errCode) { super(msg, errCode); } - public TCCFenceException(Throwable cause, String msg, FrameworkErrorCode errCode) { + public CommonFenceException(Throwable cause, String msg, FrameworkErrorCode errCode) { super(cause, msg, errCode); } - public TCCFenceException(Throwable th) { + public CommonFenceException(Throwable th) { super(th); } - public TCCFenceException(Throwable th, String msg) { + public CommonFenceException(Throwable th, String msg) { super(th, msg); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceDO.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceDO.java similarity index 93% rename from tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceDO.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceDO.java index 6878a9a0c74..caa33cd9b1f 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceDO.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceDO.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.store; +package io.seata.integration.tx.api.fence.store; import java.util.Date; /** - * TCC Fence Domain + * Common Fence Domain * * @author kaka2code */ -public class TCCFenceDO { +public class CommonFenceDO { /** * the global transaction id @@ -40,7 +40,7 @@ public class TCCFenceDO { private String actionName; /** - * the tcc fence status + * the common fence status * tried: 1; committed: 2; rollbacked: 3; suspended: 4 */ private Integer status; @@ -103,4 +103,4 @@ public void setGmtModified(Date gmtModified) { this.gmtModified = gmtModified; } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceStore.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceStore.java similarity index 72% rename from tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceStore.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceStore.java index 81b64202203..4dea7452bf3 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/store/TCCFenceStore.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/CommonFenceStore.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.store; +package io.seata.integration.tx.api.fence.store; import java.sql.Connection; import java.util.Date; @@ -21,20 +21,20 @@ import java.util.Set; /** - * The TCC Fence Store + * The common Fence Store * * @author kaka2code */ -public interface TCCFenceStore { +public interface CommonFenceStore { /** - * Query tcc fence do. + * Query common fence do. * @param conn the connection * @param xid the global transaction id * @param branchId the branch transaction id - * @return the tcc fence do + * @return the common fence do */ - TCCFenceDO queryTCCFenceDO(Connection conn, String xid, Long branchId); + CommonFenceDO queryCommonFenceDO(Connection conn, String xid, Long branchId); /** * Query xid. @@ -46,15 +46,15 @@ public interface TCCFenceStore { Set queryEndStatusXidsByDate(Connection conn, Date datetime, int limit); /** - * Insert tcc fence do boolean. + * Insert common fence do boolean. * @param conn the connection - * @param tccFenceDO the tcc fence do + * @param commonFenceDO the common fence do * @return the boolean */ - boolean insertTCCFenceDO(Connection conn, TCCFenceDO tccFenceDO); + boolean insertCommonFenceDO(Connection conn, CommonFenceDO commonFenceDO); /** - * Update tcc fence do boolean. + * Update common fence do boolean. * @param conn the connection * @param xid the global transaction id * @param branchId the branch transaction id @@ -62,16 +62,16 @@ public interface TCCFenceStore { * @param oldStatus the old status * @return the boolean */ - boolean updateTCCFenceDO(Connection conn, String xid, Long branchId, int newStatus, int oldStatus); + boolean updateCommonFenceDO(Connection conn, String xid, Long branchId, int newStatus, int oldStatus); /** - * Delete tcc fence do boolean. + * Delete common fence do boolean. * @param conn the connection * @param xid the global transaction id * @param branchId the branch transaction id * @return the boolean */ - boolean deleteTCCFenceDO(Connection conn, String xid, Long branchId); + boolean deleteCommonFenceDO(Connection conn, String xid, Long branchId); /** * Delete tcc fence do boolean. @@ -82,13 +82,12 @@ public interface TCCFenceStore { int deleteTCCFenceDO(Connection conn, List xids); /** - * Delete tcc fence by datetime. + * Delete common fence by datetime. * @param conn the connection * @param datetime datetime * @return the deleted row count */ - int deleteTCCFenceDOByDate(Connection conn, Date datetime); - + int deleteCommonFenceDOByDate(Connection conn, Date datetime); /** * Set LogTable Name diff --git a/tcc/src/main/java/io/seata/rm/tcc/store/db/TCCFenceStoreDataBaseDAO.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/CommonFenceStoreDataBaseDAO.java similarity index 65% rename from tcc/src/main/java/io/seata/rm/tcc/store/db/TCCFenceStoreDataBaseDAO.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/CommonFenceStoreDataBaseDAO.java index bee3f09b7c3..589f1e0a323 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/store/db/TCCFenceStoreDataBaseDAO.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/CommonFenceStoreDataBaseDAO.java @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.store.db; +package io.seata.integration.tx.api.fence.store.db; import io.seata.common.DefaultValues; import io.seata.common.exception.DataAccessException; import io.seata.common.exception.FrameworkErrorCode; import io.seata.common.exception.StoreException; import io.seata.common.util.IOUtil; -import io.seata.rm.tcc.exception.TCCFenceException; -import io.seata.rm.tcc.store.TCCFenceDO; -import io.seata.rm.tcc.store.TCCFenceStore; -import io.seata.rm.tcc.store.db.sql.TCCFenceStoreSqls; +import io.seata.integration.tx.api.fence.store.db.sql.CommonFenceStoreSqls; +import io.seata.integration.tx.api.fence.exception.CommonFenceException; +import io.seata.integration.tx.api.fence.store.CommonFenceDO; +import io.seata.integration.tx.api.fence.store.CommonFenceStore; import java.sql.Connection; import java.sql.PreparedStatement; @@ -37,26 +37,26 @@ import java.util.Set; /** - * The type TCC Fence store data base dao + * The type Common Fence store data base dao * * @author kaka2code */ -public class TCCFenceStoreDataBaseDAO implements TCCFenceStore { +public class CommonFenceStoreDataBaseDAO implements CommonFenceStore { /** - * TCC fence log table name + * Common fence log table name */ - private String logTableName = DefaultValues.DEFAULT_TCC_FENCE_LOG_TABLE_NAME; + private String logTableName = DefaultValues.DEFAULT_COMMON_FENCE_LOG_TABLE_NAME; - private static volatile TCCFenceStoreDataBaseDAO instance = null; + private static volatile CommonFenceStoreDataBaseDAO instance = null; - private TCCFenceStoreDataBaseDAO() {} + private CommonFenceStoreDataBaseDAO() {} - public static TCCFenceStore getInstance() { + public static CommonFenceStore getInstance() { if (instance == null) { - synchronized (TCCFenceStore.class) { + synchronized (CommonFenceStore.class) { if (instance == null) { - instance = new TCCFenceStoreDataBaseDAO(); + instance = new CommonFenceStoreDataBaseDAO(); } } } @@ -64,21 +64,21 @@ public static TCCFenceStore getInstance() { } @Override - public TCCFenceDO queryTCCFenceDO(Connection conn, String xid, Long branchId) { + public CommonFenceDO queryCommonFenceDO(Connection conn, String xid, Long branchId) { PreparedStatement ps = null; ResultSet rs = null; try { - String sql = TCCFenceStoreSqls.getQuerySQLByBranchIdAndXid(logTableName); + String sql = CommonFenceStoreSqls.getQuerySQLByBranchIdAndXid(logTableName); ps = conn.prepareStatement(sql); ps.setString(1, xid); ps.setLong(2, branchId); rs = ps.executeQuery(); if (rs.next()) { - TCCFenceDO tccFenceDO = new TCCFenceDO(); - tccFenceDO.setXid(rs.getString("xid")); - tccFenceDO.setBranchId(rs.getLong("branch_id")); - tccFenceDO.setStatus(rs.getInt("status")); - return tccFenceDO; + CommonFenceDO commonFenceDO = new CommonFenceDO(); + commonFenceDO.setXid(rs.getString("xid")); + commonFenceDO.setBranchId(rs.getLong("branch_id")); + commonFenceDO.setStatus(rs.getInt("status")); + return commonFenceDO; } else { return null; } @@ -94,7 +94,7 @@ public Set queryEndStatusXidsByDate(Connection conn, Date datetime, int PreparedStatement ps = null; ResultSet rs = null; try { - String sql = TCCFenceStoreSqls.getQueryEndStatusSQLByDate(logTableName); + String sql = CommonFenceStoreSqls.getQueryEndStatusSQLByDate(logTableName); ps = conn.prepareStatement(sql); ps.setTimestamp(1, new Timestamp(datetime.getTime())); ps.setInt(2, limit); @@ -112,22 +112,22 @@ public Set queryEndStatusXidsByDate(Connection conn, Date datetime, int } @Override - public boolean insertTCCFenceDO(Connection conn, TCCFenceDO tccFenceDO) { + public boolean insertCommonFenceDO(Connection conn, CommonFenceDO commonFenceDO) { PreparedStatement ps = null; try { Timestamp now = new Timestamp(System.currentTimeMillis()); - String sql = TCCFenceStoreSqls.getInsertLocalTCCLogSQL(logTableName); + String sql = CommonFenceStoreSqls.getInsertLocalTCCLogSQL(logTableName); ps = conn.prepareStatement(sql); - ps.setString(1, tccFenceDO.getXid()); - ps.setLong(2, tccFenceDO.getBranchId()); - ps.setString(3, tccFenceDO.getActionName()); - ps.setInt(4, tccFenceDO.getStatus()); + ps.setString(1, commonFenceDO.getXid()); + ps.setLong(2, commonFenceDO.getBranchId()); + ps.setString(3, commonFenceDO.getActionName()); + ps.setInt(4, commonFenceDO.getStatus()); ps.setTimestamp(5, now); ps.setTimestamp(6, now); return ps.executeUpdate() > 0; } catch (SQLIntegrityConstraintViolationException e) { - throw new TCCFenceException(String.format("Insert tcc fence record duplicate key exception. xid= %s, branchId= %s", tccFenceDO.getXid(), tccFenceDO.getBranchId()), + throw new CommonFenceException(String.format("Insert tcc fence record duplicate key exception. xid= %s, branchId= %s", commonFenceDO.getXid(), commonFenceDO.getBranchId()), FrameworkErrorCode.DuplicateKeyException); } catch (SQLException e) { throw new StoreException(e); @@ -137,10 +137,10 @@ public boolean insertTCCFenceDO(Connection conn, TCCFenceDO tccFenceDO) { } @Override - public boolean updateTCCFenceDO(Connection conn, String xid, Long branchId, int newStatus, int oldStatus) { + public boolean updateCommonFenceDO(Connection conn, String xid, Long branchId, int newStatus, int oldStatus) { PreparedStatement ps = null; try { - String sql = TCCFenceStoreSqls.getUpdateStatusSQLByBranchIdAndXid(logTableName); + String sql = CommonFenceStoreSqls.getUpdateStatusSQLByBranchIdAndXid(logTableName); ps = conn.prepareStatement(sql); ps.setInt(1, newStatus); // gmt_modified @@ -157,10 +157,10 @@ public boolean updateTCCFenceDO(Connection conn, String xid, Long branchId, int } @Override - public boolean deleteTCCFenceDO(Connection conn, String xid, Long branchId) { + public boolean deleteCommonFenceDO(Connection conn, String xid, Long branchId) { PreparedStatement ps = null; try { - String sql = TCCFenceStoreSqls.getDeleteSQLByBranchIdAndXid(logTableName); + String sql = CommonFenceStoreSqls.getDeleteSQLByBranchIdAndXid(logTableName); ps = conn.prepareStatement(sql); ps.setString(1, xid); ps.setLong(2, branchId); @@ -178,7 +178,7 @@ public int deleteTCCFenceDO(Connection conn, List xids) { PreparedStatement ps = null; try { String paramsPlaceHolder = org.apache.commons.lang.StringUtils.repeat("?", ",", xids.size()); - String sql = TCCFenceStoreSqls.getDeleteSQLByXids(logTableName, paramsPlaceHolder); + String sql = CommonFenceStoreSqls.getDeleteSQLByXids(logTableName, paramsPlaceHolder); ps = conn.prepareStatement(sql); for (int i = 0; i < xids.size(); i++) { ps.setString(i + 1, xids.get(i)); @@ -192,10 +192,10 @@ public int deleteTCCFenceDO(Connection conn, List xids) { } @Override - public int deleteTCCFenceDOByDate(Connection conn, Date datetime) { + public int deleteCommonFenceDOByDate(Connection conn, Date datetime) { PreparedStatement ps = null; try { - String sql = TCCFenceStoreSqls.getDeleteSQLByDateAndStatus(logTableName); + String sql = CommonFenceStoreSqls.getDeleteSQLByDateAndStatus(logTableName); ps = conn.prepareStatement(sql); ps.setTimestamp(1, new Timestamp(datetime.getTime())); return ps.executeUpdate(); @@ -210,4 +210,4 @@ public int deleteTCCFenceDOByDate(Connection conn, Date datetime) { public void setLogTableName(String logTableName) { this.logTableName = logTableName; } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/store/db/sql/TCCFenceStoreSqls.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/sql/CommonFenceStoreSqls.java similarity index 88% rename from tcc/src/main/java/io/seata/rm/tcc/store/db/sql/TCCFenceStoreSqls.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/sql/CommonFenceStoreSqls.java index 9ea6c28c0ca..842202a2366 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/store/db/sql/TCCFenceStoreSqls.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/store/db/sql/CommonFenceStoreSqls.java @@ -13,18 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.store.db.sql; +package io.seata.integration.tx.api.fence.store.db.sql; -import io.seata.rm.tcc.constant.TCCFenceConstant; +import io.seata.integration.tx.api.fence.constant.CommonFenceConstant; /** * TCC Fence Store Sqls * * @author kaka2code */ -public class TCCFenceStoreSqls { +public class CommonFenceStoreSqls { - private TCCFenceStoreSqls() { + private CommonFenceStoreSqls() { throw new IllegalStateException("Utility class"); } @@ -59,7 +59,7 @@ private TCCFenceStoreSqls() { protected static final String QUERY_END_STATUS_BY_DATE = "select xid, branch_id, status, gmt_create, gmt_modified " + "from " + LOCAL_TCC_LOG_PLACEHOLD + " where gmt_modified < ? " - + " and status in (" + TCCFenceConstant.STATUS_COMMITTED + " , " + TCCFenceConstant.STATUS_ROLLBACKED + " , " + TCCFenceConstant.STATUS_SUSPENDED + ")" + + " and status in (" + CommonFenceConstant.STATUS_COMMITTED + " , " + CommonFenceConstant.STATUS_ROLLBACKED + " , " + CommonFenceConstant.STATUS_SUSPENDED + ")" + " limit ?"; /** @@ -84,7 +84,7 @@ private TCCFenceStoreSqls() { */ protected static final String DELETE_BY_DATE_AND_STATUS = "delete from " + LOCAL_TCC_LOG_PLACEHOLD + " where gmt_modified < ? " - + " and status in (" + TCCFenceConstant.STATUS_COMMITTED + " , " + TCCFenceConstant.STATUS_ROLLBACKED + " , " + TCCFenceConstant.STATUS_SUSPENDED + ")"; + + " and status in (" + CommonFenceConstant.STATUS_COMMITTED + " , " + CommonFenceConstant.STATUS_ROLLBACKED + " , " + CommonFenceConstant.STATUS_SUSPENDED + ")"; public static String getInsertLocalTCCLogSQL(String localTccTable) { return INSERT_LOCAL_TCC_LOG.replace(LOCAL_TCC_LOG_PLACEHOLD, localTccTable); @@ -115,4 +115,4 @@ public static String getDeleteSQLByDateAndStatus(String localTccTable) { return DELETE_BY_DATE_AND_STATUS.replace(LOCAL_TCC_LOG_PLACEHOLD, localTccTable); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionContextFilter.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionContextFilter.java similarity index 95% rename from tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionContextFilter.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionContextFilter.java index 32a6f492161..60f64fffc8c 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionContextFilter.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionContextFilter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.interceptor; +package io.seata.integration.tx.api.interceptor; import io.seata.rm.tcc.api.BusinessActionContextParameter; diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionContextUtil.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionContextUtil.java similarity index 97% rename from tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionContextUtil.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionContextUtil.java index 8b50b52bce9..cf0ca183cbb 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionContextUtil.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionContextUtil.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.interceptor; +package io.seata.integration.tx.api.interceptor; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.lang.reflect.Field; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import com.alibaba.fastjson.JSON; import io.seata.common.exception.FrameworkException; import io.seata.common.util.CollectionUtils; import io.seata.common.util.ReflectionUtil; import io.seata.common.util.StringUtils; +import io.seata.integration.tx.api.util.JsonUtil; import io.seata.rm.tcc.api.BusinessActionContext; import io.seata.rm.tcc.api.BusinessActionContextParameter; import io.seata.rm.tcc.api.ParamType; @@ -247,7 +247,7 @@ public static Object handleActionContext(@Nonnull Object actionContext) { || actionContext instanceof Character) { return actionContext; } else { - return JSON.toJSONString(actionContext); + return JsonUtil.toJSONString(actionContext); } } @@ -283,9 +283,9 @@ public static T convertActionContext(String key, @Nullable Object value, @No // JSON to Object try { if (value instanceof CharSequence || value instanceof Character) { - return JSON.parseObject(value.toString(), targetClazz); + return JsonUtil.parseObject(value.toString(), targetClazz); } else { - return JSON.parseObject(JSON.toJSONString(value), targetClazz); + return JsonUtil.parseObject(JsonUtil.toJSONString(value), targetClazz); } } catch (RuntimeException e) { String errorMsg = String.format("Failed to convert the action context with key '%s' from '%s' to '%s'.", diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionInterceptorHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionInterceptorHandler.java similarity index 75% rename from tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionInterceptorHandler.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionInterceptorHandler.java index 3fdec847b63..1f850f564f1 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/interceptor/ActionInterceptorHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/ActionInterceptorHandler.java @@ -13,17 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.interceptor; +package io.seata.integration.tx.api.interceptor; +import javax.annotation.Nonnull; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.lang.reflect.UndeclaredThrowableException; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import javax.annotation.Nonnull; -import com.alibaba.fastjson.JSON; import io.seata.common.Constants; import io.seata.common.exception.FrameworkException; import io.seata.common.exception.SkipCallbackWrapperException; @@ -31,20 +30,19 @@ import io.seata.common.util.CollectionUtils; import io.seata.common.util.NetUtil; import io.seata.core.context.RootContext; -import io.seata.core.model.BranchType; +import io.seata.integration.tx.api.fence.DefaultCommonFenceHandler; +import io.seata.integration.tx.api.util.JsonUtil; import io.seata.rm.DefaultResourceManager; -import io.seata.rm.tcc.TCCFenceHandler; import io.seata.rm.tcc.api.BusinessActionContext; import io.seata.rm.tcc.api.BusinessActionContextParameter; import io.seata.rm.tcc.api.BusinessActionContextUtil; import io.seata.rm.tcc.api.ParamType; -import io.seata.rm.tcc.api.TwoPhaseBusinessAction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; /** - * Handler the TCC Participant Aspect : Setting Context, Creating Branch Record + * Handler the Tx Participant Aspect : Setting Context, Creating Branch Record * * @author zhangsen */ @@ -53,31 +51,33 @@ public class ActionInterceptorHandler { private static final Logger LOGGER = LoggerFactory.getLogger(ActionInterceptorHandler.class); /** - * Handler the TCC Aspect + * Handler the Tx Aspect * - * @param method the method - * @param arguments the arguments - * @param xid the xid - * @param businessAction the business action - * @param targetCallback the target callback + * @param method the method + * @param arguments the arguments + * @param xid the xid + * @param businessActionParam the business action params + * @param targetCallback the target callback * @return the business result * @throws Throwable the throwable */ - public Object proceed(Method method, Object[] arguments, String xid, TwoPhaseBusinessAction businessAction, - Callback targetCallback) throws Throwable { + public Object proceed(Method method, Object[] arguments, String xid, TwoPhaseBusinessActionParam businessActionParam, + Callback targetCallback) throws Throwable { //Get action context from arguments, or create a new one and then reset to arguments BusinessActionContext actionContext = getOrCreateActionContextAndResetToArguments(method.getParameterTypes(), arguments); //Set the xid actionContext.setXid(xid); //Set the action name - String actionName = businessAction.name(); + String actionName = businessActionParam.getActionName(); actionContext.setActionName(actionName); //Set the delay report - actionContext.setDelayReport(businessAction.isDelayReport()); + actionContext.setDelayReport(businessActionParam.getDelayReport()); + //Set branch type + actionContext.setBranchType(businessActionParam.getBranchType()); //Creating Branch Record - String branchId = doTccActionLogStore(method, arguments, businessAction, actionContext); + String branchId = doTxActionLogStore(method, arguments, businessActionParam, actionContext); actionContext.setBranchId(branchId); //MDC put branchId MDC.put(RootContext.MDC_KEY_BRANCH_ID, branchId); @@ -88,14 +88,14 @@ public Object proceed(Method method, Object[] arguments, String xid, TwoPhaseBus //share actionContext implicitly BusinessActionContextUtil.setContext(actionContext); - if (businessAction.useTCCFence()) { + if (businessActionParam.getUseCommonFence()) { try { - // Use TCC Fence, and return the business result - return TCCFenceHandler.prepareFence(xid, Long.valueOf(branchId), actionName, targetCallback); + // Use common Fence, and return the business result + return DefaultCommonFenceHandler.get().prepareFence(xid, Long.valueOf(branchId), actionName, targetCallback); } catch (SkipCallbackWrapperException | UndeclaredThrowableException e) { Throwable originException = e.getCause(); if (originException instanceof FrameworkException) { - LOGGER.error("[{}] prepare TCC fence error: {}", xid, originException.getMessage()); + LOGGER.error("[{}] prepare common fence error: {}", xid, originException.getMessage()); } throw originException; } @@ -135,7 +135,7 @@ protected BusinessActionContext getOrCreateActionContextAndResetToArguments(Clas int argIndex = 0; for (Class parameterType : parameterTypes) { if (BusinessActionContext.class.isAssignableFrom(parameterType)) { - actionContext = (BusinessActionContext)arguments[argIndex]; + actionContext = (BusinessActionContext) arguments[argIndex]; if (actionContext == null) { // If the action context exists in arguments but is null, create a new one and reset the action context to the arguments actionContext = new BusinessActionContext(); @@ -159,14 +159,14 @@ protected BusinessActionContext getOrCreateActionContextAndResetToArguments(Clas /** * Creating Branch Record * - * @param method the method - * @param arguments the arguments - * @param businessAction the business action - * @param actionContext the action context + * @param method the method + * @param arguments the arguments + * @param businessActionParam the business action param + * @param actionContext the action context * @return the branchId */ - protected String doTccActionLogStore(Method method, Object[] arguments, TwoPhaseBusinessAction businessAction, - BusinessActionContext actionContext) { + protected String doTxActionLogStore(Method method, Object[] arguments, TwoPhaseBusinessActionParam businessActionParam, + BusinessActionContext actionContext) { String actionName = actionContext.getActionName(); String xid = actionContext.getXid(); @@ -176,7 +176,7 @@ protected String doTccActionLogStore(Method method, Object[] arguments, TwoPhase context.put(Constants.ACTION_START_TIME, System.currentTimeMillis()); //Init business context - initBusinessContext(context, method, businessAction); + initBusinessContext(context, method, businessActionParam.getBusinessActionContext()); //Init running environment context initFrameworkContext(context); @@ -193,15 +193,15 @@ protected String doTccActionLogStore(Method method, Object[] arguments, TwoPhase //endregion //Init applicationData - Map applicationContext = Collections.singletonMap(Constants.TCC_ACTION_CONTEXT, context); - String applicationContextStr = JSON.toJSONString(applicationContext); + Map applicationContext = Collections.singletonMap(Constants.TX_ACTION_CONTEXT, context); + String applicationContextStr = JsonUtil.toJSONString(applicationContext); try { //registry branch record - Long branchId = DefaultResourceManager.get().branchRegister(BranchType.TCC, actionName, null, xid, + Long branchId = DefaultResourceManager.get().branchRegister(businessActionParam.getBranchType(), actionName, null, xid, applicationContextStr, null); return String.valueOf(branchId); } catch (Throwable t) { - String msg = String.format("TCC branch Register error, xid: %s", xid); + String msg = String.format("%s branch Register error, xid: %s", businessActionParam.getBranchType(), xid); LOGGER.error(msg, t); throw new FrameworkException(t, msg); } @@ -223,22 +223,19 @@ protected void initFrameworkContext(Map context) { /** * Init business context * - * @param context the context - * @param method the method - * @param businessAction the business action + * @param context the context + * @param method the method + * @param businessActionContext the business action map */ protected void initBusinessContext(Map context, Method method, - TwoPhaseBusinessAction businessAction) { + Map businessActionContext) { if (method != null) { //the phase one method name context.put(Constants.PREPARE_METHOD, method.getName()); } - if (businessAction != null) { + if (businessActionContext != null && businessActionContext.size() > 0) { //the phase two method name - context.put(Constants.COMMIT_METHOD, businessAction.commitMethod()); - context.put(Constants.ROLLBACK_METHOD, businessAction.rollbackMethod()); - context.put(Constants.ACTION_NAME, businessAction.name()); - context.put(Constants.USE_TCC_FENCE, businessAction.useTCCFence()); + context.putAll(businessActionContext); } } @@ -257,7 +254,7 @@ protected Map fetchActionRequestContext(Method method, Object[] for (int j = 0; j < parameterAnnotations[i].length; j++) { if (parameterAnnotations[i][j] instanceof BusinessActionContextParameter) { // get annotation - BusinessActionContextParameter annotation = (BusinessActionContextParameter)parameterAnnotations[i][j]; + BusinessActionContextParameter annotation = (BusinessActionContextParameter) parameterAnnotations[i][j]; if (arguments[i] == null) { throw new IllegalArgumentException("@BusinessActionContextParameter 's params can not null"); } @@ -275,4 +272,5 @@ protected Map fetchActionRequestContext(Method method, Object[] } return context; } -} + +} \ No newline at end of file diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java new file mode 100644 index 00000000000..a6bef4e6eeb --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java @@ -0,0 +1,65 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor; + +import java.lang.reflect.Method; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class DefaultInvocationWrapper implements InvocationWrapper { + private Object proxy; + private Object delegate; + private Method method; + private Object[] args; + + public DefaultInvocationWrapper(Object proxy, Object delegate, Method method, Object[] args) { + this.proxy = proxy; + this.delegate = delegate; + this.method = method; + this.args = args; + } + + @Override + public Method getMethod() { + return method; + } + + @Override + public Object getProxy() { + return proxy; + } + + @Override + public Object getTarget() { + return delegate; + } + + @Override + public Object[] getArguments() { + return args; + } + + @Override + public Object proceed() { + try { + return method.invoke(delegate, args); + } catch (Throwable t) { + throw new RuntimeException(t); + } + } +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java new file mode 100644 index 00000000000..c7ca1a74190 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor; + +import java.lang.reflect.Method; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public interface InvocationWrapper { + + Method getMethod(); + + Object getProxy(); + + Object getTarget(); + + Object[] getArguments(); + + Object proceed(); + + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TwoPhaseBusinessActionParam.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TwoPhaseBusinessActionParam.java new file mode 100644 index 00000000000..4f0eb0e4ac5 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TwoPhaseBusinessActionParam.java @@ -0,0 +1,78 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor; + +import io.seata.core.model.BranchType; + +import java.util.Map; + +/** + * The two phase business action parameters. + * + * @author ruishansun + */ +public class TwoPhaseBusinessActionParam { + + private String actionName; + + private Boolean isDelayReport; + + private Boolean useCommonFence; + + private Map businessActionContext; + + private BranchType branchType; + + public String getActionName() { + return actionName; + } + + public void setActionName(String actionName) { + this.actionName = actionName; + } + + public Boolean getDelayReport() { + return isDelayReport; + } + + public void setDelayReport(Boolean delayReport) { + isDelayReport = delayReport; + } + + public Boolean getUseCommonFence() { + return useCommonFence; + } + + public void setUseCommonFence(Boolean useCommonFence) { + this.useCommonFence = useCommonFence; + } + + public Map getBusinessActionContext() { + return businessActionContext; + } + + public void setBusinessActionContext(Map businessActionContext) { + this.businessActionContext = businessActionContext; + } + + public BranchType getBranchType() { + return branchType; + } + + public void setBranchType(BranchType branchType) { + this.branchType = branchType; + } +} \ No newline at end of file diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TxBeanParserUtils.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TxBeanParserUtils.java new file mode 100644 index 00000000000..3824a67a53d --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/TxBeanParserUtils.java @@ -0,0 +1,69 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor; + +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.RemotingParser; +import io.seata.integration.tx.api.remoting.parser.DefaultRemotingParser; + +/** + * parser transaction bean + * + * @author zhangsen + */ +public class TxBeanParserUtils { + + private TxBeanParserUtils() { + } + + /** + * is auto proxy transaction bean + * + * @param bean the bean + * @param beanName the bean name + * @return boolean boolean + */ + public static boolean isTxRemotingBean(Object bean, String beanName) { + return parserRemotingServiceInfo(bean, beanName); + } + + + /** + * get remoting bean info: sofa:service, sofa:reference, dubbo:reference, dubbo:service + * + * @param bean the bean + * @param beanName the bean name + * @return if sofa:service, sofa:reference, dubbo:reference, dubbo:service return true, else return false + */ + public static boolean parserRemotingServiceInfo(Object bean, String beanName) { + RemotingParser remotingParser = DefaultRemotingParser.get().isRemoting(bean, beanName); + if (remotingParser != null) { + return DefaultRemotingParser.get().parserRemotingServiceInfo(bean, beanName, remotingParser) != null; + } + return false; + } + + /** + * get the remoting description of Tx bean + * + * @param beanName the bean name + * @return remoting desc + */ + public static RemotingDesc getRemotingDesc(String beanName) { + return DefaultRemotingParser.get().getRemotingBeanDesc(beanName); + } + +} \ No newline at end of file diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java new file mode 100644 index 00000000000..bc2adb4be1f --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.handler; + +import io.seata.common.util.CollectionUtils; +import io.seata.integration.tx.api.interceptor.InvocationWrapper; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public abstract class AbstractProxyInvocationHandler implements ProxyInvocationHandler { + + protected abstract Object doInvoke(InvocationWrapper invocation) throws Throwable; + + @Override + public Object invoke(InvocationWrapper invocation) throws Throwable { + if (CollectionUtils.isNotEmpty(getMethodsToProxy()) && !getMethodsToProxy().contains(invocation.getMethod().getName())) { + return invocation.proceed(); + } + return doInvoke(invocation); + } + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java new file mode 100644 index 00000000000..0784a5be100 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java @@ -0,0 +1,56 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.handler; + +import io.seata.integration.tx.api.interceptor.DefaultInvocationWrapper; +import io.seata.integration.tx.api.interceptor.InvocationWrapper; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class DefaultInvocationHandler implements InvocationHandler { + + private ProxyInvocationHandler proxyInvocationHandler; + private Object delegate; + + public DefaultInvocationHandler(ProxyInvocationHandler proxyInvocationHandler, Object delegate) { + this.proxyInvocationHandler = proxyInvocationHandler; + this.delegate = delegate; + } + + /** + * Dynamic proxy calls methods + * + * @param proxy The generated proxy object + * @param method Method of agency + * @param args Method parameter + */ + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + InvocationWrapper invocation = new DefaultInvocationWrapper(proxy, delegate, method, args); + Object result; + if (proxyInvocationHandler != null) { + result = proxyInvocationHandler.invoke(invocation); + } else { + result = invocation.proceed(); + } + return result; + } +} diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java similarity index 73% rename from spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java index 7bc8609ecad..525d4c9392b 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionalInterceptor.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; +package io.seata.integration.tx.api.interceptor.handler; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -35,63 +35,63 @@ import io.seata.core.event.EventBus; import io.seata.core.event.GuavaEventBus; import io.seata.core.model.GlobalLockConfig; +import io.seata.integration.tx.api.annotation.AspectTransactional; +import io.seata.integration.tx.api.event.DegradeCheckEvent; +import io.seata.integration.tx.api.interceptor.InvocationWrapper; import io.seata.rm.GlobalLockExecutor; import io.seata.rm.GlobalLockTemplate; -import io.seata.spring.event.DegradeCheckEvent; +import io.seata.spring.annotation.GlobalLock; +import io.seata.spring.annotation.GlobalTransactional; import io.seata.tm.TransactionManagerHolder; -import io.seata.tm.api.DefaultFailureHandlerImpl; import io.seata.tm.api.FailureHandler; +import io.seata.tm.api.FailureHandlerHolder; import io.seata.tm.api.TransactionalExecutor; import io.seata.tm.api.TransactionalTemplate; import io.seata.tm.api.transaction.NoRollbackRule; import io.seata.tm.api.transaction.RollbackRule; import io.seata.tm.api.transaction.TransactionInfo; - -import com.google.common.eventbus.Subscribe; -import org.aopalliance.intercept.MethodInterceptor; -import org.aopalliance.intercept.MethodInvocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.aop.support.AopUtils; -import org.springframework.core.BridgeMethodResolver; -import org.springframework.util.ClassUtils; import static io.seata.common.DefaultValues.DEFAULT_DISABLE_GLOBAL_TRANSACTION; import static io.seata.common.DefaultValues.DEFAULT_GLOBAL_TRANSACTION_TIMEOUT; import static io.seata.common.DefaultValues.DEFAULT_TM_DEGRADE_CHECK; import static io.seata.common.DefaultValues.DEFAULT_TM_DEGRADE_CHECK_ALLOW_TIMES; import static io.seata.common.DefaultValues.DEFAULT_TM_DEGRADE_CHECK_PERIOD; -import static io.seata.common.DefaultValues.TM_INTERCEPTOR_ORDER; + /** - * The type Global transactional interceptor. + * The type Global transactional interceptor handler. * * @author slievrly + * @author leezongjie */ -public class GlobalTransactionalInterceptor implements ConfigurationChangeListener, MethodInterceptor, SeataInterceptor { +public class GlobalTransactionalInterceptorHandler extends AbstractProxyInvocationHandler implements ConfigurationChangeListener { - private static final Logger LOGGER = LoggerFactory.getLogger(GlobalTransactionalInterceptor.class); - private static final FailureHandler DEFAULT_FAIL_HANDLER = new DefaultFailureHandlerImpl(); + private static final Logger LOGGER = LoggerFactory.getLogger(GlobalTransactionalInterceptorHandler.class); private final TransactionalTemplate transactionalTemplate = new TransactionalTemplate(); private final GlobalLockTemplate globalLockTemplate = new GlobalLockTemplate(); - private final FailureHandler failureHandler; + + private Set methodsToProxy; + private volatile boolean disable; - private int order; - protected AspectTransactional aspectTransactional; - private static int degradeCheckPeriod; private static final AtomicBoolean ATOMIC_DEGRADE_CHECK = new AtomicBoolean(false); - private static int degradeCheckAllowTimes; private static volatile Integer degradeNum = 0; private static volatile Integer reachNum = 0; - private static final EventBus EVENT_BUS = new GuavaEventBus("degradeCheckEventBus", true); - private static volatile ScheduledThreadPoolExecutor executor; - //region DEFAULT_GLOBAL_TRANSACTION_TIMEOUT + private static int degradeCheckAllowTimes; + protected AspectTransactional aspectTransactional; + private static int degradeCheckPeriod; private static int defaultGlobalTransactionTimeout = 0; + private final FailureHandler failureHandler; + + private static final EventBus EVENT_BUS = new GuavaEventBus("degradeCheckEventBus", true); + private static volatile ScheduledThreadPoolExecutor executor; + private void initDefaultGlobalTransactionTimeout() { - if (GlobalTransactionalInterceptor.defaultGlobalTransactionTimeout <= 0) { + if (GlobalTransactionalInterceptorHandler.defaultGlobalTransactionTimeout <= 0) { int defaultGlobalTransactionTimeout; try { defaultGlobalTransactionTimeout = ConfigurationFactory.getInstance().getInt( @@ -105,30 +105,18 @@ private void initDefaultGlobalTransactionTimeout() { defaultGlobalTransactionTimeout, DEFAULT_GLOBAL_TRANSACTION_TIMEOUT); defaultGlobalTransactionTimeout = DEFAULT_GLOBAL_TRANSACTION_TIMEOUT; } - GlobalTransactionalInterceptor.defaultGlobalTransactionTimeout = defaultGlobalTransactionTimeout; + GlobalTransactionalInterceptorHandler.defaultGlobalTransactionTimeout = defaultGlobalTransactionTimeout; } } - public GlobalTransactionalInterceptor() { - this(null); - } - - //endregion - - /** - * Instantiates a new Global transactional interceptor. - * - * @param failureHandler - * the failure handler - */ - public GlobalTransactionalInterceptor(FailureHandler failureHandler) { - this.failureHandler = failureHandler == null ? DEFAULT_FAIL_HANDLER : failureHandler; + public GlobalTransactionalInterceptorHandler(FailureHandler failureHandler, Set methodsToProxy) { + this.failureHandler = failureHandler == null ? FailureHandlerHolder.getFailureHandler() : failureHandler; + this.methodsToProxy = methodsToProxy; this.disable = ConfigurationFactory.getInstance().getBoolean(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, - DEFAULT_DISABLE_GLOBAL_TRANSACTION); - this.order = - ConfigurationFactory.getInstance().getInt(ConfigurationKeys.TM_INTERCEPTOR_ORDER, TM_INTERCEPTOR_ORDER); + DEFAULT_DISABLE_GLOBAL_TRANSACTION); + boolean degradeCheck = ConfigurationFactory.getInstance().getBoolean(ConfigurationKeys.CLIENT_DEGRADE_CHECK, - DEFAULT_TM_DEGRADE_CHECK); + DEFAULT_TM_DEGRADE_CHECK); degradeCheckPeriod = ConfigurationFactory.getInstance() .getInt(ConfigurationKeys.CLIENT_DEGRADE_CHECK_PERIOD, DEFAULT_TM_DEGRADE_CHECK_PERIOD); degradeCheckAllowTimes = ConfigurationFactory.getInstance() @@ -141,15 +129,23 @@ public GlobalTransactionalInterceptor(FailureHandler failureHandler) { this.initDefaultGlobalTransactionTimeout(); } + public GlobalTransactionalInterceptorHandler(FailureHandler failureHandler, Set methodsToProxy, AspectTransactional aspectTransactional) { + this(failureHandler, methodsToProxy); + this.aspectTransactional = aspectTransactional; + } + + @Override + public Set getMethodsToProxy() { + return methodsToProxy; + } + @Override - public Object invoke(final MethodInvocation methodInvocation) throws Throwable { - Class targetClass = - methodInvocation.getThis() != null ? AopUtils.getTargetClass(methodInvocation.getThis()) : null; - Method specificMethod = ClassUtils.getMostSpecificMethod(methodInvocation.getMethod(), targetClass); + protected Object doInvoke(InvocationWrapper invocation) throws Throwable { + Class targetClass = invocation.getTarget().getClass(); + Method specificMethod = invocation.getMethod(); if (specificMethod != null && !specificMethod.getDeclaringClass().equals(Object.class)) { - final Method method = BridgeMethodResolver.findBridgedMethod(specificMethod); - final GlobalTransactional globalTransactionalAnnotation = - getAnnotation(method, targetClass, GlobalTransactional.class); + final Method method = invocation.getMethod(); + final GlobalTransactional globalTransactionalAnnotation = getAnnotation(method, targetClass, GlobalTransactional.class); final GlobalLock globalLockAnnotation = getAnnotation(method, targetClass, GlobalLock.class); boolean localDisable = disable || (ATOMIC_DEGRADE_CHECK.get() && degradeNum >= degradeCheckAllowTimes); if (!localDisable) { @@ -157,27 +153,28 @@ public Object invoke(final MethodInvocation methodInvocation) throws Throwable { AspectTransactional transactional; if (globalTransactionalAnnotation != null) { transactional = new AspectTransactional(globalTransactionalAnnotation.timeoutMills(), - globalTransactionalAnnotation.name(), globalTransactionalAnnotation.rollbackFor(), - globalTransactionalAnnotation.rollbackForClassName(), - globalTransactionalAnnotation.noRollbackFor(), - globalTransactionalAnnotation.noRollbackForClassName(), - globalTransactionalAnnotation.propagation(), - globalTransactionalAnnotation.lockRetryInterval(), - globalTransactionalAnnotation.lockRetryTimes(), - globalTransactionalAnnotation.lockStrategyMode()); + globalTransactionalAnnotation.name(), globalTransactionalAnnotation.rollbackFor(), + globalTransactionalAnnotation.rollbackForClassName(), + globalTransactionalAnnotation.noRollbackFor(), + globalTransactionalAnnotation.noRollbackForClassName(), + globalTransactionalAnnotation.propagation(), + globalTransactionalAnnotation.lockRetryInterval(), + globalTransactionalAnnotation.lockRetryTimes(), + globalTransactionalAnnotation.lockStrategyMode()); } else { transactional = this.aspectTransactional; } - return handleGlobalTransaction(methodInvocation, transactional); + return handleGlobalTransaction(invocation, transactional); } else if (globalLockAnnotation != null) { - return handleGlobalLock(methodInvocation, globalLockAnnotation); + return handleGlobalLock(invocation, globalLockAnnotation); } } } - return methodInvocation.proceed(); + return invocation.proceed(); } - private Object handleGlobalLock(final MethodInvocation methodInvocation, final GlobalLock globalLockAnno) throws Throwable { + + private Object handleGlobalLock(final InvocationWrapper methodInvocation, final GlobalLock globalLockAnno) throws Throwable { return globalLockTemplate.execute(new GlobalLockExecutor() { @Override public Object execute() throws Throwable { @@ -194,8 +191,8 @@ public GlobalLockConfig getGlobalLockConfig() { }); } - Object handleGlobalTransaction(final MethodInvocation methodInvocation, - final AspectTransactional aspectTransactional) throws Throwable { + Object handleGlobalTransaction(final InvocationWrapper methodInvocation, + final AspectTransactional aspectTransactional) throws Throwable { boolean succeed = true; try { return transactionalTemplate.execute(new TransactionalExecutor() { @@ -277,9 +274,10 @@ public TransactionInfo getTransactionInfo() { } } + public T getAnnotation(Method method, Class targetClass, Class annotationClass) { return Optional.ofNullable(method).map(m -> m.getAnnotation(annotationClass)) - .orElse(Optional.ofNullable(targetClass).map(t -> t.getAnnotation(annotationClass)).orElse(null)); + .orElse(Optional.ofNullable(targetClass).map(t -> t.getAnnotation(annotationClass)).orElse(null)); } private String formatMethod(Method method) { @@ -348,48 +346,4 @@ private static void startDegradeCheck() { } }, degradeCheckPeriod, degradeCheckPeriod, TimeUnit.MILLISECONDS); } - - @Subscribe - public static void onDegradeCheck(DegradeCheckEvent event) { - if (event.isRequestSuccess()) { - if (degradeNum >= degradeCheckAllowTimes) { - reachNum++; - if (reachNum >= degradeCheckAllowTimes) { - reachNum = 0; - degradeNum = 0; - if (LOGGER.isInfoEnabled()) { - LOGGER.info("the current global transaction has been restored"); - } - } - } else if (degradeNum != 0) { - degradeNum = 0; - } - } else { - if (degradeNum < degradeCheckAllowTimes) { - degradeNum++; - if (degradeNum >= degradeCheckAllowTimes) { - if (LOGGER.isWarnEnabled()) { - LOGGER.warn("the current global transaction has been automatically downgraded"); - } - } - } else if (reachNum != 0) { - reachNum = 0; - } - } - } - - @Override - public int getOrder() { - return order; - } - - @Override - public void setOrder(int order) { - this.order = order; - } - - @Override - public SeataInterceptorPosition getPosition() { - return SeataInterceptorPosition.BeforeTransaction; - } } diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java new file mode 100644 index 00000000000..cda4754d798 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java @@ -0,0 +1,32 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.handler; + +import java.util.Set; + +import io.seata.integration.tx.api.interceptor.InvocationWrapper; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public interface ProxyInvocationHandler { + + Set getMethodsToProxy(); + + Object invoke(InvocationWrapper invocation) throws Throwable; + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java new file mode 100644 index 00000000000..c47b361e97b --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java @@ -0,0 +1,67 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.common.util.CollectionUtils; +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class DefaultInterfaceParser implements InterfaceParser { + + protected static final List ALL_INTERFACE_PARSERS = new ArrayList<>(); + + + private static class SingletonHolder { + private static final DefaultInterfaceParser INSTANCE = new DefaultInterfaceParser(); + } + + public static DefaultInterfaceParser get() { + return DefaultInterfaceParser.SingletonHolder.INSTANCE; + } + + protected DefaultInterfaceParser() { + initInterfaceParser(); + } + + /** + * init parsers + */ + protected void initInterfaceParser() { + List interfaceParsers = EnhancedServiceLoader.loadAll(InterfaceParser.class); + if (CollectionUtils.isNotEmpty(interfaceParsers)) { + ALL_INTERFACE_PARSERS.addAll(interfaceParsers); + } + } + + @Override + public ProxyInvocationHandler parserInterfaceToProxy(Object target) throws Exception { + for (InterfaceParser interfaceParser : ALL_INTERFACE_PARSERS) { + ProxyInvocationHandler proxyInvocationHandler = interfaceParser.parserInterfaceToProxy(target); + if (proxyInvocationHandler != null) { + return proxyInvocationHandler; + } + } + return null; + } + +} \ No newline at end of file diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java new file mode 100644 index 00000000000..8e9451c2982 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java @@ -0,0 +1,61 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.common.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class DefaultResourceRegisterParser { + + protected static List allRegisterResourceParsers = new ArrayList<>(); + + public void registerResource(Object target) { + for (RegisterResourceParser registerResourceParser : allRegisterResourceParsers) { + registerResourceParser.registerResource(target); + } + } + + private static class SingletonHolder { + private static final DefaultResourceRegisterParser INSTANCE = new DefaultResourceRegisterParser(); + } + + public static DefaultResourceRegisterParser get() { + return DefaultResourceRegisterParser.SingletonHolder.INSTANCE; + } + + protected DefaultResourceRegisterParser() { + initResourceRegisterParser(); + } + + /** + * init parsers + */ + protected void initResourceRegisterParser() { + List registerResourceParsers = EnhancedServiceLoader.loadAll(RegisterResourceParser.class); + if (CollectionUtils.isNotEmpty(registerResourceParsers)) { + allRegisterResourceParsers.addAll(registerResourceParsers); + } + } + + +} \ No newline at end of file diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java new file mode 100644 index 00000000000..502a39138c8 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java @@ -0,0 +1,76 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.common.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public class DefaultTargetClassParser implements TargetClassParser { + + protected static List allTargetClassParsers = new ArrayList<>(); + + + private static class SingletonHolder { + private static final DefaultTargetClassParser INSTANCE = new DefaultTargetClassParser(); + } + + public static DefaultTargetClassParser get() { + return DefaultTargetClassParser.SingletonHolder.INSTANCE; + } + + protected DefaultTargetClassParser() { + initTargetClassParser(); + } + + /** + * init parsers + */ + protected void initTargetClassParser() { + List targetClassParsers = EnhancedServiceLoader.loadAll(TargetClassParser.class); + if (CollectionUtils.isNotEmpty(targetClassParsers)) { + allTargetClassParsers.addAll(targetClassParsers); + } + } + + @Override + public Class findTargetClass(Object target) throws Exception { + for (TargetClassParser targetClassParser : allTargetClassParsers) { + Class result = targetClassParser.findTargetClass(target); + if (result != null) { + return result; + } + } + return target.getClass(); + } + + @Override + public Class[] findInterfaces(Object target) throws Exception { + for (TargetClassParser targetClassParser : allTargetClassParsers) { + Class[] result = targetClassParser.findInterfaces(target); + if (result != null) { + return result; + } + } + return target.getClass().getInterfaces(); + } +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java new file mode 100644 index 00000000000..7c19e07020b --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java @@ -0,0 +1,92 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; + +import io.seata.common.ConfigurationKeys; +import io.seata.common.util.CollectionUtils; +import io.seata.config.ConfigurationCache; +import io.seata.config.ConfigurationChangeListener; +import io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler; +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import io.seata.spring.annotation.GlobalLock; +import io.seata.spring.annotation.GlobalTransactional; +import io.seata.tm.api.FailureHandlerHolder; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class GlobalTransactionalInterceptorParser implements InterfaceParser { + + private final Set methodsToProxy = new HashSet<>(); + + /** + * @param target + * @return + * @throws Exception + * @see GlobalTransactional // TM annotation + *

+ * GlobalLock: + * @see GlobalLock // GlobalLock annotation + */ + @Override + public ProxyInvocationHandler parserInterfaceToProxy(Object target) throws Exception { + Class serviceInterface = DefaultTargetClassParser.get().findTargetClass(target); + Class[] interfacesIfJdk = DefaultTargetClassParser.get().findInterfaces(target); + + if (existsAnnotation(serviceInterface) || existsAnnotation(interfacesIfJdk)) { + ProxyInvocationHandler proxyInvocationHandler = new GlobalTransactionalInterceptorHandler(FailureHandlerHolder.getFailureHandler(), methodsToProxy); + ConfigurationCache.addConfigListener(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, (ConfigurationChangeListener) proxyInvocationHandler); + return proxyInvocationHandler; + } + + return null; + } + + private boolean existsAnnotation(Class... classes) { + boolean result = false; + if (CollectionUtils.isNotEmpty(classes)) { + for (Class clazz : classes) { + if (clazz == null) { + continue; + } + GlobalTransactional trxAnno = clazz.getAnnotation(GlobalTransactional.class); + if (trxAnno != null) { + return true; + } + Method[] methods = clazz.getMethods(); + for (Method method : methods) { + trxAnno = method.getAnnotation(GlobalTransactional.class); + if (trxAnno != null) { + methodsToProxy.add(method.getName()); + result = true; + } + + GlobalLock lockAnno = method.getAnnotation(GlobalLock.class); + if (lockAnno != null) { + methodsToProxy.add(method.getName()); + result = true; + } + } + } + } + return result; + } +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java new file mode 100644 index 00000000000..c7f4ce84e1f --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java @@ -0,0 +1,29 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public interface InterfaceParser { + + ProxyInvocationHandler parserInterfaceToProxy(Object target) throws Exception; + + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java new file mode 100644 index 00000000000..9faf017e6d5 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java @@ -0,0 +1,26 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public interface RegisterResourceParser { + + void registerResource(Object target); + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java new file mode 100644 index 00000000000..c011f2a6bcd --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java @@ -0,0 +1,28 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public interface TargetClassParser { + + Class findTargetClass(Object target) throws Exception; + + Class[] findInterfaces(Object target) throws Exception; + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java new file mode 100644 index 00000000000..cc5a450538a --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java @@ -0,0 +1,76 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.json; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.common.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +/** + * @author leezongjie + * @date 2023/1/13 + */ +public class DefaultJsonParser implements JsonParser { + + protected static List allJsonParsers = new ArrayList<>(); + + private static class SingletonHolder { + private static final DefaultJsonParser INSTANCE = new DefaultJsonParser(); + } + + private DefaultJsonParser() { + initJsonParser(); + } + + public static DefaultJsonParser get() { + return DefaultJsonParser.SingletonHolder.INSTANCE; + } + + private void initJsonParser() { + List jsonParsers = EnhancedServiceLoader.loadAll(JsonParser.class); + if (CollectionUtils.isNotEmpty(jsonParsers)) { + allJsonParsers.addAll(jsonParsers); + } + Collections.sort(allJsonParsers, Comparator.comparingInt(JsonParser::order)); + } + + @Override + public String toJSONString(Object object) { + for (JsonParser jsonParser : allJsonParsers) { + String result = jsonParser.toJSONString(object); + if (result != null) { + return result; + } + } + return null; + } + + @Override + public T parseObject(String text, Class clazz) { + for (JsonParser jsonParser : allJsonParsers) { + T result = jsonParser.parseObject(text, clazz); + if (result != null) { + return result; + } + } + return null; + } + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java new file mode 100644 index 00000000000..bb812285a11 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java @@ -0,0 +1,32 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.json; + +/** + * @author leezongjie + * @date 2023/1/13 + */ +public interface JsonParser { + + String toJSONString(Object object); + + T parseObject(String text, Class clazz); + + default int order() { + return 0; + } + +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/Protocols.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/Protocols.java similarity index 95% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/Protocols.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/Protocols.java index 3d38f71e82a..8751af079bb 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/Protocols.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/Protocols.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting; +package io.seata.integration.tx.api.remoting; /** * remoting protocols enum diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/RemotingDesc.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/RemotingDesc.java similarity index 89% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/RemotingDesc.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/RemotingDesc.java index 73b97c97ca9..6e9ba588d67 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/RemotingDesc.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/RemotingDesc.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting; +package io.seata.integration.tx.api.remoting; /** * remoting bean info @@ -27,6 +27,11 @@ public class RemotingDesc { */ private boolean isReference = false; + /** + * is service bean ? + */ + private boolean isService = false; + /** * rpc target bean, the service bean has this property */ @@ -183,4 +188,20 @@ public void setReference(boolean reference) { isReference = reference; } -} + /** + * Is service boolean. + * + * @return the boolean + */ + public boolean isService() { + return isService; + } + + /** + * Sets service. + * @param service the service + */ + public void setService(boolean service) { + isService = service; + } +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/RemotingParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/RemotingParser.java similarity index 97% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/RemotingParser.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/RemotingParser.java index 2ff32ca4980..4d65ca8362b 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/RemotingParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/RemotingParser.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting; +package io.seata.integration.tx.api.remoting; import io.seata.common.exception.FrameworkException; diff --git a/tcc/src/main/java/io/seata/rm/tcc/TwoPhaseResult.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/TwoPhaseResult.java similarity index 97% rename from tcc/src/main/java/io/seata/rm/tcc/TwoPhaseResult.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/TwoPhaseResult.java index 54b4c3139ee..91f5ac43df5 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/TwoPhaseResult.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/TwoPhaseResult.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc; +package io.seata.integration.tx.api.remoting; import io.seata.common.util.StringUtils; @@ -92,4 +92,4 @@ public String toString() { sb.append("]"); return sb.toString(); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/AbstractedRemotingParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/AbstractedRemotingParser.java similarity index 89% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/parser/AbstractedRemotingParser.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/AbstractedRemotingParser.java index 153326688ea..497fae5f0c3 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/AbstractedRemotingParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/AbstractedRemotingParser.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.integration.tx.api.remoting.parser; import io.seata.common.exception.FrameworkException; -import io.seata.rm.tcc.remoting.RemotingParser; +import io.seata.integration.tx.api.remoting.RemotingParser; /** * The type Abstracted remoting parser. @@ -31,4 +31,4 @@ public boolean isRemoting(Object bean, String beanName) throws FrameworkExceptio return isReference(bean, beanName) || isService(bean, beanName); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DefaultRemotingParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/DefaultRemotingParser.java similarity index 52% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DefaultRemotingParser.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/DefaultRemotingParser.java index 16c1455a4b3..5b3a28baf94 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DefaultRemotingParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/DefaultRemotingParser.java @@ -13,10 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.integration.tx.api.remoting.parser; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -25,14 +23,8 @@ import io.seata.common.exception.FrameworkException; import io.seata.common.loader.EnhancedServiceLoader; import io.seata.common.util.CollectionUtils; -import io.seata.rm.DefaultResourceManager; -import io.seata.rm.tcc.TCCResource; -import io.seata.rm.tcc.api.BusinessActionContext; -import io.seata.rm.tcc.api.BusinessActionContextParameter; -import io.seata.rm.tcc.api.TwoPhaseBusinessAction; -import io.seata.rm.tcc.interceptor.ActionContextUtil; -import io.seata.rm.tcc.remoting.RemotingDesc; -import io.seata.rm.tcc.remoting.RemotingParser; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.RemotingParser; /** * parsing remoting bean @@ -50,7 +42,7 @@ public class DefaultRemotingParser { /** * all remoting beans beanName -> RemotingDesc */ - protected static Map remotingServiceMap = new ConcurrentHashMap<>(); + protected static Map remotingServiceMap = new ConcurrentHashMap<>(); private static class SingletonHolder { private static final DefaultRemotingParser INSTANCE = new DefaultRemotingParser(); @@ -164,47 +156,14 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) { * @return remoting desc */ public RemotingDesc parserRemotingServiceInfo(Object bean, String beanName, RemotingParser remotingParser) { + if (remotingServiceMap.containsKey(bean)) { + return remotingServiceMap.get(bean); + } RemotingDesc remotingBeanDesc = remotingParser.getServiceDesc(bean, beanName); if (remotingBeanDesc == null) { return null; } - remotingServiceMap.put(beanName, remotingBeanDesc); - - Class serviceClass = remotingBeanDesc.getServiceClass(); - Method[] methods = serviceClass.getMethods(); - if (remotingParser.isService(bean, beanName)) { - try { - //service bean, registry resource - Object targetBean = remotingBeanDesc.getTargetBean(); - for (Method m : methods) { - TwoPhaseBusinessAction twoPhaseBusinessAction = m.getAnnotation(TwoPhaseBusinessAction.class); - if (twoPhaseBusinessAction != null) { - TCCResource tccResource = new TCCResource(); - tccResource.setActionName(twoPhaseBusinessAction.name()); - tccResource.setTargetBean(targetBean); - tccResource.setPrepareMethod(m); - tccResource.setCommitMethodName(twoPhaseBusinessAction.commitMethod()); - tccResource.setCommitMethod(serviceClass.getMethod(twoPhaseBusinessAction.commitMethod(), - twoPhaseBusinessAction.commitArgsClasses())); - tccResource.setRollbackMethodName(twoPhaseBusinessAction.rollbackMethod()); - tccResource.setRollbackMethod(serviceClass.getMethod(twoPhaseBusinessAction.rollbackMethod(), - twoPhaseBusinessAction.rollbackArgsClasses())); - // set argsClasses - tccResource.setCommitArgsClasses(twoPhaseBusinessAction.commitArgsClasses()); - tccResource.setRollbackArgsClasses(twoPhaseBusinessAction.rollbackArgsClasses()); - // set phase two method's keys - tccResource.setPhaseTwoCommitKeys(this.getTwoPhaseArgs(tccResource.getCommitMethod(), - twoPhaseBusinessAction.commitArgsClasses())); - tccResource.setPhaseTwoRollbackKeys(this.getTwoPhaseArgs(tccResource.getRollbackMethod(), - twoPhaseBusinessAction.rollbackArgsClasses())); - //registry tcc resource - DefaultResourceManager.get().registerResource(tccResource); - } - } - } catch (Throwable t) { - throw new FrameworkException(t, "parser remoting service error"); - } - } + remotingServiceMap.put(bean, remotingBeanDesc); if (remotingParser.isReference(bean, beanName)) { //reference bean, TCC proxy remotingBeanDesc.setReference(true); @@ -212,40 +171,14 @@ public RemotingDesc parserRemotingServiceInfo(Object bean, String beanName, Remo return remotingBeanDesc; } - protected String[] getTwoPhaseArgs(Method method, Class[] argsClasses) { - Annotation[][] parameterAnnotations = method.getParameterAnnotations(); - String[] keys = new String[parameterAnnotations.length]; - /* - * get parameter's key - * if method's parameter list is like - * (BusinessActionContext, @BusinessActionContextParameter("a") A a, @BusinessActionContextParameter("b") B b) - * the keys will be [null, a, b] - */ - for (int i = 0; i < parameterAnnotations.length; i++) { - for (int j = 0; j < parameterAnnotations[i].length; j++) { - if (parameterAnnotations[i][j] instanceof BusinessActionContextParameter) { - BusinessActionContextParameter param = (BusinessActionContextParameter)parameterAnnotations[i][j]; - String key = ActionContextUtil.getParamNameFromAnnotation(param); - keys[i] = key; - break; - } - } - if (keys[i] == null && !(argsClasses[i].equals(BusinessActionContext.class))) { - throw new IllegalArgumentException("non-BusinessActionContext parameter should use annotation " + - "BusinessActionContextParameter"); - } - } - return keys; - } - /** * Get remoting bean desc remoting desc. * - * @param beanName the bean name + * @param bean the bean * @return the remoting desc */ - public RemotingDesc getRemotingBeanDesc(String beanName) { - return remotingServiceMap.get(beanName); + public RemotingDesc getRemotingBeanDesc(Object bean) { + return remotingServiceMap.get(bean); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DubboRemotingParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/DubboRemotingParser.java similarity index 84% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DubboRemotingParser.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/DubboRemotingParser.java index 8ded4d41ae5..03ebda17b0e 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DubboRemotingParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/DubboRemotingParser.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.integration.tx.api.remoting.parser; import io.seata.common.exception.FrameworkException; import io.seata.common.util.ReflectionUtil; -import io.seata.rm.tcc.remoting.Protocols; -import io.seata.rm.tcc.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.Protocols; +import io.seata.integration.tx.api.remoting.RemotingDesc; /** * dubbo remoting bean parsing @@ -31,14 +31,14 @@ public class DubboRemotingParser extends AbstractedRemotingParser { public boolean isReference(Object bean, String beanName) throws FrameworkException { Class c = bean.getClass(); return "com.alibaba.dubbo.config.spring.ReferenceBean".equals(c.getName()) - || "org.apache.dubbo.config.spring.ReferenceBean".equals(c.getName()); + || "org.apache.dubbo.config.spring.ReferenceBean".equals(c.getName()); } @Override public boolean isService(Object bean, String beanName) throws FrameworkException { Class c = bean.getClass(); return "com.alibaba.dubbo.config.spring.ServiceBean".equals(c.getName()) - || "org.apache.dubbo.config.spring.ServiceBean".equals(c.getName()); + || "org.apache.dubbo.config.spring.ServiceBean".equals(c.getName()); } @Override @@ -61,6 +61,8 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor Object targetBean = ReflectionUtil.getFieldValue(bean, "ref"); serviceBeanDesc.setTargetBean(targetBean); } + serviceBeanDesc.setReference(this.isReference(bean, beanName)); + serviceBeanDesc.setService(this.isService(bean, beanName)); return serviceBeanDesc; } catch (Throwable t) { throw new FrameworkException(t); @@ -71,4 +73,4 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor public short getProtocol() { return Protocols.DUBBO; } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/HSFRemotingParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/HSFRemotingParser.java similarity index 90% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/parser/HSFRemotingParser.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/HSFRemotingParser.java index ae3e7db0f61..995be2d33a3 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/HSFRemotingParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/HSFRemotingParser.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.integration.tx.api.remoting.parser; import io.seata.common.exception.FrameworkException; import io.seata.common.util.ReflectionUtil; -import io.seata.rm.tcc.remoting.Protocols; -import io.seata.rm.tcc.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.Protocols; +import io.seata.integration.tx.api.remoting.RemotingDesc; /** * HSF Remote Bean Parser @@ -85,6 +85,8 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor serviceBeanDesc.setUniqueId(uniqueId); serviceBeanDesc.setGroup(group); serviceBeanDesc.setProtocol(Protocols.HSF); + serviceBeanDesc.setReference(this.isReference(bean, beanName)); + serviceBeanDesc.setService(this.isService(bean, beanName)); return serviceBeanDesc; } else if (isService(bean, beanName)) { Object consumerBean = ReflectionUtil.getFieldValue(bean, "providerBean"); @@ -103,6 +105,8 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor Object targetBean = ReflectionUtil.getFieldValue(metadata, "target"); serviceBeanDesc.setTargetBean(targetBean); serviceBeanDesc.setProtocol(Protocols.HSF); + serviceBeanDesc.setReference(this.isReference(bean, beanName)); + serviceBeanDesc.setService(this.isService(bean, beanName)); return serviceBeanDesc; } } catch (Throwable t) { @@ -116,4 +120,4 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor public short getProtocol() { return Protocols.HSF; } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/SofaRpcRemotingParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/SofaRpcRemotingParser.java similarity index 87% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/parser/SofaRpcRemotingParser.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/SofaRpcRemotingParser.java index 5debae1c3d5..af7af02a898 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/SofaRpcRemotingParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/remoting/parser/SofaRpcRemotingParser.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.integration.tx.api.remoting.parser; import io.seata.common.exception.FrameworkException; import io.seata.common.util.ReflectionUtil; -import io.seata.rm.tcc.remoting.Protocols; -import io.seata.rm.tcc.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.Protocols; +import io.seata.integration.tx.api.remoting.RemotingDesc; /** * sofa-rpc remoting bean parsing @@ -30,7 +30,7 @@ public class SofaRpcRemotingParser extends AbstractedRemotingParser { @Override public boolean isReference(Object bean, String beanName) - throws FrameworkException { + throws FrameworkException { String beanClassName = bean.getClass().getName(); return "com.alipay.sofa.runtime.spring.factory.ReferenceFactoryBean".equals(beanClassName); } @@ -60,6 +60,8 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor Object targetBean = ReflectionUtil.getFieldValue(bean, "ref"); serviceBeanDesc.setTargetBean(targetBean); } + serviceBeanDesc.setReference(this.isReference(bean, beanName)); + serviceBeanDesc.setService(this.isService(bean, beanName)); return serviceBeanDesc; } catch (Throwable t) { throw new FrameworkException(t); @@ -70,4 +72,4 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor public short getProtocol() { return Protocols.SOFA_RPC; } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DubboUtil.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/DubboUtil.java similarity index 98% rename from tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DubboUtil.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/util/DubboUtil.java index c33651ca09b..eb4c381ba11 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/DubboUtil.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/DubboUtil.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.integration.tx.api.util; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java new file mode 100644 index 00000000000..11259637ce9 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java @@ -0,0 +1,34 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.util; + +import io.seata.integration.tx.api.json.DefaultJsonParser; + +/** + * @author leezongjie + * @date 2023/1/13 + */ +public class JsonUtil { + + public static String toJSONString(Object object) { + return DefaultJsonParser.get().toJSONString(object); + } + + public static T parseObject(String text, Class clazz) { + return DefaultJsonParser.get().parseObject(text, clazz); + } + +} diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java new file mode 100644 index 00000000000..86658bd44f0 --- /dev/null +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java @@ -0,0 +1,63 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.util; + +import io.seata.integration.tx.api.interceptor.handler.DefaultInvocationHandler; +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import io.seata.integration.tx.api.interceptor.parser.DefaultInterfaceParser; +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.implementation.InvocationHandlerAdapter; + +import java.util.HashMap; +import java.util.Map; + +import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class ProxyUtil { + + private static final Map PROXYED_SET = new HashMap<>(); + + public static T createProxy(T target) { + try { + synchronized (PROXYED_SET) { + if (PROXYED_SET.containsKey(target)) { + return (T) PROXYED_SET.get(target); + } + ProxyInvocationHandler proxyInvocationHandler = DefaultInterfaceParser.get().parserInterfaceToProxy(target); + if (proxyInvocationHandler == null) { + return target; + } + T proxy = (T) new ByteBuddy().subclass(target.getClass()) + .method(isDeclaredBy(target.getClass())) + .intercept(InvocationHandlerAdapter.of(new DefaultInvocationHandler(proxyInvocationHandler, target))) + .make() + .load(target.getClass().getClassLoader()) + .getLoaded() + .getDeclaredConstructor() + .newInstance(); + PROXYED_SET.put(target, proxy); + return proxy; + } + } catch (Throwable t) { + throw new RuntimeException("error occurs when create seata proxy", t); + } + } + +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java similarity index 92% rename from tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java rename to integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java index f11b3249940..98ddb5f2961 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java +++ b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContext.java @@ -20,7 +20,9 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import io.seata.rm.tcc.interceptor.ActionContextUtil; +import io.seata.core.model.BranchType; +import io.seata.integration.tx.api.interceptor.ActionContextUtil; + /** * The type Business action context. @@ -38,7 +40,7 @@ public class BusinessActionContext implements Serializable { /** * delay branch report while sharing params to tcc phase 2 to enhance performance * - * @see io.seata.rm.tcc.api.BusinessActionContextUtil + * @see BusinessActionContextUtil * @see io.seata.rm.tcc.api.TwoPhaseBusinessAction */ private Boolean isDelayReport; @@ -46,10 +48,15 @@ public class BusinessActionContext implements Serializable { /** * mark that actionContext has been updated by business * - * @see io.seata.rm.tcc.api.BusinessActionContextUtil + * @see BusinessActionContextUtil */ private Boolean isUpdated; + /** + * branch Type + */ + private BranchType branchType; + /** * action context */ @@ -219,6 +226,14 @@ public void setUpdated(Boolean updated) { isUpdated = updated; } + public BranchType getBranchType() { + return branchType; + } + + public void setBranchType(BranchType branchType) { + this.branchType = branchType; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -227,8 +242,9 @@ public String toString() { .append(",action_name:").append(actionName) .append(",is_delay_report:").append(isDelayReport) .append(",is_updated:").append(isDelayReport) + .append(",branch_type:").append(branchType) .append(",action_context:") .append(actionContext).append("]"); return sb.toString(); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java similarity index 85% rename from tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java rename to integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java index 518a7c5dec4..4406b177d04 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java +++ b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContextParameter.java @@ -26,7 +26,7 @@ * add this annotation on the parameters of the try method, and the parameters will be passed to the action context * * @author zhangsen - * @see io.seata.rm.tcc.interceptor.ActionContextUtil + * @see io.seata.spring.interceptor.ActionContextUtil */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.PARAMETER, ElementType.FIELD}) @@ -36,7 +36,7 @@ * parameter's name. Synonym for {@link #paramName()}. * * @return the name of the param or field - * @see io.seata.rm.tcc.interceptor.ActionContextUtil#getParamNameFromAnnotation + * @see io.seata.spring.interceptor.ActionContextUtil#getParamNameFromAnnotation */ String value() default ""; @@ -44,7 +44,7 @@ * parameter's name. Synonym for {@link #value()}. * * @return the name of the param or field - * @see io.seata.rm.tcc.interceptor.ActionContextUtil#getParamNameFromAnnotation + * @see io.seata.spring.interceptor.ActionContextUtil#getParamNameFromAnnotation */ String paramName() default ""; @@ -61,7 +61,7 @@ * Specify the index of the parameter in the List * * @return the index of the List - * @see io.seata.rm.tcc.interceptor.ActionContextUtil#getByIndex + * @see io.seata.spring.interceptor.ActionContextUtil#getByIndex */ int index() default -1; @@ -70,8 +70,8 @@ * if {@code index >= 0}, the object get from the List and then do get the parameter from the property of the object * * @return the boolean - * @see io.seata.rm.tcc.interceptor.ActionContextUtil#loadParamByAnnotationAndPutToContext - * @see io.seata.rm.tcc.interceptor.ActionContextUtil#fetchContextFromObject + * @see io.seata.spring.interceptor.ActionContextUtil#loadParamByAnnotationAndPutToContext + * @see io.seata.spring.interceptor.ActionContextUtil#fetchContextFromObject */ boolean isParamInProperty() default false; -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java similarity index 66% rename from tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java rename to integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java index 3bb0158df9d..65d8933c5bf 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java +++ b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/BusinessActionContextUtil.java @@ -15,21 +15,22 @@ */ package io.seata.rm.tcc.api; -import java.util.Collections; -import java.util.Map; - -import com.alibaba.fastjson.JSON; import io.seata.common.Constants; import io.seata.common.exception.FrameworkException; import io.seata.common.util.CollectionUtils; +import io.seata.common.util.StringUtils; import io.seata.core.exception.TransactionException; import io.seata.core.model.BranchStatus; -import io.seata.core.model.BranchType; +import io.seata.integration.tx.api.interceptor.ActionContextUtil; +import io.seata.integration.tx.api.util.JsonUtil; import io.seata.rm.DefaultResourceManager; -import io.seata.rm.tcc.interceptor.ActionContextUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + /** * the api of sharing business action context to tcc phase 2 * @@ -105,11 +106,11 @@ public static boolean reportContext(BusinessActionContext actionContext) { try { // branch report DefaultResourceManager.get().branchReport( - BranchType.TCC, + actionContext.getBranchType(), actionContext.getXid(), actionContext.getBranchId(), BranchStatus.Registered, - JSON.toJSONString(Collections.singletonMap(Constants.TCC_ACTION_CONTEXT, actionContext.getActionContext())) + JsonUtil.toJSONString(Collections.singletonMap(Constants.TX_ACTION_CONTEXT, actionContext.getActionContext())) ); // reset to un_updated @@ -133,4 +134,43 @@ public static void setContext(BusinessActionContext context) { public static void clear() { CONTEXT_HOLDER.remove(); } -} + + /** + * transfer tcc applicationData to BusinessActionContext + * + * @param xid the xid + * @param branchId the branch id + * @param resourceId the resource id + * @param applicationData the application data + * @return business action context + */ + public static BusinessActionContext getBusinessActionContext(String xid, long branchId, String resourceId, + String applicationData) { + Map actionContextMap = null; + if (StringUtils.isNotBlank(applicationData)) { + Map tccContext = JsonUtil.parseObject(applicationData, Map.class); + actionContextMap = (Map) tccContext.get(Constants.TX_ACTION_CONTEXT); + } + if (actionContextMap == null) { + actionContextMap = new HashMap<>(2); + } + + //instance the action context + BusinessActionContext businessActionContext = new BusinessActionContext( + xid, String.valueOf(branchId), actionContextMap); + businessActionContext.setActionName(resourceId); + return businessActionContext; + } + + public static Object[] getTwoPhaseMethodParams(String[] keys, Class[] argsClasses, BusinessActionContext businessActionContext) { + Object[] args = new Object[argsClasses.length]; + for (int i = 0; i < argsClasses.length; i++) { + if (argsClasses[i].equals(BusinessActionContext.class)) { + args[i] = businessActionContext; + } else { + args[i] = businessActionContext.getActionContext(keys[i], argsClasses[i]); + } + } + return args; + } +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/api/ParamType.java b/integration-tx-api/src/main/java/io/seata/rm/tcc/api/ParamType.java similarity index 100% rename from tcc/src/main/java/io/seata/rm/tcc/api/ParamType.java rename to integration-tx-api/src/main/java/io/seata/rm/tcc/api/ParamType.java diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalLock.java b/integration-tx-api/src/main/java/io/seata/spring/annotation/GlobalLock.java similarity index 83% rename from spring/src/main/java/io/seata/spring/annotation/GlobalLock.java rename to integration-tx-api/src/main/java/io/seata/spring/annotation/GlobalLock.java index 2cd8b3e71e9..561d15a4ccb 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalLock.java +++ b/integration-tx-api/src/main/java/io/seata/spring/annotation/GlobalLock.java @@ -21,8 +21,6 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.aopalliance.intercept.MethodInvocation; -import org.springframework.core.annotation.AliasFor; /** * declare the transaction only execute in single local RM @@ -47,16 +45,6 @@ */ int lockRetryInterval() default 0; - /** - * customized global lock retry interval(unit: ms) - * you may use this to override global config of "client.rm.lock.retryInterval" - * note: 0 or negative number will take no effect(which mean fall back to global config) - * @return lock retry interval - */ - @Deprecated - @AliasFor("lockRetryInterval") - int lockRetryInternal() default 0; - /** * customized global lock retry times * you may use this to override global config of "client.rm.lock.retryTimes" @@ -64,5 +52,4 @@ * @return lock retry times */ int lockRetryTimes() default -1; - } diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactional.java b/integration-tx-api/src/main/java/io/seata/spring/annotation/GlobalTransactional.java similarity index 95% rename from spring/src/main/java/io/seata/spring/annotation/GlobalTransactional.java rename to integration-tx-api/src/main/java/io/seata/spring/annotation/GlobalTransactional.java index 2e1dbd2d9bb..3e80fda88b1 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactional.java +++ b/integration-tx-api/src/main/java/io/seata/spring/annotation/GlobalTransactional.java @@ -15,18 +15,16 @@ */ package io.seata.spring.annotation; +import io.seata.common.DefaultValues; +import io.seata.common.LockStrategyMode; +import io.seata.tm.api.transaction.Propagation; + import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import io.seata.common.DefaultValues; -import io.seata.common.LockStrategyMode; -import io.seata.tm.api.transaction.Propagation; -import org.aopalliance.intercept.MethodInvocation; -import org.springframework.core.annotation.AliasFor; - /** * The interface Global transactional. * @@ -41,7 +39,7 @@ * @see io.seata.spring.annotation.datasource.SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation) io.seata.spring * .annotation.datasource.SeataAutoDataSourceProxyAdvice#invoke(MethodInvocation)// RM: the interceptor of * GlobalLockLogic and AT/XA mode - * @see io.seata.spring.tcc.TccActionInterceptor#invoke(MethodInvocation) io.seata.spring.tcc + * @see io.seata.rm.tcc.interceptor.TccActionInterceptor#invoke(MethodInvocation) io.seata.spring.tcc * .TccActionInterceptor#invoke(MethodInvocation)// RM: the interceptor of TCC mode */ @Retention(RetentionPolicy.RUNTIME) @@ -117,7 +115,6 @@ * @return int */ @Deprecated - @AliasFor("lockRetryInterval") int lockRetryInternal() default 0; /** diff --git a/integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser b/integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser new file mode 100644 index 00000000000..b9e1043dc3e --- /dev/null +++ b/integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser @@ -0,0 +1 @@ +io.seata.integration.tx.api.interceptor.parser.GlobalTransactionalInterceptorParser \ No newline at end of file diff --git a/integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser b/integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser new file mode 100644 index 00000000000..3bb1adeec5f --- /dev/null +++ b/integration-tx-api/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser @@ -0,0 +1,3 @@ +io.seata.integration.tx.api.remoting.parser.DubboRemotingParser +io.seata.integration.tx.api.remoting.parser.SofaRpcRemotingParser +io.seata.integration.tx.api.remoting.parser.HSFRemotingParser \ No newline at end of file diff --git a/tcc/src/test/java/io/seata/rm/tcc/interceptor/ActionInterceptorHandlerTest.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/ActionInterceptorHandlerTest.java similarity index 83% rename from tcc/src/test/java/io/seata/rm/tcc/interceptor/ActionInterceptorHandlerTest.java rename to integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/ActionInterceptorHandlerTest.java index 1fb8f1b5fb8..15f883ceb31 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/interceptor/ActionInterceptorHandlerTest.java +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/ActionInterceptorHandlerTest.java @@ -13,19 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.interceptor; - -import io.seata.rm.tcc.TccAction; -import io.seata.rm.tcc.TccParam; -import io.seata.rm.tcc.api.BusinessActionContext; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; +package io.seata.integration.tx.api.interceptor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Map; +import io.seata.rm.tcc.api.BusinessActionContext; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + /** * The type Action interceptor handler test. * @@ -36,7 +34,7 @@ public class ActionInterceptorHandlerTest { /** * The Action interceptor handler. */ - protected ActionInterceptorHandler actionInterceptorHandler = new ActionInterceptorHandler(); + protected ActionInterceptorHandler actionInterceptorHandler = new ActionInterceptorHandler(); /** * Test business action context. @@ -45,11 +43,11 @@ public class ActionInterceptorHandlerTest { */ @Test public void testBusinessActionContext() throws NoSuchMethodException { - Method prepareMethod = TccAction.class.getDeclaredMethod("prepare", - BusinessActionContext.class, int.class, List.class, TccParam.class); + Method prepareMethod = TestAction.class.getDeclaredMethod("prepare", + BusinessActionContext.class, int.class, List.class, TestParam.class); List list = new ArrayList<>(); list.add("b"); - TccParam tccParam = new TccParam (1, "abc@ali.com"); + TestParam tccParam = new TestParam(1, "abc@ali.com"); Map paramContext = actionInterceptorHandler.fetchActionRequestContext(prepareMethod, new Object[]{null, 10, list, tccParam}); diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestAction.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestAction.java new file mode 100644 index 00000000000..52592dcf3b1 --- /dev/null +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestAction.java @@ -0,0 +1,34 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor; + +import java.util.List; + +import io.seata.rm.tcc.api.BusinessActionContext; +import io.seata.rm.tcc.api.BusinessActionContextParameter; + +/** + * @author ruishansun + */ +public interface TestAction { + + + boolean prepare(BusinessActionContext actionContext, + @BusinessActionContextParameter("a") int a, + @BusinessActionContextParameter(paramName = "b", index = 0) List b, + @BusinessActionContextParameter(isParamInProperty = true) TestParam tccParam); + +} diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestParam.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestParam.java new file mode 100644 index 00000000000..3c4d082414a --- /dev/null +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/TestParam.java @@ -0,0 +1,66 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor; + +import io.seata.rm.tcc.api.BusinessActionContextParameter; + +/** + * The type Tcc param. + * + * @author zhangsen + */ +public class TestParam { + + /** + * The Num. + */ + protected int num; + + /** + * The Email. + */ + @BusinessActionContextParameter(paramName = "email") + protected String email; + + /** + * Instantiates a new Tcc param. + * + * @param num the num + * @param email the email + */ + public TestParam(int num, String email) { + this.num = num; + this.email = email; + } + + /** + * Gets num. + * + * @return the num + */ + public int getNum() { + return num; + } + + /** + * Sets num. + * + * @param num the num + */ + public void setNum(int num) { + this.num = num; + } +} diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/Business.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/Business.java new file mode 100644 index 00000000000..16f80401c7b --- /dev/null +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/Business.java @@ -0,0 +1,29 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +/** + * The interface Business. + */ +public interface Business { + /** + * Do biz string. + * + * @param msg the msg + * @return the string + */ + String doBiz(String msg); +} diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/BusinessImpl.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/BusinessImpl.java new file mode 100644 index 00000000000..bb23eb8a758 --- /dev/null +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/BusinessImpl.java @@ -0,0 +1,34 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.spring.annotation.GlobalTransactional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The type Business. + */ +@GlobalTransactional(timeoutMills = 300000, name = "busi-doBiz") +public class BusinessImpl implements Business { + private static final Logger LOGGER = LoggerFactory.getLogger(BusinessImpl.class); + + @Override + public String doBiz(String msg) { + LOGGER.info("Business doBiz"); + return "hello " + msg; + } +} diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java new file mode 100644 index 00000000000..afb98feee46 --- /dev/null +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java @@ -0,0 +1,44 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author leezongjie + * @date 2022/12/15 + */ +class GlobalTransactionalInterceptorParserTest { + + @Test + void parserInterfaceToProxy() throws Exception { + + //given + BusinessImpl business = new BusinessImpl(); + + GlobalTransactionalInterceptorParser globalTransactionalInterceptorParser = new GlobalTransactionalInterceptorParser(); + + //when + ProxyInvocationHandler proxyInvocationHandler = globalTransactionalInterceptorParser.parserInterfaceToProxy(business); + + //then + Assertions.assertNotNull(proxyInvocationHandler); + + + } +} \ No newline at end of file diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java new file mode 100644 index 00000000000..1ec608506ca --- /dev/null +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java @@ -0,0 +1,84 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.integration.tx.api.interceptor.parser; + +import io.seata.integration.tx.api.util.ProxyUtil; +import io.seata.core.exception.TransactionException; +import io.seata.core.model.GlobalStatus; +import io.seata.core.model.TransactionManager; +import io.seata.tm.TransactionManagerHolder; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.concurrent.atomic.AtomicReference; + +/** + * @author leezongjie + * @date 2022/12/14 + */ +public class ProxyUtilsGlobalTransactionalTest { + + private final String DEFAULT_XID = "default_xid"; + + + @Test + public void testTcc() { + //given + BusinessImpl business = new BusinessImpl(); + + AtomicReference branchReference = new AtomicReference(); + + Business businessProxy = ProxyUtil.createProxy(business); + + TransactionManager mockTransactionManager = new TransactionManager() { + @Override + public String begin(String applicationId, String transactionServiceGroup, String name, int timeout) throws TransactionException { + return DEFAULT_XID; + } + + @Override + public GlobalStatus commit(String xid) throws TransactionException { + return GlobalStatus.Committed; + } + + @Override + public GlobalStatus rollback(String xid) throws TransactionException { + return null; + } + + @Override + public GlobalStatus getStatus(String xid) throws TransactionException { + return null; + } + + @Override + public GlobalStatus globalReport(String xid, GlobalStatus globalStatus) throws TransactionException { + return null; + } + }; + + TransactionManagerHolder.set(mockTransactionManager); + + //when + String result = businessProxy.doBiz("test"); + + //then + Assertions.assertNotNull(result); + + } + + +} diff --git a/pom.xml b/pom.xml index 90e31432011..d555e04d93a 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,7 @@ sqlparser server ext/apm-seata-skywalking-plugin + integration-tx-api diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataClientEnvironmentPostProcessor.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataClientEnvironmentPostProcessor.java index 5939248427a..1730ebaa3de 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataClientEnvironmentPostProcessor.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataClientEnvironmentPostProcessor.java @@ -16,7 +16,7 @@ package io.seata.spring.boot.autoconfigure; import io.seata.common.holder.ObjectHolder; -import io.seata.rm.tcc.config.TCCFenceConfig; +import io.seata.rm.fence.SpringFenceConfig; import io.seata.saga.engine.StateMachineConfig; import io.seata.spring.boot.autoconfigure.properties.SagaAsyncThreadPoolProperties; import io.seata.spring.boot.autoconfigure.properties.SeataProperties; @@ -46,6 +46,7 @@ import static io.seata.spring.boot.autoconfigure.StarterConstants.TCC_FENCE_PREFIX; import static io.seata.spring.boot.autoconfigure.StarterConstants.UNDO_PREFIX; + /** * @author xingfudeshi@gmail.com * @author wang.liang @@ -64,7 +65,7 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringAp PROPERTY_BEAN_MAP.put(UNDO_PREFIX, UndoProperties.class); PROPERTY_BEAN_MAP.put(COMPRESS_PREFIX, UndoCompressProperties.class); PROPERTY_BEAN_MAP.put(LOAD_BALANCE_PREFIX, LoadBalanceProperties.class); - PROPERTY_BEAN_MAP.put(TCC_FENCE_PREFIX, TCCFenceConfig.class); + PROPERTY_BEAN_MAP.put(TCC_FENCE_PREFIX, SpringFenceConfig.class); PROPERTY_BEAN_MAP.put(SAGA_STATE_MACHINE_PREFIX, StateMachineConfig.class); PROPERTY_BEAN_MAP.put(SAGA_ASYNC_THREAD_POOL_PREFIX, SagaAsyncThreadPoolProperties.class); } @@ -73,4 +74,4 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringAp public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; } -} +} \ No newline at end of file diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataTCCFenceAutoConfiguration.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataTCCFenceAutoConfiguration.java index 34b88497be9..7ce9a2e97cc 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataTCCFenceAutoConfiguration.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/java/io/seata/spring/boot/autoconfigure/SeataTCCFenceAutoConfiguration.java @@ -15,7 +15,7 @@ */ package io.seata.spring.boot.autoconfigure; -import io.seata.rm.tcc.config.TCCFenceConfig; +import io.seata.rm.fence.SpringFenceConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfigureAfter; @@ -38,7 +38,7 @@ */ @ConditionalOnExpression("${seata.enabled:true}") @ConditionalOnBean(type = {"javax.sql.DataSource", "org.springframework.transaction.PlatformTransactionManager"}) -@ConditionalOnMissingBean(TCCFenceConfig.class) +@ConditionalOnMissingBean(SpringFenceConfig.class) @AutoConfigureAfter({SeataCoreAutoConfiguration.class, TransactionAutoConfiguration.class}) @AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE) public class SeataTCCFenceAutoConfiguration { @@ -48,13 +48,13 @@ public class SeataTCCFenceAutoConfiguration { @Bean @ConfigurationProperties(StarterConstants.TCC_FENCE_PREFIX) - public TCCFenceConfig tccFenceConfig( + public SpringFenceConfig tccFenceConfig( DataSource dataSource, PlatformTransactionManager transactionManager, @Qualifier(TCC_FENCE_DATA_SOURCE_BEAN_NAME) @Autowired(required = false) DataSource tccFenceDataSource, @Qualifier(TCC_FENCE_TRANSACTION_MANAGER_BEAN_NAME) @Autowired(required = false) PlatformTransactionManager tccFenceTransactionManager) { - return new TCCFenceConfig(tccFenceDataSource != null ? tccFenceDataSource : dataSource, + return new SpringFenceConfig(tccFenceDataSource != null ? tccFenceDataSource : dataSource, tccFenceTransactionManager != null ? tccFenceTransactionManager : transactionManager); } -} +} \ No newline at end of file diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 6e13dff145a..0b20cfc4f20 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-client/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -248,14 +248,14 @@ "name": "seata.tcc.fence.log-table-name", "type": "java.lang.String", "description": "TCC fence log table name.", - "sourceType": "io.seata.rm.tcc.config.TCCFenceConfig", + "sourceType": "io.seata.rm.fence.SpringFenceConfig", "defaultValue": "tcc_fence_log" }, { "name": "seata.tcc.fence.clean-period", "type": "java.time.Duration", "description": "TCC fence log clean period. only duration type format are supported.", - "sourceType": "io.seata.rm.tcc.config.TCCFenceConfig", + "sourceType": "io.seata.rm.fence.SpringFenceConfig", "defaultValue": "1d" }, { diff --git a/spring/pom.xml b/spring/pom.xml index 7b36f4864dc..73b71d26b1c 100644 --- a/spring/pom.xml +++ b/spring/pom.xml @@ -41,12 +41,12 @@ ${project.groupId} - seata-tcc + seata-rm ${project.version} ${project.groupId} - seata-rm + seata-integration-tx-api ${project.version} @@ -54,12 +54,21 @@ seata-serializer-all ${project.version} + + ${project.groupId} + seata-tcc + ${project.version} + org.springframework spring-context + + org.springframework + spring-jdbc + org.jetbrains.kotlin kotlin-stdlib-jdk8 @@ -74,8 +83,6 @@ org.jetbrains.kotlinx kotlinx-coroutines-core - - @@ -98,4 +105,4 @@ - + \ No newline at end of file diff --git a/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java b/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java new file mode 100644 index 00000000000..aab8842ef80 --- /dev/null +++ b/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java @@ -0,0 +1,66 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.fence; + +import io.seata.common.exception.FrameworkErrorCode; +import io.seata.integration.tx.api.fence.config.CommonFenceConfig; +import io.seata.integration.tx.api.fence.exception.CommonFenceException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.sql.DataSource; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public class SpringFenceConfig extends CommonFenceConfig implements InitializingBean { + + /** + * Common fence datasource + */ + private final DataSource dataSource; + + /** + * Common fence transactionManager + */ + private final PlatformTransactionManager transactionManager; + + public SpringFenceConfig(DataSource dataSource, PlatformTransactionManager transactionManager) { + this.dataSource = dataSource; + this.transactionManager = transactionManager; + } + + @Override + public void afterPropertiesSet() { + if (dataSource != null) { + // set dataSource + SpringFenceHandler.setDataSource(dataSource); + init(); + } else { + throw new CommonFenceException(FrameworkErrorCode.DateSourceNeedInjected); + } + if (transactionManager != null) { + // set transaction template + SpringFenceHandler.setTransactionTemplate(new TransactionTemplate(transactionManager)); + } else { + throw new CommonFenceException(FrameworkErrorCode.TransactionManagerNeedInjected); + } + } + + +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/TCCFenceHandler.java b/spring/src/main/java/io/seata/rm/fence/SpringFenceHandler.java similarity index 70% rename from tcc/src/main/java/io/seata/rm/tcc/TCCFenceHandler.java rename to spring/src/main/java/io/seata/rm/fence/SpringFenceHandler.java index 40c3cf44e5d..8e6669018cb 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/TCCFenceHandler.java +++ b/spring/src/main/java/io/seata/rm/fence/SpringFenceHandler.java @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc; +package io.seata.rm.fence; +import javax.sql.DataSource; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.SQLException; @@ -25,17 +26,19 @@ import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import javax.sql.DataSource; import io.seata.common.exception.FrameworkErrorCode; import io.seata.common.exception.SkipCallbackWrapperException; import io.seata.common.executor.Callback; import io.seata.common.thread.NamedThreadFactory; -import io.seata.rm.tcc.constant.TCCFenceConstant; -import io.seata.rm.tcc.exception.TCCFenceException; -import io.seata.rm.tcc.store.TCCFenceDO; -import io.seata.rm.tcc.store.TCCFenceStore; -import io.seata.rm.tcc.store.db.TCCFenceStoreDataBaseDAO; +import io.seata.integration.tx.api.fence.DefaultCommonFenceHandler; +import io.seata.integration.tx.api.fence.FenceHandler; +import io.seata.integration.tx.api.fence.constant.CommonFenceConstant; +import io.seata.integration.tx.api.fence.exception.CommonFenceException; +import io.seata.integration.tx.api.fence.store.CommonFenceDO; +import io.seata.integration.tx.api.fence.store.CommonFenceStore; +import io.seata.integration.tx.api.fence.store.db.CommonFenceStoreDataBaseDAO; +import io.seata.integration.tx.api.remoting.TwoPhaseResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.datasource.DataSourceUtils; @@ -43,19 +46,15 @@ import org.springframework.transaction.support.TransactionTemplate; /** - * TCC Fence Handler(idempotent, non_rollback, suspend) + * Common Fence Handler(idempotent, non_rollback, suspend) * * @author kaka2code */ -public class TCCFenceHandler { +public class SpringFenceHandler implements FenceHandler { - private TCCFenceHandler() { - throw new IllegalStateException("Utility class"); - } + private static final Logger LOGGER = LoggerFactory.getLogger(SpringFenceHandler.class); - private static final Logger LOGGER = LoggerFactory.getLogger(TCCFenceHandler.class); - - private static final TCCFenceStore TCC_FENCE_DAO = TCCFenceStoreDataBaseDAO.getInstance(); + private static final CommonFenceStore COMMON_FENCE_DAO = CommonFenceStoreDataBaseDAO.getInstance(); private static DataSource dataSource; @@ -79,25 +78,26 @@ private TCCFenceHandler() { static { try { initLogCleanExecutor(); + DefaultCommonFenceHandler.get().setFenceHandler(new SpringFenceHandler()); } catch (Exception e) { LOGGER.error("init fence log clean executor error", e); } } public static DataSource getDataSource() { - return TCCFenceHandler.dataSource; + return SpringFenceHandler.dataSource; } public static void setDataSource(DataSource dataSource) { - TCCFenceHandler.dataSource = dataSource; + SpringFenceHandler.dataSource = dataSource; } public static void setTransactionTemplate(TransactionTemplate transactionTemplate) { - TCCFenceHandler.transactionTemplate = transactionTemplate; + SpringFenceHandler.transactionTemplate = transactionTemplate; } /** - * tcc prepare method enhanced + * common prepare method enhanced * * @param xid the global transaction id * @param branchId the branch transaction id @@ -105,19 +105,20 @@ public static void setTransactionTemplate(TransactionTemplate transactionTemplat * @param targetCallback the target callback * @return the boolean */ - public static Object prepareFence(String xid, Long branchId, String actionName, Callback targetCallback) { + @Override + public Object prepareFence(String xid, Long branchId, String actionName, Callback targetCallback) { return transactionTemplate.execute(status -> { try { Connection conn = DataSourceUtils.getConnection(dataSource); - boolean result = insertTCCFenceLog(conn, xid, branchId, actionName, TCCFenceConstant.STATUS_TRIED); - LOGGER.info("TCC fence prepare result: {}. xid: {}, branchId: {}", result, xid, branchId); + boolean result = insertCommonFenceLog(conn, xid, branchId, actionName, CommonFenceConstant.STATUS_TRIED); + LOGGER.info("Common fence prepare result: {}. xid: {}, branchId: {}", result, xid, branchId); if (result) { return targetCallback.execute(); } else { - throw new TCCFenceException(String.format("Insert tcc fence record error, prepare fence failed. xid= %s, branchId= %s", xid, branchId), + throw new CommonFenceException(String.format("Insert common fence record error, prepare fence failed. xid= %s, branchId= %s", xid, branchId), FrameworkErrorCode.InsertRecordError); } - } catch (TCCFenceException e) { + } catch (CommonFenceException e) { if (e.getErrcode() == FrameworkErrorCode.DuplicateKeyException) { LOGGER.error("Branch transaction has already rollbacked before,prepare fence failed. xid= {},branchId = {}", xid, branchId); addToLogCleanQueue(xid, branchId); @@ -132,36 +133,37 @@ public static Object prepareFence(String xid, Long branchId, String actionName, } /** - * tcc commit method enhanced + * common commit method enhanced * * @param commitMethod commit method - * @param targetTCCBean target tcc bean + * @param targetTCCBean target common bean * @param xid the global transaction id * @param branchId the branch transaction id * @param args commit method's parameters * @return the boolean */ - public static boolean commitFence(Method commitMethod, Object targetTCCBean, + @Override + public boolean commitFence(Method commitMethod, Object targetTCCBean, String xid, Long branchId, Object[] args) { return transactionTemplate.execute(status -> { try { Connection conn = DataSourceUtils.getConnection(dataSource); - TCCFenceDO tccFenceDO = TCC_FENCE_DAO.queryTCCFenceDO(conn, xid, branchId); - if (tccFenceDO == null) { - throw new TCCFenceException(String.format("TCC fence record not exists, commit fence method failed. xid= %s, branchId= %s", xid, branchId), + CommonFenceDO commonFenceDO = COMMON_FENCE_DAO.queryCommonFenceDO(conn, xid, branchId); + if (commonFenceDO == null) { + throw new CommonFenceException(String.format("Common fence record not exists, commit fence method failed. xid= %s, branchId= %s", xid, branchId), FrameworkErrorCode.RecordNotExists); } - if (TCCFenceConstant.STATUS_COMMITTED == tccFenceDO.getStatus()) { - LOGGER.info("Branch transaction has already committed before. idempotency rejected. xid: {}, branchId: {}, status: {}", xid, branchId, tccFenceDO.getStatus()); + if (CommonFenceConstant.STATUS_COMMITTED == commonFenceDO.getStatus()) { + LOGGER.info("Branch transaction has already committed before. idempotency rejected. xid: {}, branchId: {}, status: {}", xid, branchId, commonFenceDO.getStatus()); return true; } - if (TCCFenceConstant.STATUS_ROLLBACKED == tccFenceDO.getStatus() || TCCFenceConstant.STATUS_SUSPENDED == tccFenceDO.getStatus()) { + if (CommonFenceConstant.STATUS_ROLLBACKED == commonFenceDO.getStatus() || CommonFenceConstant.STATUS_SUSPENDED == commonFenceDO.getStatus()) { if (LOGGER.isWarnEnabled()) { - LOGGER.warn("Branch transaction status is unexpected. xid: {}, branchId: {}, status: {}", xid, branchId, tccFenceDO.getStatus()); + LOGGER.warn("Branch transaction status is unexpected. xid: {}, branchId: {}, status: {}", xid, branchId, commonFenceDO.getStatus()); } return false; } - return updateStatusAndInvokeTargetMethod(conn, commitMethod, targetTCCBean, xid, branchId, TCCFenceConstant.STATUS_COMMITTED, status, args); + return updateStatusAndInvokeTargetMethod(conn, commitMethod, targetTCCBean, xid, branchId, CommonFenceConstant.STATUS_COMMITTED, status, args); } catch (Throwable t) { status.setRollbackOnly(); throw new SkipCallbackWrapperException(t); @@ -170,7 +172,7 @@ public static boolean commitFence(Method commitMethod, Object targetTCCBean, } /** - * tcc rollback method enhanced + * Common rollback method enhanced * * @param rollbackMethod rollback method * @param targetTCCBean target tcc bean @@ -180,34 +182,35 @@ public static boolean commitFence(Method commitMethod, Object targetTCCBean, * @param actionName the action name * @return the boolean */ - public static boolean rollbackFence(Method rollbackMethod, Object targetTCCBean, + @Override + public boolean rollbackFence(Method rollbackMethod, Object targetTCCBean, String xid, Long branchId, Object[] args, String actionName) { return transactionTemplate.execute(status -> { try { Connection conn = DataSourceUtils.getConnection(dataSource); - TCCFenceDO tccFenceDO = TCC_FENCE_DAO.queryTCCFenceDO(conn, xid, branchId); + CommonFenceDO commonFenceDO = COMMON_FENCE_DAO.queryCommonFenceDO(conn, xid, branchId); // non_rollback - if (tccFenceDO == null) { - boolean result = insertTCCFenceLog(conn, xid, branchId, actionName, TCCFenceConstant.STATUS_SUSPENDED); - LOGGER.info("Insert tcc fence record result: {}. xid: {}, branchId: {}", result, xid, branchId); + if (commonFenceDO == null) { + boolean result = insertCommonFenceLog(conn, xid, branchId, actionName, CommonFenceConstant.STATUS_SUSPENDED); + LOGGER.info("Insert common fence record result: {}. xid: {}, branchId: {}", result, xid, branchId); if (!result) { - throw new TCCFenceException(String.format("Insert tcc fence record error, rollback fence method failed. xid= %s, branchId= %s", xid, branchId), + throw new CommonFenceException(String.format("Insert common fence record error, rollback fence method failed. xid= %s, branchId= %s", xid, branchId), FrameworkErrorCode.InsertRecordError); } return true; } else { - if (TCCFenceConstant.STATUS_ROLLBACKED == tccFenceDO.getStatus() || TCCFenceConstant.STATUS_SUSPENDED == tccFenceDO.getStatus()) { - LOGGER.info("Branch transaction had already rollbacked before, idempotency rejected. xid: {}, branchId: {}, status: {}", xid, branchId, tccFenceDO.getStatus()); + if (CommonFenceConstant.STATUS_ROLLBACKED == commonFenceDO.getStatus() || CommonFenceConstant.STATUS_SUSPENDED == commonFenceDO.getStatus()) { + LOGGER.info("Branch transaction had already rollbacked before, idempotency rejected. xid: {}, branchId: {}, status: {}", xid, branchId, commonFenceDO.getStatus()); return true; } - if (TCCFenceConstant.STATUS_COMMITTED == tccFenceDO.getStatus()) { + if (CommonFenceConstant.STATUS_COMMITTED == commonFenceDO.getStatus()) { if (LOGGER.isWarnEnabled()) { - LOGGER.warn("Branch transaction status is unexpected. xid: {}, branchId: {}, status: {}", xid, branchId, tccFenceDO.getStatus()); + LOGGER.warn("Branch transaction status is unexpected. xid: {}, branchId: {}, status: {}", xid, branchId, commonFenceDO.getStatus()); } return false; } } - return updateStatusAndInvokeTargetMethod(conn, rollbackMethod, targetTCCBean, xid, branchId, TCCFenceConstant.STATUS_ROLLBACKED, status, args); + return updateStatusAndInvokeTargetMethod(conn, rollbackMethod, targetTCCBean, xid, branchId, CommonFenceConstant.STATUS_ROLLBACKED, status, args); } catch (Throwable t) { status.setRollbackOnly(); throw new SkipCallbackWrapperException(t); @@ -216,7 +219,7 @@ public static boolean rollbackFence(Method rollbackMethod, Object targetTCCBean, } /** - * Insert TCC fence log + * Insert Common fence log * * @param conn the db connection * @param xid the xid @@ -224,13 +227,13 @@ public static boolean rollbackFence(Method rollbackMethod, Object targetTCCBean, * @param status the status * @return the boolean */ - private static boolean insertTCCFenceLog(Connection conn, String xid, Long branchId, String actionName, Integer status) { - TCCFenceDO tccFenceDO = new TCCFenceDO(); - tccFenceDO.setXid(xid); - tccFenceDO.setBranchId(branchId); - tccFenceDO.setActionName(actionName); - tccFenceDO.setStatus(status); - return TCC_FENCE_DAO.insertTCCFenceDO(conn, tccFenceDO); + private static boolean insertCommonFenceLog(Connection conn, String xid, Long branchId, String actionName, Integer status) { + CommonFenceDO commonFenceDO = new CommonFenceDO(); + commonFenceDO.setXid(xid); + commonFenceDO.setBranchId(branchId); + commonFenceDO.setActionName(actionName); + commonFenceDO.setStatus(status); + return COMMON_FENCE_DAO.insertCommonFenceDO(conn, commonFenceDO); } /** @@ -247,7 +250,7 @@ private static boolean updateStatusAndInvokeTargetMethod(Connection conn, Method String xid, Long branchId, int status, TransactionStatus transactionStatus, Object[] args) throws Exception { - boolean result = TCC_FENCE_DAO.updateTCCFenceDO(conn, xid, branchId, status, TCCFenceConstant.STATUS_TRIED); + boolean result = COMMON_FENCE_DAO.updateCommonFenceDO(conn, xid, branchId, status, CommonFenceConstant.STATUS_TRIED); if (result) { // invoke two phase method Object ret = method.invoke(targetTCCBean, args); @@ -267,7 +270,7 @@ private static boolean updateStatusAndInvokeTargetMethod(Connection conn, Method } /** - * Delete TCC Fence + * Delete Common Fence * * @param xid the global transaction id * @param branchId the branch transaction id @@ -278,7 +281,7 @@ public static boolean deleteFence(String xid, Long branchId) { boolean ret = false; try { Connection conn = DataSourceUtils.getConnection(dataSource); - ret = TCC_FENCE_DAO.deleteTCCFenceDO(conn, xid, branchId); + ret = COMMON_FENCE_DAO.deleteCommonFenceDO(conn, xid, branchId); } catch (RuntimeException e) { status.setRollbackOnly(); LOGGER.error("delete fence log failed, xid: {}, branchId: {}", xid, branchId, e); @@ -287,26 +290,31 @@ public static boolean deleteFence(String xid, Long branchId) { }); } - - - public static int deleteFenceByDate(Date datetime) { - DataSource dataSource = TCCFenceHandler.getDataSource(); + /** + * Delete Common Fence By Datetime + * + * @param datetime datetime + * @return the deleted row count + */ + @Override + public int deleteFenceByDate(Date datetime) { + DataSource dataSource = SpringFenceHandler.getDataSource(); Connection connection = null; int total = 0; try { connection = DataSourceUtils.getConnection(dataSource); if (isOracle(connection)) { // delete by date if DB is oracle - return TCC_FENCE_DAO.deleteTCCFenceDOByDate(connection, datetime); + return COMMON_FENCE_DAO.deleteCommonFenceDOByDate(connection, datetime); } //delete by id if DB is not oracle while (true) { - Set xidSet = TCC_FENCE_DAO.queryEndStatusXidsByDate(connection, datetime, LIMIT_DELETE); + Set xidSet = COMMON_FENCE_DAO.queryEndStatusXidsByDate(connection, datetime, LIMIT_DELETE); if (xidSet.isEmpty()) { break; } - total += TCC_FENCE_DAO.deleteTCCFenceDO(connection, new ArrayList<>(xidSet)); + total += COMMON_FENCE_DAO.deleteTCCFenceDO(connection, new ArrayList<>(xidSet)); } } catch (RuntimeException e) { LOGGER.error("delete fence log failed ", e); @@ -352,7 +360,7 @@ private static void addToLogCleanQueue(final String xid, final long branchId) { /** * clean fence log that has the final status runnable. * - * @see TCCFenceConstant + * @see CommonFenceConstant */ private static class FenceLogCleanRunnable implements Runnable { @Override @@ -361,7 +369,7 @@ public void run() { try { FenceLogIdentity logIdentity = LOG_QUEUE.take(); - boolean ret = TCCFenceHandler.deleteFence(logIdentity.getXid(), logIdentity.getBranchId()); + boolean ret = SpringFenceHandler.deleteFence(logIdentity.getXid(), logIdentity.getBranchId()); if (!ret) { LOGGER.error("delete fence log failed, xid: {}, branchId: {}", logIdentity.getXid(), logIdentity.getBranchId()); } @@ -401,4 +409,4 @@ public void setBranchId(Long branchId) { this.branchId = branchId; } } -} +} \ No newline at end of file diff --git a/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java b/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java new file mode 100644 index 00000000000..47dbb9969da --- /dev/null +++ b/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java @@ -0,0 +1,35 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.spring; + +import io.seata.integration.tx.api.interceptor.parser.TargetClassParser; +import io.seata.spring.util.SpringProxyUtils; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public class SpringTargetClassParser implements TargetClassParser { + @Override + public Class findTargetClass(Object target) throws Exception { + return SpringProxyUtils.findTargetClass(target); + } + + @Override + public Class[] findInterfaces(Object target) throws Exception { + return SpringProxyUtils.findInterfaces(target); + } +} diff --git a/spring/src/main/java/io/seata/spring/annotation/AspectTransactionalInterceptor.java b/spring/src/main/java/io/seata/spring/annotation/AspectTransactionalInterceptor.java index df61dc15aea..15ea43cd82f 100644 --- a/spring/src/main/java/io/seata/spring/annotation/AspectTransactionalInterceptor.java +++ b/spring/src/main/java/io/seata/spring/annotation/AspectTransactionalInterceptor.java @@ -15,12 +15,28 @@ */ package io.seata.spring.annotation; +import java.lang.reflect.Method; + +import io.seata.integration.tx.api.annotation.AspectTransactional; +import io.seata.integration.tx.api.interceptor.DefaultInvocationWrapper; +import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler; import io.seata.tm.api.FailureHandler; +import org.aopalliance.intercept.MethodInterceptor; +import org.aopalliance.intercept.MethodInvocation; +import org.springframework.aop.support.AopUtils; +import org.springframework.util.ClassUtils; /** - * @author funkye + * Aspect transactional interceptor. + * + * @author ruishansun */ -public class AspectTransactionalInterceptor extends GlobalTransactionalInterceptor { +public class AspectTransactionalInterceptor implements MethodInterceptor { + + private final FailureHandler failureHandler; + private final AspectTransactional aspectTransactional; + private final GlobalTransactionalInterceptorHandler globalTransactionalInterceptorHandler; private static final AspectTransactional DEFAULT_ASPECT_TRANSACTIONAL = new AspectTransactional(); @@ -37,8 +53,16 @@ public AspectTransactionalInterceptor(FailureHandler failureHandler) { } public AspectTransactionalInterceptor(FailureHandler failureHandler, AspectTransactional aspectTransactional) { - super(failureHandler); + this.failureHandler = failureHandler; this.aspectTransactional = aspectTransactional; + this.globalTransactionalInterceptorHandler = new GlobalTransactionalInterceptorHandler(this.failureHandler, null, this.aspectTransactional); } + @Override + public Object invoke(MethodInvocation invocation) throws Throwable { + Class targetClass = invocation.getThis() != null ? AopUtils.getTargetClass(invocation.getThis()) : null; + Method specificMethod = ClassUtils.getMostSpecificMethod(invocation.getMethod(), targetClass); + InvocationWrapper invocationWrapper = new DefaultInvocationWrapper(null, invocation.getThis(), specificMethod, invocation.getArguments()); + return this.globalTransactionalInterceptorHandler.invoke(invocationWrapper); + } } diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java index ef455ea6e54..423dc9490d7 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java +++ b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java @@ -23,8 +23,6 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; -import javax.annotation.Nullable; - import io.seata.common.util.CollectionUtils; import io.seata.common.util.StringUtils; import io.seata.config.ConfigurationCache; @@ -35,25 +33,18 @@ import io.seata.core.rpc.ShutdownHook; import io.seata.core.rpc.netty.RmNettyRemotingClient; import io.seata.core.rpc.netty.TmNettyRemotingClient; +import io.seata.integration.tx.api.util.ProxyUtil; import io.seata.rm.RMClient; import io.seata.spring.annotation.scannercheckers.PackageScannerChecker; -import io.seata.spring.tcc.TccActionInterceptor; -import io.seata.spring.util.OrderUtil; -import io.seata.spring.util.SpringProxyUtils; -import io.seata.spring.util.TCCBeanParserUtils; import io.seata.tm.TMClient; import io.seata.tm.api.FailureHandler; -import org.aopalliance.aop.Advice; +import io.seata.tm.api.FailureHandlerHolder; import org.aopalliance.intercept.MethodInterceptor; -import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.aop.Advisor; import org.springframework.aop.TargetSource; -import org.springframework.aop.framework.AdvisedSupport; import org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator; -import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; @@ -62,7 +53,6 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.core.Ordered; import static io.seata.common.DefaultValues.DEFAULT_DISABLE_GLOBAL_TRANSACTION; import static io.seata.common.DefaultValues.DEFAULT_TX_GROUP; @@ -86,8 +76,6 @@ public class GlobalTransactionScanner extends AbstractAutoProxyCreator private static final int ORDER_NUM = 1024; private static final int DEFAULT_MODE = AT_MODE + MT_MODE; - private static final String SPRING_TRANSACTION_INTERCEPTOR_CLASS_NAME = "org.springframework.transaction.interceptor.TransactionInterceptor"; - private static final Set PROXYED_SET = new HashSet<>(); private static final Set EXCLUDE_BEAN_NAME_SET = new HashSet<>(); private static final Set SCANNER_CHECKER_SET = new LinkedHashSet<>(); @@ -178,6 +166,7 @@ public GlobalTransactionScanner(String applicationId, String txServiceGroup, int this.txServiceGroup = txServiceGroup; this.mode = mode; this.failureHandlerHook = failureHandlerHook; + FailureHandlerHolder.setFailureHandler(this.failureHandlerHook); } /** @@ -209,8 +198,8 @@ private void initClient() { } if (DEFAULT_TX_GROUP_OLD.equals(txServiceGroup)) { LOGGER.warn("the default value of seata.tx-service-group: {} has already changed to {} since Seata 1.5, " + - "please change your default configuration as soon as possible " + - "and we don't recommend you to use default tx-service-group's value provided by seata", + "please change your default configuration as soon as possible " + + "and we don't recommend you to use default tx-service-group's value provided by seata", DEFAULT_TX_GROUP_OLD, DEFAULT_TX_GROUP); } if (StringUtils.isNullOrEmpty(applicationId) || StringUtils.isNullOrEmpty(txServiceGroup)) { @@ -245,23 +234,23 @@ private void registerSpringShutdownHook() { /** * The following will be scanned, and added corresponding interceptor: - * + *

* TM: * @see io.seata.spring.annotation.GlobalTransactional // TM annotation * Corresponding interceptor: - * @see io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction(MethodInvocation, AspectTransactional) // TM handler - * + * @see io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler#handleGlobalTransaction(io.seata.integration.tx.api.interceptor.InvocationWrapper, io.seata.integration.tx.api.annotation.AspectTransactional) // TM handler + *

* GlobalLock: * @see io.seata.spring.annotation.GlobalLock // GlobalLock annotation * Corresponding interceptor: - * @see io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalLock(MethodInvocation, GlobalLock) // GlobalLock handler - * + * @see io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler#handleGlobalLock(io.seata.integration.tx.api.interceptor.InvocationWrapper, io.seata.spring.annotation.GlobalLock) // GlobalLock handler + *

* TCC mode: * @see io.seata.rm.tcc.api.LocalTCC // TCC annotation on interface * @see io.seata.rm.tcc.api.TwoPhaseBusinessAction // TCC annotation on try method - * @see io.seata.rm.tcc.remoting.RemotingParser // Remote TCC service parser + * @see io.seata.integration.tx.api.remoting.RemotingParser // Remote TCC service parser * Corresponding interceptor: - * @see io.seata.spring.tcc.TccActionInterceptor // the interceptor of TCC mode + * @see io.seata.rm.tcc.interceptor.TccActionInterceptorHandler // the interceptor of TCC mode */ @Override protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) { @@ -275,48 +264,11 @@ protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) if (PROXYED_SET.contains(beanName)) { return bean; } - interceptor = null; - //check TCC proxy - if (TCCBeanParserUtils.isTccAutoProxy(bean, beanName, applicationContext)) { - // init tcc fence clean task if enable useTccFence - TCCBeanParserUtils.initTccFenceCleanTask(TCCBeanParserUtils.getRemotingDesc(beanName), applicationContext); - //TCC interceptor, proxy bean of sofa:reference/dubbo:reference, and LocalTCC - interceptor = new TccActionInterceptor(TCCBeanParserUtils.getRemotingDesc(beanName)); - ConfigurationCache.addConfigListener(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, - (ConfigurationChangeListener)interceptor); - } else { - Class serviceInterface = SpringProxyUtils.findTargetClass(bean); - Class[] interfacesIfJdk = SpringProxyUtils.findInterfaces(bean); - - if (!existsAnnotation(serviceInterface) - && !existsAnnotation(interfacesIfJdk)) { - return bean; - } - - if (globalTransactionalInterceptor == null) { - globalTransactionalInterceptor = new GlobalTransactionalInterceptor(failureHandlerHook); - ConfigurationCache.addConfigListener( - ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, - (ConfigurationChangeListener)globalTransactionalInterceptor); - } - interceptor = globalTransactionalInterceptor; - } - - LOGGER.info("Bean [{}] with name [{}] would use interceptor [{}]", bean.getClass().getName(), beanName, interceptor.getClass().getName()); - if (!AopUtils.isAopProxy(bean)) { - bean = super.wrapIfNecessary(bean, beanName, cacheKey); - } else { - AdvisedSupport advised = SpringProxyUtils.getAdvisedSupport(bean); - Advisor[] advisor = buildAdvisors(beanName, getAdvicesAndAdvisorsForBean(null, null, null)); - int pos; - for (Advisor avr : advisor) { - // Find the position based on the advisor's order, and add to advisors by pos - pos = findAddSeataAdvisorPosition(advised, avr); - advised.addAdvisor(pos, avr); - } + Object resultBean = ProxyUtil.createProxy(bean); + if (bean != resultBean) { + PROXYED_SET.add(beanName); } - PROXYED_SET.add(beanName); - return bean; + return resultBean; } } catch (Exception exx) { throw new RuntimeException(exx); @@ -346,148 +298,6 @@ private boolean doCheckers(Object bean, String beanName) { return true; } - - //region the methods about findAddSeataAdvisorPosition START - - /** - * Find pos for `advised.addAdvisor(pos, avr);` - * - * @param advised the advised - * @param seataAdvisor the seata advisor - * @return the pos - */ - private int findAddSeataAdvisorPosition(AdvisedSupport advised, Advisor seataAdvisor) { - // Get seataAdvisor's order and interceptorPosition - int seataOrder = OrderUtil.getOrder(seataAdvisor); - SeataInterceptorPosition seataInterceptorPosition = getSeataInterceptorPosition(seataAdvisor); - - // If the interceptorPosition is any, check lowest or highest. - if (SeataInterceptorPosition.Any == seataInterceptorPosition) { - if (seataOrder == Ordered.LOWEST_PRECEDENCE) { - // the last position - return advised.getAdvisors().length; - } else if (seataOrder == Ordered.HIGHEST_PRECEDENCE) { - // the first position - return 0; - } - } else { - // If the interceptorPosition is not any, compute position if has TransactionInterceptor. - Integer position = computePositionIfHasTransactionInterceptor(advised, seataAdvisor, seataInterceptorPosition, seataOrder); - if (position != null) { - // the position before or after TransactionInterceptor - return position; - } - } - - // Find position - return this.findPositionInAdvisors(advised.getAdvisors(), seataAdvisor); - } - - @Nullable - private Integer computePositionIfHasTransactionInterceptor(AdvisedSupport advised, Advisor seataAdvisor, SeataInterceptorPosition seataInterceptorPosition, int seataOrder) { - // Find the TransactionInterceptor's advisor, order and position - Advisor otherAdvisor = null; - Integer transactionInterceptorPosition = null; - Integer transactionInterceptorOrder = null; - for (int i = 0, l = advised.getAdvisors().length; i < l; ++i) { - otherAdvisor = advised.getAdvisors()[i]; - if (isTransactionInterceptor(otherAdvisor)) { - transactionInterceptorPosition = i; - transactionInterceptorOrder = OrderUtil.getOrder(otherAdvisor); - break; - } - } - // If the TransactionInterceptor does not exist, return null - if (transactionInterceptorPosition == null) { - return null; - } - - // Reset seataOrder if the seataOrder is not match the position - Advice seataAdvice = seataAdvisor.getAdvice(); - if (SeataInterceptorPosition.AfterTransaction == seataInterceptorPosition && OrderUtil.higherThan(seataOrder, transactionInterceptorOrder)) { - int newSeataOrder = OrderUtil.lower(transactionInterceptorOrder, 1); - ((SeataInterceptor)seataAdvice).setOrder(newSeataOrder); - if (LOGGER.isWarnEnabled()) { - LOGGER.warn("The {}'s order '{}' is higher or equals than {}'s order '{}' , reset {}'s order to lower order '{}'.", - seataAdvice.getClass().getSimpleName(), seataOrder, - otherAdvisor.getAdvice().getClass().getSimpleName(), transactionInterceptorOrder, - seataAdvice.getClass().getSimpleName(), newSeataOrder); - } - // the position after the TransactionInterceptor's advisor - return transactionInterceptorPosition + 1; - } else if (SeataInterceptorPosition.BeforeTransaction == seataInterceptorPosition && OrderUtil.lowerThan(seataOrder, transactionInterceptorOrder)) { - int newSeataOrder = OrderUtil.higher(transactionInterceptorOrder, 1); - ((SeataInterceptor)seataAdvice).setOrder(newSeataOrder); - if (LOGGER.isWarnEnabled()) { - LOGGER.warn("The {}'s order '{}' is lower or equals than {}'s order '{}' , reset {}'s order to higher order '{}'.", - seataAdvice.getClass().getSimpleName(), seataOrder, - otherAdvisor.getAdvice().getClass().getSimpleName(), transactionInterceptorOrder, - seataAdvice.getClass().getSimpleName(), newSeataOrder); - } - // the position before the TransactionInterceptor's advisor - return transactionInterceptorPosition; - } - - return null; - } - - private int findPositionInAdvisors(Advisor[] advisors, Advisor seataAdvisor) { - Advisor advisor; - for (int i = 0, l = advisors.length; i < l; ++i) { - advisor = advisors[i]; - if (OrderUtil.higherOrEquals(seataAdvisor, advisor)) { - // the position before the current advisor - return i; - } - } - - // the last position, after all the advisors - return advisors.length; - } - - private SeataInterceptorPosition getSeataInterceptorPosition(Advisor seataAdvisor) { - Advice seataAdvice = seataAdvisor.getAdvice(); - if (seataAdvice instanceof SeataInterceptor) { - return ((SeataInterceptor)seataAdvice).getPosition(); - } else { - return SeataInterceptorPosition.Any; - } - } - - private boolean isTransactionInterceptor(Advisor advisor) { - return SPRING_TRANSACTION_INTERCEPTOR_CLASS_NAME.equals(advisor.getAdvice().getClass().getName()); - } - - //endregion the methods about findAddSeataAdvisorPosition END - - - private boolean existsAnnotation(Class... classes) { - if (CollectionUtils.isNotEmpty(classes)) { - for (Class clazz : classes) { - if (clazz == null) { - continue; - } - GlobalTransactional trxAnno = clazz.getAnnotation(GlobalTransactional.class); - if (trxAnno != null) { - return true; - } - Method[] methods = clazz.getMethods(); - for (Method method : methods) { - trxAnno = method.getAnnotation(GlobalTransactional.class); - if (trxAnno != null) { - return true; - } - - GlobalLock lockAnno = method.getAnnotation(GlobalLock.class); - if (lockAnno != null) { - return true; - } - } - } - } - return false; - } - private MethodDesc makeMethodDesc(GlobalTransactional anno, Method method) { return new MethodDesc(anno, method); } @@ -505,7 +315,7 @@ public void afterPropertiesSet() { LOGGER.info("Global transaction is disabled."); } ConfigurationCache.addConfigListener(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, - (ConfigurationChangeListener)this); + (ConfigurationChangeListener) this); return; } if (initialized.compareAndSet(false, true)) { diff --git a/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java b/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java new file mode 100644 index 00000000000..457e4006efe --- /dev/null +++ b/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java @@ -0,0 +1,85 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.spring.remoting.parser; + +import io.seata.common.exception.FrameworkException; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.parser.AbstractedRemotingParser; +import io.seata.integration.tx.api.remoting.parser.DefaultRemotingParser; +import io.seata.spring.util.SpringProxyUtils; +import org.springframework.context.ApplicationContext; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class RemotingFactoryBeanParser extends AbstractedRemotingParser { + + public static ApplicationContext applicationContext; + + /** + * if it is proxy bean, check if the FactoryBean is Remoting bean + * + * @param bean the bean + * @param beanName the bean name + * @return boolean boolean + */ + protected static Object getRemotingFactoryBean(Object bean, String beanName) { + if (!SpringProxyUtils.isProxy(bean)) { + return null; + } + //the FactoryBean of proxy bean + String factoryBeanName = "&" + beanName; + Object factoryBean = null; + if (applicationContext != null && applicationContext.containsBean(factoryBeanName)) { + factoryBean = applicationContext.getBean(factoryBeanName); + } + return factoryBean; + } + + @Override + public boolean isReference(Object bean, String beanName) { + Object factoryBean = getRemotingFactoryBean(bean, beanName); + if (factoryBean == null) { + return false; + } + return DefaultRemotingParser.get().isReference(bean, beanName); + } + + @Override + public boolean isService(Object bean, String beanName) { + Object factoryBean = getRemotingFactoryBean(bean, beanName); + if (factoryBean == null) { + return false; + } + return DefaultRemotingParser.get().isReference(bean, beanName); + } + + @Override + public RemotingDesc getServiceDesc(Object bean, String beanName) throws FrameworkException { + Object factoryBean = getRemotingFactoryBean(bean, beanName); + if (factoryBean == null) { + return null; + } + return DefaultRemotingParser.get().getServiceDesc(bean, beanName); + } + + + @Override + public short getProtocol() { + return 0; + } +} \ No newline at end of file diff --git a/spring/src/main/java/io/seata/spring/tcc/TccActionInterceptor.java b/spring/src/main/java/io/seata/spring/tcc/TccActionInterceptor.java deleted file mode 100644 index b09f282ec72..00000000000 --- a/spring/src/main/java/io/seata/spring/tcc/TccActionInterceptor.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 1999-2019 Seata.io Group. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.seata.spring.tcc; - -import java.lang.reflect.Method; -import javax.annotation.Nullable; - -import io.seata.common.DefaultValues; -import io.seata.config.ConfigurationChangeEvent; -import io.seata.config.ConfigurationChangeListener; -import io.seata.config.ConfigurationFactory; -import io.seata.core.constants.ConfigurationKeys; -import io.seata.core.context.RootContext; -import io.seata.core.model.BranchType; -import io.seata.rm.tcc.api.TwoPhaseBusinessAction; -import io.seata.rm.tcc.interceptor.ActionInterceptorHandler; -import io.seata.rm.tcc.remoting.RemotingDesc; -import io.seata.rm.tcc.remoting.parser.DubboUtil; -import io.seata.spring.util.SpringProxyUtils; -import org.aopalliance.intercept.MethodInterceptor; -import org.aopalliance.intercept.MethodInvocation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.MDC; -import org.springframework.core.Ordered; - -import static io.seata.common.DefaultValues.DEFAULT_DISABLE_GLOBAL_TRANSACTION; -import static io.seata.core.constants.ConfigurationKeys.TCC_ACTION_INTERCEPTOR_ORDER; - -/** - * TCC Interceptor - * - * @author zhangsen - * @author wang.liang - */ -public class TccActionInterceptor implements MethodInterceptor, ConfigurationChangeListener, Ordered { - - private static final Logger LOGGER = LoggerFactory.getLogger(TccActionInterceptor.class); - private static final int ORDER_NUM = ConfigurationFactory.getInstance().getInt(TCC_ACTION_INTERCEPTOR_ORDER, - DefaultValues.TCC_ACTION_INTERCEPTOR_ORDER); - - private ActionInterceptorHandler actionInterceptorHandler = new ActionInterceptorHandler(); - - private volatile boolean disable = ConfigurationFactory.getInstance().getBoolean( - ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, DEFAULT_DISABLE_GLOBAL_TRANSACTION); - - /** - * remoting bean info - */ - protected RemotingDesc remotingDesc; - - /** - * Instantiates a new Tcc action interceptor. - */ - public TccActionInterceptor() { - } - - /** - * Instantiates a new Tcc action interceptor. - * - * @param remotingDesc the remoting desc - */ - public TccActionInterceptor(RemotingDesc remotingDesc) { - this.remotingDesc = remotingDesc; - } - - @Override - public Object invoke(final MethodInvocation invocation) throws Throwable { - if (!RootContext.inGlobalTransaction() || disable || RootContext.inSagaBranch()) { - //not in transaction, or this interceptor is disabled - return invocation.proceed(); - } - Method method = getActionInterfaceMethod(invocation); - TwoPhaseBusinessAction businessAction = method.getAnnotation(TwoPhaseBusinessAction.class); - //try method - if (businessAction != null) { - //save the xid - String xid = RootContext.getXID(); - //save the previous branchType - BranchType previousBranchType = RootContext.getBranchType(); - //if not TCC, bind TCC branchType - if (BranchType.TCC != previousBranchType) { - RootContext.bindBranchType(BranchType.TCC); - } - try { - //Handler the TCC Aspect, and return the business result - return actionInterceptorHandler.proceed(method, invocation.getArguments(), xid, businessAction, - invocation::proceed); - } finally { - //if not TCC, unbind branchType - if (BranchType.TCC != previousBranchType) { - RootContext.unbindBranchType(); - } - //MDC remove branchId - MDC.remove(RootContext.MDC_KEY_BRANCH_ID); - } - } - - //not TCC try method - return invocation.proceed(); - } - - /** - * get the method from interface - * - * @param invocation the invocation - * @return the action interface method - */ - protected Method getActionInterfaceMethod(MethodInvocation invocation) { - Class serviceType = null; - try { - if (remotingDesc == null) { - serviceType = getProxyInterface(invocation.getThis()); - } else { - serviceType = remotingDesc.getServiceClass(); - } - if (serviceType == null && remotingDesc != null && remotingDesc.getServiceClassName() != null) { - serviceType = Class.forName(remotingDesc.getServiceClassName(), true, - Thread.currentThread().getContextClassLoader()); - } - if (serviceType == null) { - return invocation.getMethod(); - } - return serviceType.getMethod(invocation.getMethod().getName(), - invocation.getMethod().getParameterTypes()); - } catch (NoSuchMethodException e) { - if (serviceType != null && !"toString".equals(invocation.getMethod().getName())) { - LOGGER.warn("no such method '{}' from interface {}", invocation.getMethod().getName(), serviceType.getName()); - } - return invocation.getMethod(); - } catch (Exception e) { - LOGGER.warn("get Method from interface failed", e); - return invocation.getMethod(); - } - } - - /** - * get the interface of proxy - * - * @param proxyBean the proxy bean - * @return proxy interface - * @throws Exception the exception - */ - @Nullable - protected Class getProxyInterface(Object proxyBean) throws Exception { - if (DubboUtil.isDubboProxyName(proxyBean.getClass().getName())) { - //dubbo javaassist proxy - return DubboUtil.getAssistInterface(proxyBean); - } else { - //jdk/cglib proxy - return SpringProxyUtils.getTargetInterface(proxyBean); - } - } - - @Override - public void onChangeEvent(ConfigurationChangeEvent event) { - if (ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION.equals(event.getDataId())) { - LOGGER.info("{} config changed, old value:{}, new value:{}", ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION, - disable, event.getNewValue()); - disable = Boolean.parseBoolean(event.getNewValue().trim()); - } - } - - @Override - public int getOrder() { - return ORDER_NUM; - } -} diff --git a/spring/src/main/java/io/seata/spring/tcc/TccAnnotationProcessor.java b/spring/src/main/java/io/seata/spring/tcc/TccAnnotationProcessor.java index 9b496fbe533..130e3cad82e 100644 --- a/spring/src/main/java/io/seata/spring/tcc/TccAnnotationProcessor.java +++ b/spring/src/main/java/io/seata/spring/tcc/TccAnnotationProcessor.java @@ -15,9 +15,9 @@ */ package io.seata.spring.tcc; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.util.ProxyUtil; import io.seata.rm.tcc.api.TwoPhaseBusinessAction; -import io.seata.rm.tcc.remoting.RemotingDesc; -import io.seata.spring.util.TCCBeanParserUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; @@ -103,11 +103,10 @@ public void addTccAdvise(Object bean, String beanName, Field field, Class servic RemotingDesc remotingDesc = new RemotingDesc(); remotingDesc.setServiceClass(serviceClass); - TccActionInterceptor actionInterceptor = new TccActionInterceptor(remotingDesc); - Object proxyBean = TCCBeanParserUtils.createProxy(serviceClass, fieldValue, actionInterceptor); + Object proxyBean = ProxyUtil.createProxy(bean); field.setAccessible(true); field.set(bean, proxyBean); - LOGGER.info("Bean[" + bean.getClass().getName() + "] with name [" + field.getName() + "] would use proxy [" + actionInterceptor.getClass().getName() + "]"); + LOGGER.info("Bean[" + bean.getClass().getName() + "] with name [" + field.getName() + "] would use proxy"); } } } diff --git a/spring/src/main/java/io/seata/spring/util/SpringProxyUtils.java b/spring/src/main/java/io/seata/spring/util/SpringProxyUtils.java index c07455b9b79..37bc4f16cb0 100644 --- a/spring/src/main/java/io/seata/spring/util/SpringProxyUtils.java +++ b/spring/src/main/java/io/seata/spring/util/SpringProxyUtils.java @@ -22,7 +22,7 @@ import java.util.Set; import io.seata.common.util.CollectionUtils; -import io.seata.rm.tcc.remoting.parser.DubboUtil; +import io.seata.integration.tx.api.util.DubboUtil; import org.springframework.aop.TargetSource; import org.springframework.aop.framework.Advised; import org.springframework.aop.framework.AdvisedSupport; @@ -122,7 +122,7 @@ public static boolean isProxy(Object bean) { */ public static Class getTargetInterface(Object proxy) throws Exception { if (proxy == null) { - throw new java.lang.IllegalArgumentException("proxy can not be null"); + throw new IllegalArgumentException("proxy can not be null"); } //jdk proxy @@ -143,7 +143,7 @@ public static Class getTargetInterface(Object proxy) throws Exception { */ protected static Class getTargetClass(Object proxy) throws Exception { if (proxy == null) { - throw new java.lang.IllegalArgumentException("proxy can not be null"); + throw new IllegalArgumentException("proxy can not be null"); } //not proxy if (!AopUtils.isAopProxy(proxy)) { diff --git a/spring/src/main/java/io/seata/spring/util/TCCBeanParserUtils.java b/spring/src/main/java/io/seata/spring/util/TCCBeanParserUtils.java deleted file mode 100644 index 5ccd339cc3b..00000000000 --- a/spring/src/main/java/io/seata/spring/util/TCCBeanParserUtils.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 1999-2019 Seata.io Group. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.seata.spring.util; - -import io.seata.common.DefaultValues; -import io.seata.rm.tcc.api.TwoPhaseBusinessAction; -import io.seata.rm.tcc.config.TCCFenceConfig; -import io.seata.rm.tcc.remoting.Protocols; -import io.seata.rm.tcc.remoting.RemotingDesc; -import io.seata.rm.tcc.remoting.RemotingParser; -import io.seata.rm.tcc.remoting.parser.DefaultRemotingParser; -import io.seata.spring.tcc.TccActionInterceptor; -import org.springframework.aop.framework.ProxyFactory; -import org.springframework.context.ApplicationContext; - -import java.lang.reflect.Method; - -/** - * parser TCC bean - * - * @author zhangsen - */ -public class TCCBeanParserUtils { - - private TCCBeanParserUtils() { - } - - /** - * is auto proxy TCC bean - * - * @param bean the bean - * @param beanName the bean name - * @param applicationContext the application context - * @return boolean boolean - */ - public static boolean isTccAutoProxy(Object bean, String beanName, ApplicationContext applicationContext) { - boolean isRemotingBean = parserRemotingServiceInfo(bean, beanName); - //get RemotingBean description - RemotingDesc remotingDesc = DefaultRemotingParser.get().getRemotingBeanDesc(beanName); - //is remoting bean - if (isRemotingBean) { - if (remotingDesc != null && remotingDesc.getProtocol() == Protocols.IN_JVM) { - //LocalTCC - return isTccProxyTargetBean(remotingDesc); - } else { - // sofa:reference / dubbo:reference, factory bean - return false; - } - } else { - if (remotingDesc == null) { - //check FactoryBean - if (isRemotingFactoryBean(bean, beanName, applicationContext)) { - remotingDesc = DefaultRemotingParser.get().getRemotingBeanDesc(beanName); - return isTccProxyTargetBean(remotingDesc); - } else { - return false; - } - } else { - return isTccProxyTargetBean(remotingDesc); - } - } - } - - /** - * if it is proxy bean, check if the FactoryBean is Remoting bean - * - * @param bean the bean - * @param beanName the bean name - * @param applicationContext the application context - * @return boolean boolean - */ - protected static boolean isRemotingFactoryBean(Object bean, String beanName, - ApplicationContext applicationContext) { - if (!SpringProxyUtils.isProxy(bean)) { - return false; - } - //the FactoryBean of proxy bean - String factoryBeanName = "&" + beanName; - Object factoryBean = null; - if (applicationContext != null && applicationContext.containsBean(factoryBeanName)) { - factoryBean = applicationContext.getBean(factoryBeanName); - } - //not factory bean, needn't proxy - if (factoryBean == null) { - return false; - } - //get FactoryBean info - return parserRemotingServiceInfo(factoryBean, beanName); - } - - /** - * is TCC proxy-bean/target-bean: LocalTCC , the proxy bean of sofa:reference/dubbo:reference - * - * @param remotingDesc the remoting desc - * @return boolean boolean - */ - public static boolean isTccProxyTargetBean(RemotingDesc remotingDesc) { - if (remotingDesc == null) { - return false; - } - //check if it is TCC bean - boolean isTccClazz = false; - Class tccServiceClazz = remotingDesc.getServiceClass(); - Method[] methods = tccServiceClazz.getMethods(); - TwoPhaseBusinessAction twoPhaseBusinessAction; - for (Method method : methods) { - twoPhaseBusinessAction = method.getAnnotation(TwoPhaseBusinessAction.class); - if (twoPhaseBusinessAction != null) { - isTccClazz = true; - break; - } - } - if (!isTccClazz) { - return false; - } - short protocols = remotingDesc.getProtocol(); - //LocalTCC - if (Protocols.IN_JVM == protocols) { - //in jvm TCC bean , AOP - return true; - } - // sofa:reference / dubbo:reference, AOP - return remotingDesc.isReference(); - } - - /** - * init tcc fence clean task if enable useTccFence - * - * @param remotingDesc the remoting desc - * @param applicationContext applicationContext - */ - public static void initTccFenceCleanTask(RemotingDesc remotingDesc, ApplicationContext applicationContext) { - if (remotingDesc == null) { - return; - } - if (applicationContext != null && applicationContext.containsBean(DefaultValues.TCC_FENCE_BEAN_NAME)) { - TCCFenceConfig tccFenceConfig = (TCCFenceConfig) applicationContext.getBean(DefaultValues.TCC_FENCE_BEAN_NAME); - if (tccFenceConfig == null || tccFenceConfig.getInitialized().get()) { - return; - } - Class tccServiceClazz = remotingDesc.getServiceClass(); - Method[] methods = tccServiceClazz.getMethods(); - for (Method method : methods) { - TwoPhaseBusinessAction twoPhaseBusinessAction = method.getAnnotation(TwoPhaseBusinessAction.class); - if (twoPhaseBusinessAction != null && twoPhaseBusinessAction.useTCCFence()) { - if (tccFenceConfig.getInitialized().compareAndSet(false, true)) { - // init tcc fence clean task if enable useTccFence - tccFenceConfig.initCleanTask(); - break; - } - } - } - } - } - - /** - * get remoting bean info: sofa:service, sofa:reference, dubbo:reference, dubbo:service - * - * @param bean the bean - * @param beanName the bean name - * @return if sofa:service, sofa:reference, dubbo:reference, dubbo:service return true, else return false - */ - protected static boolean parserRemotingServiceInfo(Object bean, String beanName) { - RemotingParser remotingParser = DefaultRemotingParser.get().isRemoting(bean, beanName); - if (remotingParser != null) { - return DefaultRemotingParser.get().parserRemotingServiceInfo(bean, beanName, remotingParser) != null; - } - return false; - } - - /** - * get the remoting description of TCC bean - * - * @param beanName the bean name - * @return remoting desc - */ - public static RemotingDesc getRemotingDesc(String beanName) { - return DefaultRemotingParser.get().getRemotingBeanDesc(beanName); - } - - /** - * Create a proxy bean for tcc service - * - * @param interfaceClass the interface class - * @param fieldValue the field value - * @param actionInterceptor the action interceptor - * @return the service proxy bean - */ - public static T createProxy(Class interfaceClass, Object fieldValue, TccActionInterceptor actionInterceptor) { - ProxyFactory factory = new ProxyFactory(); - factory.setTarget(fieldValue); - factory.setInterfaces(interfaceClass); - factory.addAdvice(actionInterceptor); - - return (T) factory.getProxy(); - } -} diff --git a/spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.TargetClassParser b/spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.TargetClassParser new file mode 100644 index 00000000000..d811d7b2c51 --- /dev/null +++ b/spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.TargetClassParser @@ -0,0 +1 @@ +io.seata.spring.SpringTargetClassParser \ No newline at end of file diff --git a/spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser b/spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser new file mode 100644 index 00000000000..3de6f0e864d --- /dev/null +++ b/spring/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser @@ -0,0 +1 @@ +io.seata.spring.remoting.parser.RemotingFactoryBeanParser \ No newline at end of file diff --git a/spring/src/test/java/io/seata/spring/annotation/GlobalTransactionScannerTest.java b/spring/src/test/java/io/seata/spring/annotation/GlobalTransactionScannerTest.java deleted file mode 100644 index 1ab5b9927be..00000000000 --- a/spring/src/test/java/io/seata/spring/annotation/GlobalTransactionScannerTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 1999-2019 Seata.io Group. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.seata.spring.annotation; - -import io.seata.spring.tcc.LocalTccAction; -import io.seata.spring.tcc.LocalTccActionImpl; -import io.seata.spring.tcc.TccAction; -import io.seata.spring.tcc.TccActionImpl; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import java.util.stream.Stream; - -/** - * GlobalTransactionScanner Unit Test - */ -public class GlobalTransactionScannerTest { - /** - * The Global transaction scanner. - */ - protected GlobalTransactionScanner globalTransactionScanner = new GlobalTransactionScanner("global-trans-scanner-test"); - - /** - * Test wrap normal bean. - * - * @param bean the bean - * @param beanName the bean name - * @param cacheKey the cache key - */ - @ParameterizedTest - @MethodSource("normalBeanProvider") - public void testWrapNormalBean(Object bean, String beanName, Object cacheKey) { - Object result = globalTransactionScanner.wrapIfNecessary(bean, beanName, cacheKey); - Assertions.assertNotSame(result, bean); - } - - /** - * wrap nothing - * - * @param bean the bean - * @param beanName the bean name - * @param cacheKey the cache key - */ - @ParameterizedTest - @MethodSource("normalTccBeanProvider") - public void testWrapNormalTccBean(Object bean, String beanName, Object cacheKey) { - Object result = globalTransactionScanner.wrapIfNecessary(bean, beanName, cacheKey); - Assertions.assertSame(result, bean); - } - - /** - * wrapped - * - * @param bean the bean - * @param beanName the bean name - * @param cacheKey the cache key - */ - @ParameterizedTest - @MethodSource("localTccBeanProvider") - public void testWrapLocalTccBean(Object bean, String beanName, Object cacheKey) { - TccAction result = (LocalTccAction) globalTransactionScanner.wrapIfNecessary(bean, beanName, cacheKey); - Assertions.assertNotSame(result, bean); - } - - /** - * Test after properties set. - */ - @Test - public void testAfterPropertiesSet() { - globalTransactionScanner.afterPropertiesSet(); - } - - /** - * Normal bean provider object [ ] [ ]. - * - * @return the object [ ] [ ] - */ - static Stream normalBeanProvider() { - Business business = new BusinessImpl(); - String beanName = "business"; - String cacheKey = "business-key"; - return Stream.of( - Arguments.of(business, beanName, cacheKey) - ); - } - - /** - * Normal tcc bean provider object [ ] [ ]. - * - * @return the object [ ] [ ] - */ - static Stream normalTccBeanProvider() { - TccAction tccAction = new TccActionImpl(); - String beanName = "tccBean"; - String cacheKey = "tccBean-key"; - return Stream.of( - Arguments.of(tccAction, beanName, cacheKey) - ); - } - - /** - * Local tcc bean provider object [ ] [ ]. - * - * @return the object [ ] [ ] - */ - static Stream localTccBeanProvider() { - LocalTccAction localTccAction = new LocalTccActionImpl(); - String beanName = "lcoalTccBean"; - String cacheKey = "lcoalTccBean-key"; - return Stream.of( - Arguments.of(localTccAction, beanName, cacheKey) - ); - } -} diff --git a/spring/src/test/java/io/seata/spring/annotation/MethodDescTest.java b/spring/src/test/java/io/seata/spring/annotation/MethodDescTest.java index 68d6696adb9..1733e7149e0 100644 --- a/spring/src/test/java/io/seata/spring/annotation/MethodDescTest.java +++ b/spring/src/test/java/io/seata/spring/annotation/MethodDescTest.java @@ -17,15 +17,16 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import io.seata.common.exception.FrameworkException; + import io.seata.common.DefaultValues; +import io.seata.common.exception.FrameworkException; import io.seata.core.context.RootContext; +import io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.aop.framework.ProxyFactory; - import static org.assertj.core.api.Assertions.assertThat; /** @@ -46,7 +47,7 @@ public MethodDescTest() throws NoSuchMethodException { @Test public void testGetAnnotation() throws NoSuchMethodException { - GlobalTransactionalInterceptor globalTransactionalInterceptor = new GlobalTransactionalInterceptor(null); + GlobalTransactionalInterceptorHandler globalTransactionalInterceptor = new GlobalTransactionalInterceptorHandler(null, null, null); Method method = MockBusiness.class.getDeclaredMethod("doBiz", String.class); targetClass = Mockito.mock(MockBusiness.class).getClass(); transactional = globalTransactionalInterceptor.getAnnotation(method, targetClass, GlobalTransactional.class); @@ -74,7 +75,7 @@ public void testGlobalTransactional() throws NoSuchMethodException { MockClassAnnotation mockClassAnnotation = new MockClassAnnotation(); ProxyFactory proxyFactory = new ProxyFactory(); proxyFactory.setTarget(mockClassAnnotation); - proxyFactory.addAdvice(new GlobalTransactionalInterceptor(null)); + proxyFactory.addAdvice(new AspectTransactionalInterceptor()); Object proxy = proxyFactory.getProxy(); mockClassAnnotation = (MockClassAnnotation)proxy; mockClassAnnotation.toString(); diff --git a/tcc/pom.xml b/tcc/pom.xml index 70d8a152bdf..a9f9e847841 100644 --- a/tcc/pom.xml +++ b/tcc/pom.xml @@ -52,5 +52,10 @@ com.alibaba fastjson + + ${project.groupId} + seata-integration-tx-api + ${project.version} + - + \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/TCCResourceManager.java b/tcc/src/main/java/io/seata/rm/tcc/TCCResourceManager.java index f431861e7ce..d5d2cd2fa7b 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/TCCResourceManager.java +++ b/tcc/src/main/java/io/seata/rm/tcc/TCCResourceManager.java @@ -17,21 +17,21 @@ import java.lang.reflect.Method; import java.lang.reflect.UndeclaredThrowableException; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import com.alibaba.fastjson.JSON; import io.seata.common.Constants; import io.seata.common.exception.ShouldNeverHappenException; import io.seata.common.exception.SkipCallbackWrapperException; -import io.seata.common.util.StringUtils; import io.seata.core.exception.TransactionException; import io.seata.core.model.BranchStatus; import io.seata.core.model.BranchType; import io.seata.core.model.Resource; +import io.seata.integration.tx.api.fence.DefaultCommonFenceHandler; +import io.seata.integration.tx.api.remoting.TwoPhaseResult; import io.seata.rm.AbstractResourceManager; import io.seata.rm.tcc.api.BusinessActionContext; +import io.seata.rm.tcc.api.BusinessActionContextUtil; /** * TCC resource manager @@ -95,15 +95,16 @@ public BranchStatus branchCommit(BranchType branchType, String xid, long branchI } try { //BusinessActionContext - BusinessActionContext businessActionContext = getBusinessActionContext(xid, branchId, resourceId, - applicationData); + BusinessActionContext businessActionContext = BusinessActionContextUtil.getBusinessActionContext(xid, branchId, resourceId, + applicationData); + Object[] args = this.getTwoPhaseCommitArgs(tccResource, businessActionContext); Object ret; boolean result; // add idempotent and anti hanging - if (Boolean.TRUE.equals(businessActionContext.getActionContext(Constants.USE_TCC_FENCE))) { + if (Boolean.TRUE.equals(businessActionContext.getActionContext(Constants.USE_COMMON_FENCE))) { try { - result = TCCFenceHandler.commitFence(commitMethod, targetTCCBean, xid, branchId, args); + result = DefaultCommonFenceHandler.get().commitFence(commitMethod, targetTCCBean, xid, branchId, args); } catch (SkipCallbackWrapperException | UndeclaredThrowableException e) { throw e.getCause(); } @@ -153,15 +154,15 @@ public BranchStatus branchRollback(BranchType branchType, String xid, long branc } try { //BusinessActionContext - BusinessActionContext businessActionContext = getBusinessActionContext(xid, branchId, resourceId, - applicationData); + BusinessActionContext businessActionContext = BusinessActionContextUtil.getBusinessActionContext(xid, branchId, resourceId, + applicationData); Object[] args = this.getTwoPhaseRollbackArgs(tccResource, businessActionContext); Object ret; boolean result; // add idempotent and anti hanging - if (Boolean.TRUE.equals(businessActionContext.getActionContext(Constants.USE_TCC_FENCE))) { + if (Boolean.TRUE.equals(businessActionContext.getActionContext(Constants.USE_COMMON_FENCE))) { try { - result = TCCFenceHandler.rollbackFence(rollbackMethod, targetTCCBean, xid, branchId, + result = DefaultCommonFenceHandler.get().rollbackFence(rollbackMethod, targetTCCBean, xid, branchId, args, tccResource.getActionName()); } catch (SkipCallbackWrapperException | UndeclaredThrowableException e) { throw e.getCause(); @@ -187,33 +188,6 @@ public BranchStatus branchRollback(BranchType branchType, String xid, long branc } } - /** - * transfer tcc applicationData to BusinessActionContext - * - * @param xid the xid - * @param branchId the branch id - * @param resourceId the resource id - * @param applicationData the application data - * @return business action context - */ - protected BusinessActionContext getBusinessActionContext(String xid, long branchId, String resourceId, - String applicationData) { - Map actionContextMap = null; - if (StringUtils.isNotBlank(applicationData)) { - Map tccContext = JSON.parseObject(applicationData, Map.class); - actionContextMap = (Map)tccContext.get(Constants.TCC_ACTION_CONTEXT); - } - if (actionContextMap == null) { - actionContextMap = new HashMap<>(2); - } - - //instance the action context - BusinessActionContext businessActionContext = new BusinessActionContext( - xid, String.valueOf(branchId), actionContextMap); - businessActionContext.setActionName(resourceId); - return businessActionContext; - } - /** * get phase two commit method's args * @param tccResource tccResource @@ -223,7 +197,7 @@ protected BusinessActionContext getBusinessActionContext(String xid, long branch private Object[] getTwoPhaseCommitArgs(TCCResource tccResource, BusinessActionContext businessActionContext) { String[] keys = tccResource.getPhaseTwoCommitKeys(); Class[] argsCommitClasses = tccResource.getCommitArgsClasses(); - return this.getTwoPhaseMethodParams(keys, argsCommitClasses, businessActionContext); + return BusinessActionContextUtil.getTwoPhaseMethodParams(keys, argsCommitClasses, businessActionContext); } /** @@ -235,23 +209,11 @@ private Object[] getTwoPhaseCommitArgs(TCCResource tccResource, BusinessActionCo private Object[] getTwoPhaseRollbackArgs(TCCResource tccResource, BusinessActionContext businessActionContext) { String[] keys = tccResource.getPhaseTwoRollbackKeys(); Class[] argsRollbackClasses = tccResource.getRollbackArgsClasses(); - return this.getTwoPhaseMethodParams(keys, argsRollbackClasses, businessActionContext); - } - - private Object[] getTwoPhaseMethodParams(String[] keys, Class[] argsClasses, BusinessActionContext businessActionContext) { - Object[] args = new Object[argsClasses.length]; - for (int i = 0; i < argsClasses.length; i++) { - if (argsClasses[i].equals(BusinessActionContext.class)) { - args[i] = businessActionContext; - } else { - args[i] = businessActionContext.getActionContext(keys[i], argsClasses[i]); - } - } - return args; + return BusinessActionContextUtil.getTwoPhaseMethodParams(keys, argsRollbackClasses, businessActionContext); } @Override public BranchType getBranchType() { return BranchType.TCC; } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/api/LocalTCC.java b/tcc/src/main/java/io/seata/rm/tcc/api/LocalTCC.java index 4b3be4ea139..2a8ee88c40a 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/api/LocalTCC.java +++ b/tcc/src/main/java/io/seata/rm/tcc/api/LocalTCC.java @@ -15,6 +15,8 @@ */ package io.seata.rm.tcc.api; +import io.seata.rm.tcc.remoting.parser.LocalTCCRemotingParser; + import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; @@ -26,7 +28,7 @@ * * @author zhangsen * @see io.seata.spring.annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object) // the scanner for TM, GlobalLock, and TCC mode - * @see io.seata.rm.tcc.remoting.parser.LocalTCCRemotingParser // the RemotingParser impl for LocalTCC + * @see LocalTCCRemotingParser // the RemotingParser impl for LocalTCC */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) diff --git a/tcc/src/main/java/io/seata/rm/tcc/api/TwoPhaseBusinessAction.java b/tcc/src/main/java/io/seata/rm/tcc/api/TwoPhaseBusinessAction.java index 0bc714b7b6e..2b49c829578 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/api/TwoPhaseBusinessAction.java +++ b/tcc/src/main/java/io/seata/rm/tcc/api/TwoPhaseBusinessAction.java @@ -15,6 +15,8 @@ */ package io.seata.rm.tcc.api; +import io.seata.rm.tcc.interceptor.TccActionInterceptorHandler; + import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; @@ -29,7 +31,7 @@ * @author zhangsen * @see io.seata.rm.tcc.api.LocalTCC // TCC annotation, which added on the TCC interface. It can't be left out. * @see io.seata.spring.annotation.GlobalTransactionScanner#wrapIfNecessary(Object, String, Object) // the scanner for TM, GlobalLock, and TCC mode - * @see io.seata.spring.tcc.TccActionInterceptor // the interceptor of TCC mode + * @see TccActionInterceptorHandler // the interceptor of TCC mode * @see BusinessActionContext * @see BusinessActionContextUtil * @see BusinessActionContextParameter diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java b/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java new file mode 100644 index 00000000000..43ce91b237f --- /dev/null +++ b/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java @@ -0,0 +1,132 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.interceptor; + +import io.seata.common.Constants; +import io.seata.common.util.ReflectionUtil; +import io.seata.core.context.RootContext; +import io.seata.core.model.BranchType; +import io.seata.integration.tx.api.interceptor.ActionInterceptorHandler; +import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import io.seata.integration.tx.api.interceptor.TwoPhaseBusinessActionParam; +import io.seata.integration.tx.api.interceptor.handler.AbstractProxyInvocationHandler; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.rm.tcc.api.TwoPhaseBusinessAction; +import org.slf4j.MDC; + +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class TccActionInterceptorHandler extends AbstractProxyInvocationHandler { + + private ActionInterceptorHandler actionInterceptorHandler = new ActionInterceptorHandler(); + + private Set methodsToProxy; + private RemotingDesc remotingDesc; + + private Map parseAnnotationCache = new ConcurrentHashMap<>(); + + public TccActionInterceptorHandler(RemotingDesc remotingDesc, Set methodsToProxy) { + this.remotingDesc = remotingDesc; + this.methodsToProxy = methodsToProxy; + } + + @Override + public Set getMethodsToProxy() { + return methodsToProxy; + } + + @Override + protected Object doInvoke(InvocationWrapper invocation) throws Throwable { + if (!RootContext.inGlobalTransaction() || RootContext.inSagaBranch()) { + //not in transaction, or this interceptor is disabled + return invocation.proceed(); + } + Method method = invocation.getMethod(); + TwoPhaseBusinessAction businessAction = parseAnnotation(method); + + //try method + if (businessAction != null) { + //save the xid + String xid = RootContext.getXID(); + //save the previous branchType + BranchType previousBranchType = RootContext.getBranchType(); + //if not TCC, bind TCC branchType + if (BranchType.TCC != previousBranchType) { + RootContext.bindBranchType(BranchType.TCC); + } + try { + TwoPhaseBusinessActionParam businessActionParam = new TwoPhaseBusinessActionParam(); + businessActionParam.setActionName(businessAction.name()); + businessActionParam.setDelayReport(businessAction.isDelayReport()); + businessActionParam.setUseCommonFence(businessAction.useTCCFence()); + businessActionParam.setBranchType(BranchType.TCC); + Map businessActionContextMap = new HashMap<>(4); + //the phase two method name + businessActionContextMap.put(Constants.COMMIT_METHOD, businessAction.commitMethod()); + businessActionContextMap.put(Constants.ROLLBACK_METHOD, businessAction.rollbackMethod()); + businessActionContextMap.put(Constants.ACTION_NAME, businessAction.name()); + businessActionContextMap.put(Constants.USE_COMMON_FENCE, businessAction.useTCCFence()); + businessActionParam.setBusinessActionContext(businessActionContextMap); + //Handler the TCC Aspect, and return the business result + return actionInterceptorHandler.proceed(method, invocation.getArguments(), xid, businessActionParam, + invocation::proceed); + } finally { + //if not TCC, unbind branchType + if (BranchType.TCC != previousBranchType) { + RootContext.unbindBranchType(); + } + //MDC remove branchId + MDC.remove(RootContext.MDC_KEY_BRANCH_ID); + } + } + + //not TCC try method + return invocation.proceed(); + } + + private TwoPhaseBusinessAction parseAnnotation(Method methodKey) throws NoSuchMethodException { + TwoPhaseBusinessAction result = parseAnnotationCache.computeIfAbsent(methodKey, method -> { + TwoPhaseBusinessAction businessAction = method.getAnnotation(TwoPhaseBusinessAction.class); + if (businessAction == null && remotingDesc.getServiceClass() != null) { + Set> interfaceClasses = ReflectionUtil.getInterfaces(remotingDesc.getServiceClass()); + if (interfaceClasses != null) { + for (Class interClass : interfaceClasses) { + try { + Method m = interClass.getMethod(method.getName(), method.getParameterTypes()); + businessAction = m.getAnnotation(TwoPhaseBusinessAction.class); + if (businessAction != null) { + break; + } + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + } + } + return businessAction; + }); + return result; + } + +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java b/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java new file mode 100644 index 00000000000..3f3cb5483c8 --- /dev/null +++ b/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java @@ -0,0 +1,97 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.interceptor.parser; + +import io.seata.common.util.ReflectionUtil; +import io.seata.integration.tx.api.interceptor.TxBeanParserUtils; +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import io.seata.integration.tx.api.interceptor.parser.DefaultResourceRegisterParser; +import io.seata.integration.tx.api.interceptor.parser.InterfaceParser; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.parser.DefaultRemotingParser; +import io.seata.rm.tcc.api.TwoPhaseBusinessAction; +import io.seata.rm.tcc.interceptor.TccActionInterceptorHandler; + +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * @author leezongjie + * @date 2022/11/26 + */ +public class TccActionInterceptorParser implements InterfaceParser { + + @Override + public ProxyInvocationHandler parserInterfaceToProxy(Object target) { + boolean isTxRemotingBean = TxBeanParserUtils.isTxRemotingBean(target, target.toString()); + if (isTxRemotingBean) { + RemotingDesc remotingDesc = DefaultRemotingParser.get().getRemotingBeanDesc(target); + if (remotingDesc != null) { + if (remotingDesc.isService()) { + DefaultResourceRegisterParser.get().registerResource(target); + } + if (remotingDesc.isReference()) { + //if it is a tcc remote reference + Set methodsToProxy = tccProxyTargetMethod(remotingDesc); + if (remotingDesc != null && !methodsToProxy.isEmpty()) { + ProxyInvocationHandler proxyInvocationHandler = new TccActionInterceptorHandler(remotingDesc, methodsToProxy); + return proxyInvocationHandler; + } + } + } + } + return null; + } + + /** + * is TCC proxy-bean/target-bean: LocalTCC , the proxy bean of sofa:reference/dubbo:reference + * + * @param remotingDesc the remoting desc + * @return boolean boolean + */ + private Set tccProxyTargetMethod(RemotingDesc remotingDesc) { + if (!remotingDesc.isReference() || remotingDesc == null) { + return Collections.emptySet(); + } + Set methodsToProxy = new HashSet<>(); + //check if it is TCC bean + Class tccServiceClazz = remotingDesc.getServiceClass(); + Set methods = new HashSet<>(Arrays.asList(tccServiceClazz.getMethods())); + Set> interfaceClasses = ReflectionUtil.getInterfaces(tccServiceClazz); + if (interfaceClasses != null) { + for (Class interClass : interfaceClasses) { + methods.addAll(Arrays.asList(interClass.getMethods())); + } + } + + TwoPhaseBusinessAction twoPhaseBusinessAction; + for (Method method : methods) { + twoPhaseBusinessAction = method.getAnnotation(TwoPhaseBusinessAction.class); + if (twoPhaseBusinessAction != null) { + methodsToProxy.add(method.getName()); + } + } + + if (methodsToProxy.isEmpty()) { + return Collections.emptySet(); + } + // sofa:reference / dubbo:reference, AOP + return methodsToProxy; + } +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java b/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java new file mode 100644 index 00000000000..ed50e15ea52 --- /dev/null +++ b/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java @@ -0,0 +1,36 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.json; + +import com.alibaba.fastjson.JSON; +import io.seata.integration.tx.api.json.JsonParser; + +/** + * @author leezongjie + * @date 2023/1/13 + */ +public class FastJsonParser implements JsonParser { + + @Override + public String toJSONString(Object object) { + return JSON.toJSONString(object); + } + + @Override + public T parseObject(String text, Class clazz) { + return JSON.parseObject(text, clazz); + } +} diff --git a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParser.java b/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParser.java index 7a966df29b5..e3133ed19dc 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParser.java +++ b/tcc/src/main/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParser.java @@ -15,15 +15,16 @@ */ package io.seata.rm.tcc.remoting.parser; -import java.util.Set; - import io.seata.common.exception.FrameworkException; import io.seata.common.util.ReflectionUtil; +import io.seata.integration.tx.api.remoting.Protocols; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.parser.AbstractedRemotingParser; import io.seata.rm.tcc.api.LocalTCC; -import io.seata.rm.tcc.remoting.Protocols; -import io.seata.rm.tcc.remoting.RemotingDesc; import org.springframework.aop.framework.AopProxyUtils; +import java.util.Set; + /** * local tcc bean parsing * @@ -47,7 +48,8 @@ public RemotingDesc getServiceDesc(Object bean, String beanName) throws Framewor return null; } RemotingDesc remotingDesc = new RemotingDesc(); - remotingDesc.setReference(true); + remotingDesc.setReference(this.isReference(bean, beanName)); + remotingDesc.setService(this.isService(bean, beanName)); remotingDesc.setProtocol(Protocols.IN_JVM); Class classType = bean.getClass(); // check if LocalTCC annotation is marked on the implementation class @@ -90,4 +92,4 @@ private boolean isLocalTCC(Object bean) { } return classType.isAnnotationPresent(LocalTCC.class); } -} +} \ No newline at end of file diff --git a/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java b/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java new file mode 100644 index 00000000000..d310f80a599 --- /dev/null +++ b/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java @@ -0,0 +1,120 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.resource.parser; + +import io.seata.common.exception.FrameworkException; +import io.seata.common.util.ReflectionUtil; +import io.seata.integration.tx.api.interceptor.ActionContextUtil; +import io.seata.integration.tx.api.interceptor.TxBeanParserUtils; +import io.seata.integration.tx.api.interceptor.parser.RegisterResourceParser; +import io.seata.integration.tx.api.remoting.RemotingDesc; +import io.seata.integration.tx.api.remoting.parser.DefaultRemotingParser; +import io.seata.rm.DefaultResourceManager; +import io.seata.rm.tcc.TCCResource; +import io.seata.rm.tcc.api.BusinessActionContext; +import io.seata.rm.tcc.api.BusinessActionContextParameter; +import io.seata.rm.tcc.api.TwoPhaseBusinessAction; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * @author leezongjie + * @date 2022/12/17 + */ +public class TccRegisterResourceParser implements RegisterResourceParser { + + @Override + public void registerResource(Object target) { + boolean isTxRemotingBean = TxBeanParserUtils.isTxRemotingBean(target, target.toString()); + if (isTxRemotingBean) { + RemotingDesc remotingDesc = DefaultRemotingParser.get().getRemotingBeanDesc(target); + if (remotingDesc != null) { + if (remotingDesc.isService()) { + try { + //service bean, registry resource + Class serviceClass = remotingDesc.getServiceClass(); + Set methods = new HashSet<>(Arrays.asList(serviceClass.getMethods())); + Set> interfaceClasses = ReflectionUtil.getInterfaces(serviceClass); + if (interfaceClasses != null) { + for (Class interClass : interfaceClasses) { + methods.addAll(Arrays.asList(interClass.getMethods())); + } + } + Object targetBean = remotingDesc.getTargetBean(); + for (Method m : methods) { + TwoPhaseBusinessAction twoPhaseBusinessAction = m.getAnnotation(TwoPhaseBusinessAction.class); + if (twoPhaseBusinessAction != null) { + TCCResource tccResource = new TCCResource(); + tccResource.setActionName(twoPhaseBusinessAction.name()); + tccResource.setTargetBean(targetBean); + tccResource.setPrepareMethod(m); + tccResource.setCommitMethodName(twoPhaseBusinessAction.commitMethod()); + tccResource.setCommitMethod(serviceClass.getMethod(twoPhaseBusinessAction.commitMethod(), + twoPhaseBusinessAction.commitArgsClasses())); + tccResource.setRollbackMethodName(twoPhaseBusinessAction.rollbackMethod()); + tccResource.setRollbackMethod(serviceClass.getMethod(twoPhaseBusinessAction.rollbackMethod(), + twoPhaseBusinessAction.rollbackArgsClasses())); + // set argsClasses + tccResource.setCommitArgsClasses(twoPhaseBusinessAction.commitArgsClasses()); + tccResource.setRollbackArgsClasses(twoPhaseBusinessAction.rollbackArgsClasses()); + // set phase two method's keys + tccResource.setPhaseTwoCommitKeys(this.getTwoPhaseArgs(tccResource.getCommitMethod(), + twoPhaseBusinessAction.commitArgsClasses())); + tccResource.setPhaseTwoRollbackKeys(this.getTwoPhaseArgs(tccResource.getRollbackMethod(), + twoPhaseBusinessAction.rollbackArgsClasses())); + //registry tcc resource + DefaultResourceManager.get().registerResource(tccResource); + } + } + } catch (Throwable t) { + throw new FrameworkException(t, "parser remoting service error"); + } + } + } + } + } + + protected String[] getTwoPhaseArgs(Method method, Class[] argsClasses) { + Annotation[][] parameterAnnotations = method.getParameterAnnotations(); + String[] keys = new String[parameterAnnotations.length]; + /* + * get parameter's key + * if method's parameter list is like + * (BusinessActionContext, @BusinessActionContextParameter("a") A a, @BusinessActionContextParameter("b") B b) + * the keys will be [null, a, b] + */ + for (int i = 0; i < parameterAnnotations.length; i++) { + for (int j = 0; j < parameterAnnotations[i].length; j++) { + if (parameterAnnotations[i][j] instanceof BusinessActionContextParameter) { + BusinessActionContextParameter param = (BusinessActionContextParameter) parameterAnnotations[i][j]; + String key = ActionContextUtil.getParamNameFromAnnotation(param); + keys[i] = key; + break; + } + } + if (keys[i] == null && !(argsClasses[i].equals(BusinessActionContext.class))) { + throw new IllegalArgumentException("non-BusinessActionContext parameter should use annotation " + + "BusinessActionContextParameter"); + } + } + return keys; + } + +} diff --git a/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser new file mode 100644 index 00000000000..99009fc2956 --- /dev/null +++ b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.InterfaceParser @@ -0,0 +1 @@ +io.seata.rm.tcc.interceptor.parser.TccActionInterceptorParser \ No newline at end of file diff --git a/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.RegisterResourceParser b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.RegisterResourceParser new file mode 100644 index 00000000000..9501e9d87cb --- /dev/null +++ b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.interceptor.parser.RegisterResourceParser @@ -0,0 +1 @@ +io.seata.rm.tcc.resource.parser.TccRegisterResourceParser \ No newline at end of file diff --git a/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.json.JsonParser b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.json.JsonParser new file mode 100644 index 00000000000..61bb4491af2 --- /dev/null +++ b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.json.JsonParser @@ -0,0 +1 @@ +io.seata.rm.tcc.json.FastJsonParser \ No newline at end of file diff --git a/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser new file mode 100644 index 00000000000..78ff6f2e846 --- /dev/null +++ b/tcc/src/main/resources/META-INF/services/io.seata.integration.tx.api.remoting.RemotingParser @@ -0,0 +1 @@ +io.seata.rm.tcc.remoting.parser.LocalTCCRemotingParser \ No newline at end of file diff --git a/tcc/src/main/resources/META-INF/services/io.seata.rm.tcc.remoting.RemotingParser b/tcc/src/main/resources/META-INF/services/io.seata.rm.tcc.remoting.RemotingParser deleted file mode 100644 index 30ef923192e..00000000000 --- a/tcc/src/main/resources/META-INF/services/io.seata.rm.tcc.remoting.RemotingParser +++ /dev/null @@ -1,4 +0,0 @@ -io.seata.rm.tcc.remoting.parser.DubboRemotingParser -io.seata.rm.tcc.remoting.parser.LocalTCCRemotingParser -io.seata.rm.tcc.remoting.parser.SofaRpcRemotingParser -io.seata.rm.tcc.remoting.parser.HSFRemotingParser \ No newline at end of file diff --git a/tcc/src/test/java/io/seata/rm/tcc/NormalTccAction.java b/tcc/src/test/java/io/seata/rm/tcc/NormalTccAction.java new file mode 100644 index 00000000000..1e3a0dc068e --- /dev/null +++ b/tcc/src/test/java/io/seata/rm/tcc/NormalTccAction.java @@ -0,0 +1,64 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc; + +import io.seata.rm.tcc.api.BusinessActionContext; +import io.seata.rm.tcc.api.BusinessActionContextParameter; +import io.seata.rm.tcc.api.LocalTCC; +import io.seata.rm.tcc.api.TwoPhaseBusinessAction; + +import java.util.List; + +/** + * The interface Tcc action. + * + * @author zhangsen + */ +@LocalTCC +public interface NormalTccAction { + + /** + * Prepare boolean. + * + * @param actionContext the action context + * @param a the a + * @param b the b + * @param tccParam the tcc param + * @return the boolean + */ + @TwoPhaseBusinessAction(name = "tccActionForTest", commitMethod = "commit", rollbackMethod = "rollback", commitArgsClasses = {BusinessActionContext.class, TccParam.class}, rollbackArgsClasses = {BusinessActionContext.class, TccParam.class}) + String prepare(BusinessActionContext actionContext, + @BusinessActionContextParameter("a") int a, + @BusinessActionContextParameter(paramName = "b", index = 0) List b, + @BusinessActionContextParameter(isParamInProperty = true) TccParam tccParam); + + /** + * Commit boolean. + * + * @param actionContext the action context + * @return the boolean + */ + boolean commit(BusinessActionContext actionContext, + @BusinessActionContextParameter("tccParam") TccParam param); + + /** + * Rollback boolean. + * + * @param actionContext the action context + * @return the boolean + */ + boolean rollback(BusinessActionContext actionContext, @BusinessActionContextParameter("tccParam") TccParam param); +} diff --git a/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java b/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java new file mode 100644 index 00000000000..60cd9cf1334 --- /dev/null +++ b/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java @@ -0,0 +1,48 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc; + + +import io.seata.rm.tcc.api.BusinessActionContext; + +import java.util.List; + +/** + * @author leezongjie + * @date 2022/12/9 + */ +public class NormalTccActionImpl implements NormalTccAction { + + @Override + public String prepare(BusinessActionContext actionContext, int a, List b, TccParam tccParam) { + return "a"; + } + + @Override + public boolean commit(BusinessActionContext actionContext, TccParam param) { + return false; + } + + @Override + public boolean rollback(BusinessActionContext actionContext, TccParam param) { + return false; + } + + public boolean otherMethod(){ + return true; + } + +} diff --git a/tcc/src/test/java/io/seata/rm/tcc/TccAction.java b/tcc/src/test/java/io/seata/rm/tcc/TccAction.java index 94f22365fa2..1c181b36a0f 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/TccAction.java +++ b/tcc/src/test/java/io/seata/rm/tcc/TccAction.java @@ -39,7 +39,7 @@ public interface TccAction { * @param tccParam the tcc param * @return the boolean */ - @TwoPhaseBusinessAction(name = "tccActionForTest", commitMethod = "commit", rollbackMethod = "rollback") + @TwoPhaseBusinessAction(name = "tccActionForTest", commitMethod = "commit", rollbackMethod = "rollback", commitArgsClasses = {BusinessActionContext.class, TccParam.class, Integer.class}, rollbackArgsClasses = {BusinessActionContext.class, TccParam.class}) boolean prepare(BusinessActionContext actionContext, @BusinessActionContextParameter("a") int a, @BusinessActionContextParameter(paramName = "b", index = 0) List b, diff --git a/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java b/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java new file mode 100644 index 00000000000..7187560d6d9 --- /dev/null +++ b/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java @@ -0,0 +1,130 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.interceptor; + +import io.seata.integration.tx.api.util.ProxyUtil; +import io.seata.core.context.RootContext; +import io.seata.core.exception.TransactionException; +import io.seata.core.model.BranchStatus; +import io.seata.core.model.BranchType; +import io.seata.core.model.Resource; +import io.seata.core.model.ResourceManager; +import io.seata.rm.DefaultResourceManager; +import io.seata.rm.tcc.NormalTccAction; +import io.seata.rm.tcc.NormalTccActionImpl; +import io.seata.rm.tcc.TccParam; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + +/** + * @author leezongjie + * @date 2022/12/14 + */ +public class ProxyUtilsTccTest { + + private final String DEFAULT_XID = "default_xid"; + + @Test + public void testTcc() { + //given + NormalTccActionImpl tccAction = new NormalTccActionImpl(); + + NormalTccAction tccActionProxy = ProxyUtil.createProxy(tccAction); + + RootContext.bind(DEFAULT_XID); + + TccParam tccParam = new TccParam(1, "abc@163.com"); + List listB = Arrays.asList("b"); + + AtomicReference branchReference = new AtomicReference(); + + ResourceManager resourceManager = new ResourceManager() { + + @Override + public Long branchRegister(BranchType branchType, String resourceId, String clientId, String xid, String applicationData, String lockKeys) throws TransactionException { + branchReference.set(resourceId); + return System.currentTimeMillis(); + } + + @Override + public void branchReport(BranchType branchType, String xid, long branchId, BranchStatus status, String applicationData) throws TransactionException { + + } + + @Override + public boolean lockQuery(BranchType branchType, String resourceId, String xid, String lockKeys) throws TransactionException { + return false; + } + + @Override + public BranchStatus branchCommit(BranchType branchType, String xid, long branchId, String resourceId, String applicationData) throws TransactionException { + return null; + } + + @Override + public BranchStatus branchRollback(BranchType branchType, String xid, long branchId, String resourceId, String applicationData) throws TransactionException { + return null; + } + + @Override + public void registerResource(Resource resource) { + + } + + @Override + public void unregisterResource(Resource resource) { + + } + + @Override + public Map getManagedResources() { + return null; + } + + @Override + public BranchType getBranchType() { + return null; + } + }; + + DefaultResourceManager.mockResourceManager(BranchType.TCC, resourceManager); + + //when + String result = tccActionProxy.prepare(null, 0, listB, tccParam); + + //then + Assertions.assertEquals("a", result); + Assertions.assertNotNull(result); + Assertions.assertEquals("tccActionForTest", branchReference.get()); + + } + + @Test + public void testTccImplementOtherMethod(){ + NormalTccActionImpl tccAction = new NormalTccActionImpl(); + NormalTccActionImpl tccActionProxy = ProxyUtil.createProxy(tccAction); + + Assertions.assertTrue(tccActionProxy.otherMethod()); + + } + + +} diff --git a/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java b/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java new file mode 100644 index 00000000000..9fd1b8205e2 --- /dev/null +++ b/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.interceptor.parser; + +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import io.seata.rm.tcc.NormalTccActionImpl; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author leezongjie + * @date 2022/12/8 + */ +class TccActionInterceptorParserTest { + + @Test + void parserInterfaceToProxy() { + + //given + TccActionInterceptorParser tccActionInterceptorParser = new TccActionInterceptorParser(); + NormalTccActionImpl tccAction = new NormalTccActionImpl(); + + //when + ProxyInvocationHandler proxyInvocationHandler = tccActionInterceptorParser.parserInterfaceToProxy(tccAction); + + //then + Assertions.assertNotNull(proxyInvocationHandler); + + } +} \ No newline at end of file diff --git a/tcc/src/test/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParserTest.java b/tcc/src/test/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParserTest.java index 6618c3395c0..d9afb753531 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParserTest.java +++ b/tcc/src/test/java/io/seata/rm/tcc/remoting/parser/LocalTCCRemotingParserTest.java @@ -15,9 +15,9 @@ */ package io.seata.rm.tcc.remoting.parser; +import io.seata.integration.tx.api.remoting.RemotingDesc; import io.seata.rm.tcc.TccAction; import io.seata.rm.tcc.TccActionImpl; -import io.seata.rm.tcc.remoting.RemotingDesc; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/tcc/src/test/java/io/seata/rm/tcc/remoting/parser/DefaultRemotingParserTest.java b/tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java similarity index 67% rename from tcc/src/test/java/io/seata/rm/tcc/remoting/parser/DefaultRemotingParserTest.java rename to tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java index 33e493af265..8b29a2e790b 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/remoting/parser/DefaultRemotingParserTest.java +++ b/tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.rm.tcc.remoting.parser; +package io.seata.rm.tcc.resource.parser; import io.seata.rm.tcc.TccParam; import io.seata.rm.tcc.api.BusinessActionContext; @@ -22,23 +22,26 @@ import java.lang.reflect.Method; -public class DefaultRemotingParserTest { +/** + * @author leezongjie + * @date 2022/12/23 + */ +class TccRegisterResourceParserTest { - DefaultRemotingParser defaultRemotingParser = new DefaultRemotingParser(); + TccRegisterResourceParser tccRegisterResourceParser = new TccRegisterResourceParser(); @Test public void testGetTwoPhaseArgs() throws Exception { Class tccActionImpl = Class.forName("io.seata.rm.tcc.TccActionImpl"); - Class[] argsCommitClasses = new Class[] {BusinessActionContext.class, TccParam.class, Integer.class}; + Class[] argsCommitClasses = new Class[]{BusinessActionContext.class, TccParam.class, Integer.class}; Method commitMethod = tccActionImpl.getMethod("commit", argsCommitClasses); Assertions.assertThrows(IllegalArgumentException.class, () -> { - defaultRemotingParser.getTwoPhaseArgs(commitMethod, argsCommitClasses); + tccRegisterResourceParser.getTwoPhaseArgs(commitMethod, argsCommitClasses); }); - Class[] argsRollbackClasses = new Class[] {BusinessActionContext.class, TccParam.class}; + Class[] argsRollbackClasses = new Class[]{BusinessActionContext.class, TccParam.class}; Method rollbackMethod = tccActionImpl.getMethod("rollback", argsRollbackClasses); - String[] keys = defaultRemotingParser.getTwoPhaseArgs(rollbackMethod, argsRollbackClasses); + String[] keys = tccRegisterResourceParser.getTwoPhaseArgs(rollbackMethod, argsRollbackClasses); Assertions.assertNull(keys[0]); Assertions.assertEquals("tccParam", keys[1]); } - -} +} \ No newline at end of file diff --git a/spring/src/test/java/io/seata/spring/annotation/Business.java b/tcc/src/test/java/io/seata/rm/tcc/spring/Business.java similarity index 95% rename from spring/src/test/java/io/seata/spring/annotation/Business.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/Business.java index aaa351d03a3..2ad498f4d9e 100644 --- a/spring/src/test/java/io/seata/spring/annotation/Business.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/Business.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; +package io.seata.rm.tcc.spring; /** * The interface Business. diff --git a/spring/src/test/java/io/seata/spring/annotation/BusinessImpl.java b/tcc/src/test/java/io/seata/rm/tcc/spring/BusinessImpl.java similarity index 92% rename from spring/src/test/java/io/seata/spring/annotation/BusinessImpl.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/BusinessImpl.java index 2ac53976727..15c8e5b27c1 100644 --- a/spring/src/test/java/io/seata/spring/annotation/BusinessImpl.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/BusinessImpl.java @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; +package io.seata.rm.tcc.spring; +import io.seata.spring.annotation.GlobalTransactional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/spring/src/test/java/io/seata/spring/annotation/BusinessProxy.java b/tcc/src/test/java/io/seata/rm/tcc/spring/BusinessProxy.java similarity index 97% rename from spring/src/test/java/io/seata/spring/annotation/BusinessProxy.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/BusinessProxy.java index 14e0043e06a..6eb4cc798e8 100644 --- a/spring/src/test/java/io/seata/spring/annotation/BusinessProxy.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/BusinessProxy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; +package io.seata.rm.tcc.spring; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; diff --git a/tcc/src/test/java/io/seata/rm/tcc/spring/GlobalTransactionScannerTest.java b/tcc/src/test/java/io/seata/rm/tcc/spring/GlobalTransactionScannerTest.java new file mode 100644 index 00000000000..1a7a35b3c73 --- /dev/null +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/GlobalTransactionScannerTest.java @@ -0,0 +1,130 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.rm.tcc.spring; + +import io.seata.rm.tcc.spring.tcc.LocalTccAction; +import io.seata.rm.tcc.spring.tcc.LocalTccActionImpl; +import io.seata.rm.tcc.spring.tcc.TccAction; +import io.seata.rm.tcc.spring.tcc.TccActionImpl; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +/** + * GlobalTransactionScanner Unit Test + */ +public class GlobalTransactionScannerTest { +// /** +// * The Global transaction scanner. +// */ +// protected GlobalTransactionScanner globalTransactionScanner = new GlobalTransactionScanner("global-trans-scanner-test"); +// +// /** +// * Test wrap normal bean. +// * +// * @param bean the bean +// * @param beanName the bean name +// * @param cacheKey the cache key +// */ +// @ParameterizedTest +// @MethodSource("normalBeanProvider") +// public void testWrapNormalBean(Object bean, String beanName, Object cacheKey) { +// Object result = globalTransactionScanner.wrapIfNecessary(bean, beanName, cacheKey); +// Assertions.assertNotSame(result, bean); +// } +// +// /** +// * wrap nothing +// * +// * @param bean the bean +// * @param beanName the bean name +// * @param cacheKey the cache key +// */ +// @ParameterizedTest +// @MethodSource("normalTccBeanProvider") +// public void testWrapNormalTccBean(Object bean, String beanName, Object cacheKey) { +// Object result = globalTransactionScanner.wrapIfNecessary(bean, beanName, cacheKey); +// Assertions.assertSame(result, bean); +// } +// +// /** +// * wrapped +// * +// * @param bean the bean +// * @param beanName the bean name +// * @param cacheKey the cache key +// */ +// @ParameterizedTest +// @MethodSource("localTccBeanProvider") +// public void testWrapLocalTccBean(Object bean, String beanName, Object cacheKey) { +// TccAction result = (LocalTccAction) globalTransactionScanner.wrapIfNecessary(bean, beanName, cacheKey); +// Assertions.assertNotSame(result, bean); +// } +// +// /** +// * Test after properties set. +// */ +// @Test +// public void testAfterPropertiesSet() { +// globalTransactionScanner.afterPropertiesSet(); +// } +// +// /** +// * Normal bean provider object [ ] [ ]. +// * +// * @return the object [ ] [ ] +// */ +// static Stream normalBeanProvider() { +// Business business = new BusinessImpl(); +// String beanName = "business"; +// String cacheKey = "business-key"; +// return Stream.of( +// Arguments.of(business, beanName, cacheKey) +// ); +// } +// +// /** +// * Normal tcc bean provider object [ ] [ ]. +// * +// * @return the object [ ] [ ] +// */ +// static Stream normalTccBeanProvider() { +// TccAction tccAction = new TccActionImpl(); +// String beanName = "tccBean"; +// String cacheKey = "tccBean-key"; +// return Stream.of( +// Arguments.of(tccAction, beanName, cacheKey) +// ); +// } +// +// /** +// * Local tcc bean provider object [ ] [ ]. +// * +// * @return the object [ ] [ ] +// */ +// static Stream localTccBeanProvider() { +// LocalTccAction localTccAction = new LocalTccActionImpl(); +// String beanName = "lcoalTccBean"; +// String cacheKey = "lcoalTccBean-key"; +// return Stream.of( +// Arguments.of(localTccAction, beanName, cacheKey) +// ); +// } +} diff --git a/spring/src/test/java/io/seata/spring/tcc/LocalTccAction.java b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/LocalTccAction.java similarity index 95% rename from spring/src/test/java/io/seata/spring/tcc/LocalTccAction.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/tcc/LocalTccAction.java index 4fdeb378a18..a3a2fb33473 100644 --- a/spring/src/test/java/io/seata/spring/tcc/LocalTccAction.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/LocalTccAction.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.tcc; +package io.seata.rm.tcc.spring.tcc; import io.seata.rm.tcc.api.LocalTCC; diff --git a/spring/src/test/java/io/seata/spring/tcc/LocalTccActionImpl.java b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/LocalTccActionImpl.java similarity index 95% rename from spring/src/test/java/io/seata/spring/tcc/LocalTccActionImpl.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/tcc/LocalTccActionImpl.java index e693c1e92cc..2b9c4091b70 100644 --- a/spring/src/test/java/io/seata/spring/tcc/LocalTccActionImpl.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/LocalTccActionImpl.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.tcc; +package io.seata.rm.tcc.spring.tcc; /** * The type Local tcc action. diff --git a/spring/src/test/java/io/seata/spring/tcc/TccAction.java b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/TccAction.java similarity index 97% rename from spring/src/test/java/io/seata/spring/tcc/TccAction.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/tcc/TccAction.java index db39fb708f5..b89e6fcfaba 100644 --- a/spring/src/test/java/io/seata/spring/tcc/TccAction.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/TccAction.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.tcc; +package io.seata.rm.tcc.spring.tcc; import io.seata.rm.tcc.api.BusinessActionContext; import io.seata.rm.tcc.api.TwoPhaseBusinessAction; diff --git a/spring/src/test/java/io/seata/spring/tcc/TccActionImpl.java b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/TccActionImpl.java similarity index 96% rename from spring/src/test/java/io/seata/spring/tcc/TccActionImpl.java rename to tcc/src/test/java/io/seata/rm/tcc/spring/tcc/TccActionImpl.java index c28a844c4ae..31b7f594b76 100644 --- a/spring/src/test/java/io/seata/spring/tcc/TccActionImpl.java +++ b/tcc/src/test/java/io/seata/rm/tcc/spring/tcc/TccActionImpl.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.tcc; +package io.seata.rm.tcc.spring.tcc; import io.seata.rm.tcc.api.BusinessActionContext; diff --git a/tm/src/main/java/io/seata/tm/api/DefaultFailureHandlerImpl.java b/tm/src/main/java/io/seata/tm/api/DefaultFailureHandlerImpl.java index af1d5156d52..232a49f4928 100644 --- a/tm/src/main/java/io/seata/tm/api/DefaultFailureHandlerImpl.java +++ b/tm/src/main/java/io/seata/tm/api/DefaultFailureHandlerImpl.java @@ -48,7 +48,7 @@ public class DefaultFailureHandlerImpl implements FailureHandler { private static final int TICKS_PER_WHEEL = 8; - private HashedWheelTimer timer = new HashedWheelTimer( + private static final HashedWheelTimer TIMER = new HashedWheelTimer( new NamedThreadFactory("failedTransactionRetry", 1), TICK_DURATION, TimeUnit.SECONDS, TICKS_PER_WHEEL); @@ -60,19 +60,19 @@ public void onBeginFailure(GlobalTransaction tx, Throwable cause) { @Override public void onCommitFailure(GlobalTransaction tx, Throwable cause) { LOGGER.warn("Failed to commit transaction[" + tx.getXid() + "]", cause); - timer.newTimeout(new CheckTimerTask(tx, GlobalStatus.Committed), SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); + TIMER.newTimeout(new CheckTimerTask(tx, GlobalStatus.Committed), SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); } @Override public void onRollbackFailure(GlobalTransaction tx, Throwable originalException) { LOGGER.warn("Failed to rollback transaction[" + tx.getXid() + "]", originalException); - timer.newTimeout(new CheckTimerTask(tx, GlobalStatus.Rollbacked), SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); + TIMER.newTimeout(new CheckTimerTask(tx, GlobalStatus.Rollbacked), SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); } @Override public void onRollbackRetrying(GlobalTransaction tx, Throwable originalException) { StackTraceLogger.warn(LOGGER, originalException, "Retrying to rollback transaction[{}]", new String[] {tx.getXid()}); - timer.newTimeout(new CheckTimerTask(tx, GlobalStatus.RollbackRetrying), SCHEDULE_INTERVAL_SECONDS, + TIMER.newTimeout(new CheckTimerTask(tx, GlobalStatus.RollbackRetrying), SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); } @@ -104,7 +104,7 @@ public void run(Timeout timeout) throws Exception { return; } isStopped = shouldStop(tx, required); - timer.newTimeout(this, SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); + TIMER.newTimeout(this, SCHEDULE_INTERVAL_SECONDS, TimeUnit.SECONDS); } } } diff --git a/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java b/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java new file mode 100644 index 00000000000..effbc93fec9 --- /dev/null +++ b/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java @@ -0,0 +1,36 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.tm.api; + +/** + * @author leezongjie + * @date 2023/1/13 + */ +public class FailureHandlerHolder { + + private static FailureHandler FAILURE_HANDLER_HOLDER = new DefaultFailureHandlerImpl(); + + public static void setFailureHandler(FailureHandler failureHandler) { + if (failureHandler != null) { + FAILURE_HANDLER_HOLDER = failureHandler; + } + } + + public static FailureHandler getFailureHandler() { + return FAILURE_HANDLER_HOLDER; + } + +} diff --git a/tm/src/test/java/io/seata/tm/api/DefaultFailureHandlerImplTest.java b/tm/src/test/java/io/seata/tm/api/DefaultFailureHandlerImplTest.java index 56e0d8f7cb2..cb387d5a7ab 100644 --- a/tm/src/test/java/io/seata/tm/api/DefaultFailureHandlerImplTest.java +++ b/tm/src/test/java/io/seata/tm/api/DefaultFailureHandlerImplTest.java @@ -90,7 +90,7 @@ void onCommitFailure() throws Exception{ // get timer Class c = Class.forName("io.seata.tm.api.DefaultFailureHandlerImpl"); - Field field = c.getDeclaredField("timer"); + Field field = c.getDeclaredField("TIMER"); field.setAccessible(true); HashedWheelTimer timer = (HashedWheelTimer) field.get(failureHandler); // assert timer pendingCount: first time is 1 @@ -116,7 +116,7 @@ void onRollbackFailure() throws Exception { // get timer Class c = Class.forName("io.seata.tm.api.DefaultFailureHandlerImpl"); - Field field = c.getDeclaredField("timer"); + Field field = c.getDeclaredField("TIMER"); field.setAccessible(true); HashedWheelTimer timer = (HashedWheelTimer) field.get(failureHandler); // assert timer pendingCount: first time is 1 From 4b724e243f51b0064208becd517a2f397f548f32 Mon Sep 17 00:00:00 2001 From: justabug Date: Tue, 31 Jan 2023 16:07:08 +0800 Subject: [PATCH 013/182] optimize : reorganize the usage of task session manager(add/remove/find/update) (#4858) --- changes/en-us/2.0.0.md | 3 ++- changes/zh-cn/2.0.0.md | 3 ++- .../coordinator/DefaultCoordinator.java | 13 +++++----- .../session/AbstractSessionManager.java | 1 + .../seata/server/session/GlobalSession.java | 14 +++++++---- .../seata/server/session/SessionHolder.java | 24 +++++-------------- .../server/transaction/saga/SagaCore.java | 4 ++-- 7 files changed, 29 insertions(+), 33 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index d37630d02f6..4bdbea483b9 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -21,7 +21,7 @@ The version is updated as follows: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later ### optimize: - - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later + - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later @@ -32,6 +32,7 @@ The version is updated as follows: Thanks to these contributors for their code commits. Please report an unintended omission. - [slievrly](https://github.com/slievrly) + - [Bughue](https://github.com/Bughue) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index f1a64501825..5ba6fb5790c 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -21,7 +21,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 ### optimize: - - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 + - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 @@ -32,6 +32,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - [slievrly](https://github.com/slievrly) + - [Bughue](https://github.com/Bughue) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index 75c09ac2d2a..52a9c46871b 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -344,7 +344,8 @@ protected void timeoutCheck() { globalSession.setStatus(GlobalStatus.TimeoutRollbacking); globalSession.addSessionLifecycleListener(SessionHolder.getRetryRollbackingSessionManager()); - SessionHolder.getRetryRollbackingSessionManager().addGlobalSession(globalSession); + // [optimize-session-manager] add--> root manager.update + SessionHolder.getRootSessionManager().updateGlobalSessionStatus(globalSession, GlobalStatus.TimeoutRollbacking); // transaction timeout and start rollbacking event MetricsPublisher.postSessionDoingEvent(globalSession, GlobalStatus.TimeoutRollbacking.name(), false, false); @@ -366,7 +367,7 @@ protected void handleRetryRollbacking() { SessionCondition sessionCondition = new SessionCondition(rollbackingStatuses); sessionCondition.setLazyLoadBranch(true); Collection rollbackingSessions = - SessionHolder.getRetryRollbackingSessionManager().findGlobalSessions(sessionCondition); + SessionHolder.getRootSessionManager().findGlobalSessions(sessionCondition); if (CollectionUtils.isEmpty(rollbackingSessions)) { return; } @@ -384,7 +385,7 @@ protected void handleRetryRollbacking() { rollbackingSession.clean(); } // Prevent thread safety issues - SessionHolder.getRetryRollbackingSessionManager().removeGlobalSession(rollbackingSession); + SessionHolder.getRootSessionManager().removeGlobalSession(rollbackingSession); LOGGER.error("Global transaction rollback retry timeout and has removed [{}]", rollbackingSession.getXid()); SessionHelper.endRollbackFailed(rollbackingSession, true, true); @@ -407,7 +408,7 @@ protected void handleRetryCommitting() { SessionCondition retryCommittingSessionCondition = new SessionCondition(retryCommittingStatuses); retryCommittingSessionCondition.setLazyLoadBranch(true); Collection committingSessions = - SessionHolder.getRetryCommittingSessionManager().findGlobalSessions(retryCommittingSessionCondition); + SessionHolder.getRootSessionManager().findGlobalSessions(retryCommittingSessionCondition); if (CollectionUtils.isEmpty(committingSessions)) { return; } @@ -422,7 +423,7 @@ protected void handleRetryCommitting() { } if (isRetryTimeout(now, MAX_COMMIT_RETRY_TIMEOUT, committingSession.getBeginTime())) { // Prevent thread safety issues - SessionHolder.getRetryCommittingSessionManager().removeGlobalSession(committingSession); + SessionHolder.getRootSessionManager().removeGlobalSession(committingSession); LOGGER.error("Global transaction commit retry timeout and has removed [{}]", committingSession.getXid()); // commit retry timeout event @@ -445,7 +446,7 @@ protected void handleRetryCommitting() { protected void handleAsyncCommitting() { SessionCondition sessionCondition = new SessionCondition(GlobalStatus.AsyncCommitting); Collection asyncCommittingSessions = - SessionHolder.getAsyncCommittingSessionManager().findGlobalSessions(sessionCondition); + SessionHolder.getRootSessionManager().findGlobalSessions(sessionCondition); if (CollectionUtils.isEmpty(asyncCommittingSessions)) { return; } diff --git a/server/src/main/java/io/seata/server/session/AbstractSessionManager.java b/server/src/main/java/io/seata/server/session/AbstractSessionManager.java index 2668c2c5c53..d8834ebb7c1 100644 --- a/server/src/main/java/io/seata/server/session/AbstractSessionManager.java +++ b/server/src/main/java/io/seata/server/session/AbstractSessionManager.java @@ -76,6 +76,7 @@ public void updateGlobalSessionStatus(GlobalSession session, GlobalStatus status if (LOGGER.isDebugEnabled()) { LOGGER.debug("MANAGER[{}] SESSION[{}] {}", name, session, LogOperation.GLOBAL_UPDATE); } + session.setStatus(status); if (GlobalStatus.Rollbacking == status) { session.getBranchSessions().forEach(i -> i.setLockStatus(LockStatus.Rollbacking)); } diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 1f4c4c61821..316927dc2e7 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -754,24 +754,28 @@ public List getBranchSessions() { public void asyncCommit() throws TransactionException { this.addSessionLifecycleListener(SessionHolder.getAsyncCommittingSessionManager()); this.setStatus(GlobalStatus.AsyncCommitting); - SessionHolder.getAsyncCommittingSessionManager().addGlobalSession(this); + // [optimize-session-manager] add--> root manager.update + SessionHolder.getRootSessionManager().updateGlobalSessionStatus(this, GlobalStatus.AsyncCommitting); } public void queueToRetryCommit() throws TransactionException { this.addSessionLifecycleListener(SessionHolder.getRetryCommittingSessionManager()); this.setStatus(GlobalStatus.CommitRetrying); - SessionHolder.getRetryCommittingSessionManager().addGlobalSession(this); + // [optimize-session-manager] add--> root manager.update + SessionHolder.getRootSessionManager().updateGlobalSessionStatus(this,GlobalStatus.CommitRetrying); } public void queueToRetryRollback() throws TransactionException { this.addSessionLifecycleListener(SessionHolder.getRetryRollbackingSessionManager()); GlobalStatus currentStatus = this.getStatus(); + GlobalStatus newStatus; if (SessionStatusValidator.isTimeoutGlobalStatus(currentStatus)) { - this.setStatus(GlobalStatus.TimeoutRollbackRetrying); + newStatus = GlobalStatus.TimeoutRollbackRetrying; } else { - this.setStatus(GlobalStatus.RollbackRetrying); + newStatus = GlobalStatus.RollbackRetrying; } - SessionHolder.getRetryRollbackingSessionManager().addGlobalSession(this); + // [optimize-session-manager] add--> root manager.update + SessionHolder.getRootSessionManager().updateGlobalSessionStatus(this, newStatus); } @Override diff --git a/server/src/main/java/io/seata/server/session/SessionHolder.java b/server/src/main/java/io/seata/server/session/SessionHolder.java index b8f530042a4..2b56166f6cc 100644 --- a/server/src/main/java/io/seata/server/session/SessionHolder.java +++ b/server/src/main/java/io/seata/server/session/SessionHolder.java @@ -240,12 +240,8 @@ private static void removeInErrorState(GlobalSession globalSession) { } private static void queueToAsyncCommitting(GlobalSession globalSession) { - try { - globalSession.addSessionLifecycleListener(getAsyncCommittingSessionManager()); - getAsyncCommittingSessionManager().addGlobalSession(globalSession); - } catch (TransactionException e) { - throw new ShouldNeverHappenException(e); - } + globalSession.addSessionLifecycleListener(getAsyncCommittingSessionManager()); + // [optimize-session-manager] add--> x (duplicated code,already reloaded) } private static void lockBranchSessions(List branchSessions) { @@ -259,21 +255,13 @@ private static void lockBranchSessions(List branchSessions) { } private static void queueToRetryCommit(GlobalSession globalSession) { - try { - globalSession.addSessionLifecycleListener(getRetryCommittingSessionManager()); - getRetryCommittingSessionManager().addGlobalSession(globalSession); - } catch (TransactionException e) { - throw new ShouldNeverHappenException(e); - } + globalSession.addSessionLifecycleListener(getRetryCommittingSessionManager()); + // [optimize-session-manager] add--> x (duplicated code,already reloaded) } private static void queueToRetryRollback(GlobalSession globalSession) { - try { - globalSession.addSessionLifecycleListener(getRetryRollbackingSessionManager()); - getRetryRollbackingSessionManager().addGlobalSession(globalSession); - } catch (TransactionException e) { - throw new ShouldNeverHappenException(e); - } + globalSession.addSessionLifecycleListener(getRetryRollbackingSessionManager()); + // [optimize-session-manager] add--> x (duplicated code,already reloaded) } //endregion diff --git a/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java b/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java index d9285d17f75..201f03fda29 100644 --- a/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java +++ b/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java @@ -115,7 +115,7 @@ public boolean doGlobalCommit(GlobalSession globalSession, boolean retrying) thr case PhaseTwo_RollbackFailed_Retryable: LOGGER.error("By [{}], failed to rollback SAGA global [{}], will retry later.", branchStatus, globalSession.getXid()); - SessionHolder.getRetryCommittingSessionManager().removeGlobalSession(globalSession); + SessionHolder.getRootSessionManager().removeGlobalSession(globalSession); globalSession.queueToRetryRollback(); return false; case PhaseOne_Failed: @@ -169,7 +169,7 @@ public boolean doGlobalRollback(GlobalSession globalSession, boolean retrying) t LOGGER.error("Failed to rollback SAGA global[{}]", globalSession.getXid()); return false; case PhaseTwo_CommitFailed_Retryable: - SessionHolder.getRetryRollbackingSessionManager().removeGlobalSession(globalSession); + SessionHolder.getRootSessionManager().removeGlobalSession(globalSession); globalSession.queueToRetryCommit(); LOGGER.warn("Retry by custom recover strategy [Forward] on timeout, SAGA global[{}]", globalSession.getXid()); return false; From 40a90a6e3b2dbb6d84177a5bc8a8593f869ca978 Mon Sep 17 00:00:00 2001 From: GoodBoyCoder <41784017+GoodBoyCoder@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:14:39 +0800 Subject: [PATCH 014/182] optimize: Fix the problem that protobuf compilation fails due to too long command line (#5273) --- build/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build/pom.xml b/build/pom.xml index c354e83fb69..96665a7d4c1 100644 --- a/build/pom.xml +++ b/build/pom.xml @@ -163,6 +163,11 @@ org.xolstice.maven.plugins protobuf-maven-plugin ${protobuf-maven-plugin.version} + + + true + com.mycila From 25999c397ea4701abf9b58692c0998bf244c6fee Mon Sep 17 00:00:00 2001 From: justabug Date: Wed, 1 Feb 2023 10:56:19 +0800 Subject: [PATCH 015/182] optimize : reorganize the usage of Sessionmanager and SessionLifecycleListener (#4881) --- changes/en-us/2.0.0.md | 4 +- changes/zh-cn/2.0.0.md | 3 + .../server/coordinator/AbstractCore.java | 2 - .../coordinator/DefaultCoordinator.java | 10 +-- .../seata/server/coordinator/DefaultCore.java | 4 - .../session/AbstractSessionManager.java | 3 +- .../seata/server/session/GlobalSession.java | 14 ++-- .../seata/server/session/SessionHolder.java | 55 ------------- .../seata/server/session/SessionManager.java | 81 ++++++++++++++++++- .../db/session/DataBaseSessionManager.java | 20 ++--- .../coordinator/DefaultCoordinatorTest.java | 2 +- .../server/coordinator/DefaultCoreTest.java | 2 +- .../session/FileSessionManagerTest.java | 1 - .../server/session/GlobalSessionTest.java | 13 ++- .../seata/server/store/SessionStoreTest.java | 16 +--- .../file/FileTransactionStoreManagerTest.java | 14 +++- 16 files changed, 132 insertions(+), 112 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 4bdbea483b9..679ace5a901 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -22,7 +22,8 @@ The version is updated as follows: ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager - + - [[#4881](https://github.com/seata/seata/pull/4881)] reorganize the usage of Sessionmanager and listener + - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later @@ -33,6 +34,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [slievrly](https://github.com/slievrly) - [Bughue](https://github.com/Bughue) + - [GoodBoyCoder](https://github.com/GoodBoyCoder) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 5ba6fb5790c..274c529b3ac 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -22,6 +22,8 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 + - [[#4881](https://github.com/seata/seata/pull/4881)] 重新划分 SessionManager和SessionLifecycleListener 用法 + - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 @@ -33,6 +35,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [slievrly](https://github.com/slievrly) - [Bughue](https://github.com/Bughue) + - [GoodBoyCoder](https://github.com/GoodBoyCoder) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/server/src/main/java/io/seata/server/coordinator/AbstractCore.java b/server/src/main/java/io/seata/server/coordinator/AbstractCore.java index 9b8f79ab39c..3aac5f568ec 100644 --- a/server/src/main/java/io/seata/server/coordinator/AbstractCore.java +++ b/server/src/main/java/io/seata/server/coordinator/AbstractCore.java @@ -76,7 +76,6 @@ public Long branchRegister(BranchType branchType, String resourceId, String clie GlobalSession globalSession = assertGlobalSessionNotNull(xid, false); return SessionHolder.lockAndExecute(globalSession, () -> { globalSessionStatusCheck(globalSession); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); BranchSession branchSession = SessionHelper.newBranchByGlobal(globalSession, branchType, resourceId, applicationData, lockKeys, clientId); MDC.put(RootContext.MDC_KEY_BRANCH_ID, String.valueOf(branchSession.getBranchId())); @@ -138,7 +137,6 @@ public void branchReport(BranchType branchType, String xid, long branchId, Branc String.format("Could not found branch session xid = %s branchId = %s", xid, branchId)); } branchSession.setApplicationData(applicationData); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.changeBranchStatus(branchSession, status); if (LOGGER.isInfoEnabled()) { diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index 52a9c46871b..f5e70d9847b 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -339,13 +339,8 @@ protected void timeoutCheck() { LOGGER.info("Global transaction[{}] is timeout and will be rollback.", globalSession.getXid()); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.close(); - globalSession.setStatus(GlobalStatus.TimeoutRollbacking); - - globalSession.addSessionLifecycleListener(SessionHolder.getRetryRollbackingSessionManager()); - // [optimize-session-manager] add--> root manager.update - SessionHolder.getRootSessionManager().updateGlobalSessionStatus(globalSession, GlobalStatus.TimeoutRollbacking); + globalSession.changeGlobalStatus(GlobalStatus.TimeoutRollbacking); // transaction timeout and start rollbacking event MetricsPublisher.postSessionDoingEvent(globalSession, GlobalStatus.TimeoutRollbacking.name(), false, false); @@ -393,7 +388,6 @@ protected void handleRetryRollbacking() { //The function of this 'return' is 'continue'. return; } - rollbackingSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); core.doGlobalRollback(rollbackingSession, true); } catch (TransactionException ex) { LOGGER.error("Failed to retry rollbacking [{}] {} {}", rollbackingSession.getXid(), ex.getCode(), ex.getMessage()); @@ -432,7 +426,6 @@ protected void handleRetryCommitting() { //The function of this 'return' is 'continue'. return; } - committingSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); core.doGlobalCommit(committingSession, true); } catch (TransactionException ex) { LOGGER.error("Failed to retry committing [{}] {} {}", committingSession.getXid(), ex.getCode(), ex.getMessage()); @@ -452,7 +445,6 @@ protected void handleAsyncCommitting() { } SessionHelper.forEach(asyncCommittingSessions, asyncCommittingSession -> { try { - asyncCommittingSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); core.doGlobalCommit(asyncCommittingSession, true); } catch (TransactionException ex) { LOGGER.error("Failed to async committing [{}] {} {}", asyncCommittingSession.getXid(), ex.getCode(), ex.getMessage(), ex); diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCore.java b/server/src/main/java/io/seata/server/coordinator/DefaultCore.java index 730a8c72413..add4aa5eb58 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCore.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCore.java @@ -131,7 +131,6 @@ public String begin(String applicationId, String transactionServiceGroup, String throws TransactionException { GlobalSession session = GlobalSession.createGlobalSession(applicationId, transactionServiceGroup, name, timeout); MDC.put(RootContext.MDC_KEY_XID, session.getXid()); - session.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); session.begin(); @@ -155,7 +154,6 @@ public GlobalStatus commit(String xid) throws TransactionException { return GlobalStatus.TimeoutRollbacking; } - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); // just lock changeStatus boolean shouldCommit = SessionHolder.lockAndExecute(globalSession, () -> { @@ -280,7 +278,6 @@ public GlobalStatus rollback(String xid) throws TransactionException { if (globalSession == null) { return GlobalStatus.Finished; } - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); // just lock changeStatus boolean shouldRollBack = SessionHolder.lockAndExecute(globalSession, () -> { globalSession.close(); // Highlight: Firstly, close the session, then no more branch can be registered. @@ -376,7 +373,6 @@ public GlobalStatus globalReport(String xid, GlobalStatus globalStatus) throws T if (globalSession == null) { return globalStatus; } - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); doGlobalReport(globalSession, xid, globalStatus); return globalSession.getStatus(); } diff --git a/server/src/main/java/io/seata/server/session/AbstractSessionManager.java b/server/src/main/java/io/seata/server/session/AbstractSessionManager.java index d8834ebb7c1..a2ed4ad65bc 100644 --- a/server/src/main/java/io/seata/server/session/AbstractSessionManager.java +++ b/server/src/main/java/io/seata/server/session/AbstractSessionManager.java @@ -31,7 +31,7 @@ /** * The type Abstract session manager. */ -public abstract class AbstractSessionManager implements SessionManager, SessionLifecycleListener { +public abstract class AbstractSessionManager implements SessionManager { /** * The constant LOGGER. @@ -130,6 +130,7 @@ public void onStatusChange(GlobalSession globalSession, GlobalStatus status) thr @Override public void onBranchStatusChange(GlobalSession globalSession, BranchSession branchSession, BranchStatus status) throws TransactionException { + branchSession.setStatus(status); updateBranchSessionStatus(branchSession, status); } diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 316927dc2e7..b76cd89701d 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -26,12 +26,12 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +import io.seata.common.ConfigurationKeys; import io.seata.common.Constants; import io.seata.common.DefaultValues; import io.seata.common.XID; import io.seata.common.util.StringUtils; import io.seata.config.ConfigurationFactory; -import io.seata.core.constants.ConfigurationKeys; import io.seata.core.exception.GlobalTransactionException; import io.seata.core.exception.TransactionException; import io.seata.core.exception.TransactionExceptionCode; @@ -192,6 +192,7 @@ public void begin() throws TransactionException { this.status = GlobalStatus.Begin; this.beginTime = System.currentTimeMillis(); this.active = true; + SessionHolder.getRootSessionManager().onBegin(this); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onBegin(this); } @@ -202,6 +203,7 @@ public void changeGlobalStatus(GlobalStatus status) throws TransactionException if (GlobalStatus.Rollbacking == status) { LockerManagerFactory.getLockManager().updateLockStatus(xid, LockStatus.Rollbacking); } + SessionHolder.getRootSessionManager().updateGlobalSessionStatus(this, status); this.status = status; for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onStatusChange(this, status); @@ -211,7 +213,7 @@ public void changeGlobalStatus(GlobalStatus status) throws TransactionException @Override public void changeBranchStatus(BranchSession branchSession, BranchStatus status) throws TransactionException { - branchSession.setStatus(status); + SessionHolder.getRootSessionManager().onBranchStatusChange(this, branchSession, status); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onBranchStatusChange(this, branchSession, status); } @@ -225,6 +227,7 @@ public boolean isActive() { @Override public void close() throws TransactionException { if (active) { + SessionHolder.getRootSessionManager().onClose(this); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onClose(this); } @@ -236,10 +239,12 @@ public void end() throws TransactionException { if (isSuccessEnd()) { // Clean locks first clean(); + SessionHolder.getRootSessionManager().onSuccessEnd(this); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onSuccessEnd(this); } } else { + SessionHolder.getRootSessionManager().onFailEnd(this); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onFailEnd(this); } @@ -292,6 +297,7 @@ public void removeSessionLifecycleListener(SessionLifecycleListener sessionLifec @Override public void addBranch(BranchSession branchSession) throws TransactionException { + SessionHolder.getRootSessionManager().onAddBranch(this, branchSession); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onAddBranch(this, branchSession); } @@ -324,6 +330,7 @@ public void unlockBranch(BranchSession branchSession) throws TransactionExceptio @Override public void removeBranch(BranchSession branchSession) throws TransactionException { + SessionHolder.getRootSessionManager().onRemoveBranch(this, branchSession); for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { lifecycleListener.onRemoveBranch(this, branchSession); } @@ -752,21 +759,18 @@ public List getBranchSessions() { } public void asyncCommit() throws TransactionException { - this.addSessionLifecycleListener(SessionHolder.getAsyncCommittingSessionManager()); this.setStatus(GlobalStatus.AsyncCommitting); // [optimize-session-manager] add--> root manager.update SessionHolder.getRootSessionManager().updateGlobalSessionStatus(this, GlobalStatus.AsyncCommitting); } public void queueToRetryCommit() throws TransactionException { - this.addSessionLifecycleListener(SessionHolder.getRetryCommittingSessionManager()); this.setStatus(GlobalStatus.CommitRetrying); // [optimize-session-manager] add--> root manager.update SessionHolder.getRootSessionManager().updateGlobalSessionStatus(this,GlobalStatus.CommitRetrying); } public void queueToRetryRollback() throws TransactionException { - this.addSessionLifecycleListener(SessionHolder.getRetryRollbackingSessionManager()); GlobalStatus currentStatus = this.getStatus(); GlobalStatus newStatus; if (SessionStatusValidator.isTimeoutGlobalStatus(currentStatus)) { diff --git a/server/src/main/java/io/seata/server/session/SessionHolder.java b/server/src/main/java/io/seata/server/session/SessionHolder.java index 2b56166f6cc..ec03d632006 100644 --- a/server/src/main/java/io/seata/server/session/SessionHolder.java +++ b/server/src/main/java/io/seata/server/session/SessionHolder.java @@ -172,11 +172,8 @@ protected static void reload(SessionMode sessionMode) { removeInErrorState(globalSession); break; case AsyncCommitting: - queueToAsyncCommitting(globalSession); - break; case Committing: case CommitRetrying: - queueToRetryCommit(globalSession); break; default: { lockBranchSessions(globalSession.getSortedBranches()); @@ -187,7 +184,6 @@ protected static void reload(SessionMode sessionMode) { case TimeoutRollbackRetrying: globalSession.getBranchSessions().parallelStream() .forEach(branchSession -> branchSession.setLockStatus(LockStatus.Rollbacking)); - queueToRetryRollback(globalSession); break; case Begin: globalSession.setActive(true); @@ -239,10 +235,6 @@ private static void removeInErrorState(GlobalSession globalSession) { } } - private static void queueToAsyncCommitting(GlobalSession globalSession) { - globalSession.addSessionLifecycleListener(getAsyncCommittingSessionManager()); - // [optimize-session-manager] add--> x (duplicated code,already reloaded) - } private static void lockBranchSessions(List branchSessions) { branchSessions.forEach(branchSession -> { @@ -254,15 +246,7 @@ private static void lockBranchSessions(List branchSessions) { }); } - private static void queueToRetryCommit(GlobalSession globalSession) { - globalSession.addSessionLifecycleListener(getRetryCommittingSessionManager()); - // [optimize-session-manager] add--> x (duplicated code,already reloaded) - } - private static void queueToRetryRollback(GlobalSession globalSession) { - globalSession.addSessionLifecycleListener(getRetryRollbackingSessionManager()); - // [optimize-session-manager] add--> x (duplicated code,already reloaded) - } //endregion @@ -280,45 +264,6 @@ public static SessionManager getRootSessionManager() { return ROOT_SESSION_MANAGER; } - /** - * Gets async committing session manager. - * - * @return the async committing session manager - */ - @Deprecated - public static SessionManager getAsyncCommittingSessionManager() { - if (ASYNC_COMMITTING_SESSION_MANAGER == null) { - throw new ShouldNeverHappenException("SessionManager is NOT init!"); - } - return ASYNC_COMMITTING_SESSION_MANAGER; - } - - /** - * Gets retry committing session manager. - * - * @return the retry committing session manager - */ - @Deprecated - public static SessionManager getRetryCommittingSessionManager() { - if (RETRY_COMMITTING_SESSION_MANAGER == null) { - throw new ShouldNeverHappenException("SessionManager is NOT init!"); - } - return RETRY_COMMITTING_SESSION_MANAGER; - } - - /** - * Gets retry rollbacking session manager. - * - * @return the retry rollbacking session manager - */ - @Deprecated - public static SessionManager getRetryRollbackingSessionManager() { - if (RETRY_ROLLBACKING_SESSION_MANAGER == null) { - throw new ShouldNeverHappenException("SessionManager is NOT init!"); - } - return RETRY_ROLLBACKING_SESSION_MANAGER; - } - //endregion /** diff --git a/server/src/main/java/io/seata/server/session/SessionManager.java b/server/src/main/java/io/seata/server/session/SessionManager.java index f181be0db5f..1415bc9680f 100644 --- a/server/src/main/java/io/seata/server/session/SessionManager.java +++ b/server/src/main/java/io/seata/server/session/SessionManager.java @@ -27,7 +27,7 @@ * * @author sharajava */ -public interface SessionManager extends SessionLifecycleListener, Disposable { +public interface SessionManager extends Disposable { /** * Add global session. @@ -121,6 +121,85 @@ public interface SessionManager extends SessionLifecycleListener, Disposable { * @return the value * @throws TransactionException the transaction exception */ + @Deprecated T lockAndExecute(GlobalSession globalSession, GlobalSession.LockCallable lockCallable) throws TransactionException; + + /** + * On begin. + * + * @param globalSession the global session + * @throws TransactionException the transaction exception + */ + @Deprecated + void onBegin(GlobalSession globalSession) throws TransactionException; + + /** + * On status change. + * + * @param globalSession the global session + * @param status the status + * @throws TransactionException the transaction exception + */ + @Deprecated + void onStatusChange(GlobalSession globalSession, GlobalStatus status) throws TransactionException; + + /** + * On branch status change. + * + * @param globalSession the global session + * @param branchSession the branch session + * @param status the status + * @throws TransactionException the transaction exception + */ + @Deprecated + void onBranchStatusChange(GlobalSession globalSession, BranchSession branchSession, BranchStatus status) + throws TransactionException; + + /** + * On add branch. + * + * @param globalSession the global session + * @param branchSession the branch session + * @throws TransactionException the transaction exception + */ + @Deprecated + void onAddBranch(GlobalSession globalSession, BranchSession branchSession) throws TransactionException; + + /** + * On remove branch. + * + * @param globalSession the global session + * @param branchSession the branch session + * @throws TransactionException the transaction exception + */ + @Deprecated + void onRemoveBranch(GlobalSession globalSession, BranchSession branchSession) throws TransactionException; + + /** + * On close. + * + * @param globalSession the global session + * @throws TransactionException the transaction exception + */ + @Deprecated + void onClose(GlobalSession globalSession) throws TransactionException; + + /** + * On end. + * + * @param globalSession the global session + * @throws TransactionException the transaction exception + */ + @Deprecated + void onSuccessEnd(GlobalSession globalSession) throws TransactionException; + + /** + * On fail end. + * + * @param globalSession the global session + * @throws TransactionException the transaction exception + */ + @Deprecated + void onFailEnd(GlobalSession globalSession) throws TransactionException; } diff --git a/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java b/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java index 053853527eb..a4719535063 100644 --- a/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java +++ b/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java @@ -29,7 +29,6 @@ import io.seata.server.session.BranchSession; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; -import io.seata.server.session.SessionHolder; import io.seata.server.storage.db.store.DataBaseTransactionStoreManager; import io.seata.server.store.TransactionStoreManager.LogOperation; import org.slf4j.Logger; @@ -163,20 +162,11 @@ public GlobalSession findGlobalSession(String xid, boolean withBranchSessions) { @Override public Collection allSessions() { - // get by taskName - if (SessionHolder.ASYNC_COMMITTING_SESSION_MANAGER_NAME.equalsIgnoreCase(taskName)) { - return findGlobalSessions(new SessionCondition(GlobalStatus.AsyncCommitting)); - } else if (SessionHolder.RETRY_COMMITTING_SESSION_MANAGER_NAME.equalsIgnoreCase(taskName)) { - return findGlobalSessions(new SessionCondition(GlobalStatus.CommitRetrying, GlobalStatus.Committing)); - } else if (SessionHolder.RETRY_ROLLBACKING_SESSION_MANAGER_NAME.equalsIgnoreCase(taskName)) { - return findGlobalSessions(new SessionCondition(GlobalStatus.RollbackRetrying, GlobalStatus.Rollbacking, - GlobalStatus.TimeoutRollbacking, GlobalStatus.TimeoutRollbackRetrying)); - } else { - // all data - return findGlobalSessions(new SessionCondition(GlobalStatus.UnKnown, GlobalStatus.Begin, GlobalStatus.Committing, - GlobalStatus.CommitRetrying, GlobalStatus.Rollbacking, GlobalStatus.RollbackRetrying, GlobalStatus.TimeoutRollbacking, - GlobalStatus.TimeoutRollbackRetrying, GlobalStatus.AsyncCommitting)); - } + // all data + return findGlobalSessions( + new SessionCondition(GlobalStatus.UnKnown, GlobalStatus.Begin, GlobalStatus.Committing, + GlobalStatus.CommitRetrying, GlobalStatus.Rollbacking, GlobalStatus.RollbackRetrying, + GlobalStatus.TimeoutRollbacking, GlobalStatus.TimeoutRollbackRetrying, GlobalStatus.AsyncCommitting)); } @Override diff --git a/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java b/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java index 594d92c0188..1890423683d 100644 --- a/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java +++ b/server/src/test/java/io/seata/server/coordinator/DefaultCoordinatorTest.java @@ -217,7 +217,7 @@ public void test_handleRetryRollbackingTimeOut_unlock() throws TransactionExcept public static void afterClass() throws Exception { Collection globalSessions = SessionHolder.getRootSessionManager().allSessions(); - Collection asyncGlobalSessions = SessionHolder.getAsyncCommittingSessionManager().allSessions(); + Collection asyncGlobalSessions = SessionHolder.getRootSessionManager().allSessions(); for (GlobalSession asyncGlobalSession : asyncGlobalSessions) { asyncGlobalSession.closeAndClean(); } diff --git a/server/src/test/java/io/seata/server/coordinator/DefaultCoreTest.java b/server/src/test/java/io/seata/server/coordinator/DefaultCoreTest.java index 4e6c15652c7..fafc13af8b3 100644 --- a/server/src/test/java/io/seata/server/coordinator/DefaultCoreTest.java +++ b/server/src/test/java/io/seata/server/coordinator/DefaultCoreTest.java @@ -344,7 +344,7 @@ static Stream xidAndBranchIdProvider() throws Exception { @AfterEach public void releaseSessionManager() throws Exception { Collection globalSessions = SessionHolder.getRootSessionManager().allSessions(); - Collection asyncGlobalSessions = SessionHolder.getAsyncCommittingSessionManager().allSessions(); + Collection asyncGlobalSessions = SessionHolder.getRootSessionManager().allSessions(); for (GlobalSession asyncGlobalSession : asyncGlobalSessions) { asyncGlobalSession.closeAndClean(); } diff --git a/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java b/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java index 9b2b74856c8..f752482c7ad 100644 --- a/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java +++ b/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java @@ -289,7 +289,6 @@ public void findGlobalSessionsWithPageResultTest(List globalSessi try { for (GlobalSession globalSession : globalSessions) { - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); } final GlobalSessionParam globalSessionParam = new GlobalSessionParam(); diff --git a/server/src/test/java/io/seata/server/session/GlobalSessionTest.java b/server/src/test/java/io/seata/server/session/GlobalSessionTest.java index c4787ce69e6..25eb086e4da 100644 --- a/server/src/test/java/io/seata/server/session/GlobalSessionTest.java +++ b/server/src/test/java/io/seata/server/session/GlobalSessionTest.java @@ -22,6 +22,8 @@ import io.seata.core.model.BranchType; import io.seata.core.model.GlobalStatus; import io.seata.server.storage.file.session.FileSessionManager; +import io.seata.server.store.StoreConfig; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.params.ParameterizedTest; @@ -47,6 +49,14 @@ public class GlobalSessionTest { public static void setUp(ApplicationContext context){ } + @BeforeAll + public static void init(){ + SessionHolder.init(StoreConfig.SessionMode.FILE); + } + @AfterAll + public static void destroy(){ + SessionHolder.destroy(); + } /** * Can be committed async test. @@ -174,7 +184,6 @@ public void codecTest(GlobalSession globalSession) { static Stream globalSessionProvider() throws IOException { GlobalSession globalSession = new GlobalSession("demo-app", DEFAULT_TX_GROUP, "test", 6000); globalSession.setActive(true); - globalSession.addSessionLifecycleListener(new FileSessionManager("default", null)); return Stream.of( Arguments.of( globalSession) @@ -189,6 +198,7 @@ static Stream globalSessionProvider() throws IOException { static Stream branchSessionProvider() { GlobalSession globalSession = new GlobalSession("demo-app", DEFAULT_TX_GROUP, "test", 6000); BranchSession branchSession = new BranchSession(); + branchSession.setXid(globalSession.getXid()); branchSession.setTransactionId(globalSession.getTransactionId()); branchSession.setBranchId(1L); branchSession.setResourceGroupId(DEFAULT_TX_GROUP); @@ -212,6 +222,7 @@ static Stream branchSessionProvider() { static Stream branchSessionTCCProvider() { GlobalSession globalSession = new GlobalSession("demo-app", DEFAULT_TX_GROUP, "test", 6000); BranchSession branchSession = new BranchSession(); + branchSession.setXid(globalSession.getXid()); branchSession.setTransactionId(globalSession.getTransactionId()); branchSession.setBranchId(1L); branchSession.setResourceGroupId(DEFAULT_TX_GROUP); diff --git a/server/src/test/java/io/seata/server/store/SessionStoreTest.java b/server/src/test/java/io/seata/server/store/SessionStoreTest.java index 49ade6dce27..9e61b21c317 100644 --- a/server/src/test/java/io/seata/server/store/SessionStoreTest.java +++ b/server/src/test/java/io/seata/server/store/SessionStoreTest.java @@ -93,7 +93,6 @@ public void testRestoredFromFile() throws Exception { String xid = XID.generateXID(globalSession.getTransactionId()); globalSession.setXid(xid); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); BranchSession branchSession1 = SessionHelper.newBranchByGlobal(globalSession, BranchType.AT, RESOURCE_ID, @@ -134,7 +133,6 @@ public void testRestoredFromFile() throws Exception { Assertions.assertTrue(lockManager.isLockable(xid, RESOURCE_ID, "tb:3")); //clear - reloadSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); reloadSession.end(); } finally { SessionHolder.destroy(); @@ -152,7 +150,6 @@ public void testRestoredFromFile2() throws Exception { SessionHolder.init(SessionMode.FILE); GlobalSession globalSession = new GlobalSession("demo-app", DEFAULT_TX_GROUP, "test", 6000); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); // Re-init SessionHolder: restore sessions from file @@ -176,7 +173,6 @@ public void testRestoredFromFileAsyncCommitting() throws Exception { String xid = XID.generateXID(globalSession.getTransactionId()); globalSession.setXid(xid); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); BranchSession branchSession1 = SessionHelper.newBranchByGlobal(globalSession, BranchType.AT, RESOURCE_ID, @@ -203,7 +199,7 @@ public void testRestoredFromFileAsyncCommitting() throws Exception { GlobalSession reloadSession = SessionHolder.findGlobalSession(globalSession.getXid()); Assertions.assertEquals(reloadSession.getStatus(), GlobalStatus.AsyncCommitting); - GlobalSession sessionInAsyncCommittingQueue = SessionHolder.getAsyncCommittingSessionManager() + GlobalSession sessionInAsyncCommittingQueue = SessionHolder.getRootSessionManager() .findGlobalSession(globalSession.getXid()); Assertions.assertTrue(reloadSession == sessionInAsyncCommittingQueue); @@ -211,7 +207,6 @@ public void testRestoredFromFileAsyncCommitting() throws Exception { Assertions.assertTrue(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); //clear - reloadSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); reloadSession.end(); } finally { SessionHolder.destroy(); @@ -232,7 +227,6 @@ public void testRestoredFromFileCommitRetry() throws Exception { String xid = XID.generateXID(globalSession.getTransactionId()); globalSession.setXid(xid); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); BranchSession branchSession1 = SessionHelper.newBranchByGlobal(globalSession, BranchType.AT, RESOURCE_ID, @@ -261,7 +255,7 @@ public void testRestoredFromFileCommitRetry() throws Exception { GlobalSession reloadSession = SessionHolder.findGlobalSession(globalSession.getXid()); Assertions.assertEquals(reloadSession.getStatus(), GlobalStatus.CommitRetrying); - GlobalSession sessionInRetryCommittingQueue = SessionHolder.getRetryCommittingSessionManager() + GlobalSession sessionInRetryCommittingQueue = SessionHolder.getRootSessionManager() .findGlobalSession(globalSession.getXid()); Assertions.assertTrue(reloadSession == sessionInRetryCommittingQueue); BranchSession reloadBranchSession = reloadSession.getBranch(branchSession1.getBranchId()); @@ -271,7 +265,6 @@ public void testRestoredFromFileCommitRetry() throws Exception { Assertions.assertTrue(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); //clear - reloadSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); reloadSession.end(); } finally { SessionHolder.destroy(); @@ -293,7 +286,6 @@ public void testRestoredFromFileRollbackRetry() throws Exception { String xid = XID.generateXID(globalSession.getTransactionId()); globalSession.setXid(xid); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); BranchSession branchSession1 = SessionHelper.newBranchByGlobal(globalSession, BranchType.AT, RESOURCE_ID, @@ -322,7 +314,7 @@ public void testRestoredFromFileRollbackRetry() throws Exception { GlobalSession reloadSession = SessionHolder.findGlobalSession(globalSession.getXid()); Assertions.assertEquals(reloadSession.getStatus(), GlobalStatus.RollbackRetrying); - GlobalSession sessionInRetryRollbackingQueue = SessionHolder.getRetryRollbackingSessionManager() + GlobalSession sessionInRetryRollbackingQueue = SessionHolder.getRootSessionManager() .findGlobalSession(globalSession.getXid()); Assertions.assertTrue(reloadSession == sessionInRetryRollbackingQueue); BranchSession reloadBranchSession = reloadSession.getBranch(branchSession1.getBranchId()); @@ -332,7 +324,6 @@ public void testRestoredFromFileRollbackRetry() throws Exception { Assertions.assertFalse(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); //clear - reloadSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); reloadSession.end(); } finally { SessionHolder.destroy(); @@ -354,7 +345,6 @@ public void testRestoredFromFileRollbackFailed() throws Exception { String xid = XID.generateXID(globalSession.getTransactionId()); globalSession.setXid(xid); - globalSession.addSessionLifecycleListener(SessionHolder.getRootSessionManager()); globalSession.begin(); BranchSession branchSession1 = SessionHelper.newBranchByGlobal(globalSession, BranchType.AT, RESOURCE_ID, diff --git a/server/src/test/java/io/seata/server/store/file/FileTransactionStoreManagerTest.java b/server/src/test/java/io/seata/server/store/file/FileTransactionStoreManagerTest.java index 809832ec60a..6315888291d 100644 --- a/server/src/test/java/io/seata/server/store/file/FileTransactionStoreManagerTest.java +++ b/server/src/test/java/io/seata/server/store/file/FileTransactionStoreManagerTest.java @@ -24,6 +24,7 @@ import io.seata.server.UUIDGenerator; import io.seata.server.session.BranchSession; import io.seata.server.session.GlobalSession; +import io.seata.server.session.SessionHolder; import io.seata.server.session.SessionManager; import io.seata.server.storage.file.TransactionWriteStore; import io.seata.server.storage.file.session.FileSessionManager; @@ -31,8 +32,7 @@ import io.seata.server.store.StoreConfig; import io.seata.server.store.TransactionStoreManager; import org.assertj.core.util.Files; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.*; import org.mockito.Mockito; import org.springframework.boot.test.context.SpringBootTest; @@ -41,6 +41,16 @@ */ @SpringBootTest public class FileTransactionStoreManagerTest { + + @BeforeAll + public static void init(){ + SessionHolder.init(StoreConfig.SessionMode.FILE); + } + @AfterAll + public static void destroy(){ + SessionHolder.destroy(); + } + @Test public void testBigDataWrite() throws Exception { File seataFile = Files.newTemporaryFile(); From e9ccad28fa3f10dedac2aa2a576d60dfe48bfa7a Mon Sep 17 00:00:00 2001 From: renliangyu857 <2918490262@qq.com> Date: Wed, 1 Feb 2023 16:11:11 +0800 Subject: [PATCH 016/182] bugfix: the console has queried the released lock (#5277) --- changes/en-us/2.0.0.md | 2 +- changes/zh-cn/2.0.0.md | 2 +- .../impl/file/GlobalLockFileServiceImpl.java | 3 +++ .../io/seata/server/lock/LockManagerTest.java | 23 +++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 679ace5a901..93735043286 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -18,7 +18,7 @@ The version is updated as follows: - [[#5165](https://github.com/seata/seata/pull/5165)] optimize TCC structure, supporting API access. add integration layer module(seata-integration-tx-api) for transaction process definition and proxy enhancement. ### bugfix: - - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later + - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 274c529b3ac..c9e28bb0c1a 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -18,7 +18,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5165](https://github.com/seata/seata/pull/5165)] TCC结构拆分,支持API方式接入。增加集成层模块(seata-integration-tx-api),对事务流程定义以及代理部分增强。 ### bugfix: - - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 + - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 diff --git a/server/src/main/java/io/seata/server/console/impl/file/GlobalLockFileServiceImpl.java b/server/src/main/java/io/seata/server/console/impl/file/GlobalLockFileServiceImpl.java index edfdc633b30..60309581584 100644 --- a/server/src/main/java/io/seata/server/console/impl/file/GlobalLockFileServiceImpl.java +++ b/server/src/main/java/io/seata/server/console/impl/file/GlobalLockFileServiceImpl.java @@ -80,6 +80,9 @@ public PageResult query(GlobalLockParam param) { * @return the RowLock list */ private Stream filterAndMap(GlobalLockParam param, BranchSession branchSession) { + if (CollectionUtils.isEmpty(branchSession.getLockHolder())) { + return Stream.empty(); + } final String tableName = param.getTableName(); diff --git a/server/src/test/java/io/seata/server/lock/LockManagerTest.java b/server/src/test/java/io/seata/server/lock/LockManagerTest.java index fea75ba3fcc..9f10ad5512e 100644 --- a/server/src/test/java/io/seata/server/lock/LockManagerTest.java +++ b/server/src/test/java/io/seata/server/lock/LockManagerTest.java @@ -240,6 +240,15 @@ public void lockQueryTest(GlobalSession globalSessions1, GlobalSession globalSes () -> globalLockService.query(param) ); + LockManager lockManager = new FileLockManagerForTest(); + for (BranchSession branchSession : globalSessions1.getBranchSessions()) { + lockManager.acquireLock(branchSession); + } + + for (BranchSession branchSession : globalSessions2.getBranchSessions()) { + lockManager.acquireLock(branchSession); + } + param.setPageNum(1); param.setPageSize(10); @@ -318,6 +327,20 @@ public void lockQueryTest(GlobalSession globalSessions1, GlobalSession globalSes final PageResult timeTestResult4 = globalLockService.query(param); Assertions.assertEquals(4, timeTestResult4.getTotal()); + //test release lock + for (BranchSession branchSession : globalSessions1.getBranchSessions()) { + lockManager.releaseLock(branchSession); + } + + final GlobalLockParam param2 = new GlobalLockParam(); + param2.setPageNum(1); + param2.setPageSize(10); + + final PageResult fullQueryTestResult2 = globalLockService.query(param2); + Assertions.assertEquals(1,fullQueryTestResult2.getPages()); + Assertions.assertEquals(4,fullQueryTestResult2.getTotal()); + Assertions.assertEquals(4,fullQueryTestResult2.getData().size()); + } finally { sessionManager.removeGlobalSession(globalSessions1); sessionManager.removeGlobalSession(globalSessions2); From 913ec96fb4e388c0fc0bbc6449b374135745efeb Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Wed, 1 Feb 2023 20:59:30 +0800 Subject: [PATCH 017/182] bugfix: parallel request handle throw IndexOutOfBoundsException --- .../processor/server/ServerOnRequestProcessor.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java b/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java index b5933444384..68ebd945b84 100644 --- a/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java +++ b/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java @@ -179,18 +179,16 @@ private void onRequestMessage(ChannelHandlerContext ctx, RpcMessage rpcMessage) } } } else { - List results = new CopyOnWriteArrayList<>(); - List> completableFutures = null; + List results = new ArrayList<>(); + List> completableFutures = null; for (int i = 0; i < ((MergedWarpMessage)message).msgs.size(); i++) { if (PARALLEL_REQUEST_HANDLE) { if (completableFutures == null) { completableFutures = new ArrayList<>(); } int finalI = i; - completableFutures.add(CompletableFuture.runAsync(() -> { - results.add(finalI, handleRequestsByMergedWarpMessage( - ((MergedWarpMessage)message).msgs.get(finalI), rpcContext)); - })); + completableFutures.add(CompletableFuture.supplyAsync(() -> handleRequestsByMergedWarpMessage( + ((MergedWarpMessage)message).msgs.get(finalI), rpcContext))); } else { results.add(i, handleRequestsByMergedWarpMessage(((MergedWarpMessage)message).msgs.get(i), rpcContext)); @@ -198,7 +196,9 @@ private void onRequestMessage(ChannelHandlerContext ctx, RpcMessage rpcMessage) } if (CollectionUtils.isNotEmpty(completableFutures)) { try { - CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).get(); + for (CompletableFuture completableFuture : completableFutures) { + results.add(completableFuture.get()); + } } catch (InterruptedException | ExecutionException e) { LOGGER.error("handle request error: {}", e.getMessage(), e); } From 5ef89a02edb5c74e657ceef62241a024d6e8ffad Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Thu, 2 Feb 2023 13:57:45 +0800 Subject: [PATCH 018/182] bugfix: parallel request handle throw IndexOutOfBoundsException (#5282) --- changes/en-us/2.0.0.md | 2 ++ changes/zh-cn/2.0.0.md | 2 ++ .../core/rpc/processor/server/ServerOnRequestProcessor.java | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 93735043286..21c0aac853f 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -19,6 +19,7 @@ The version is updated as follows: ### bugfix: - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock + - [[#5282](https://github.com/seata/seata/pull/5282)] parallel request handle throw IndexOutOfBoundsException ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager @@ -35,6 +36,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [slievrly](https://github.com/slievrly) - [Bughue](https://github.com/Bughue) - [GoodBoyCoder](https://github.com/GoodBoyCoder) + - [a364176773](https://github.com/a364176773) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index c9e28bb0c1a..514b1f6c1b3 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -19,6 +19,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 ### bugfix: - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 + - [[#5282](https://github.com/seata/seata/pull/5282)] 修复并行rm请求处理时数组索引越界问题 ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 @@ -36,6 +37,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [slievrly](https://github.com/slievrly) - [Bughue](https://github.com/Bughue) - [GoodBoyCoder](https://github.com/GoodBoyCoder) + - [a364176773](https://github.com/a364176773) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java b/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java index 68ebd945b84..5701de4b711 100644 --- a/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java +++ b/core/src/main/java/io/seata/core/rpc/processor/server/ServerOnRequestProcessor.java @@ -24,7 +24,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; From fb0bc7685d0ecbba87690f2de9f26b08ed006539 Mon Sep 17 00:00:00 2001 From: justabug Date: Thu, 2 Feb 2023 14:18:23 +0800 Subject: [PATCH 019/182] optimize: clean multi-sessionmanager-instance pattern (#5278) --- changes/en-us/2.0.0.md | 2 + changes/zh-cn/2.0.0.md | 1 + .../seata/server/session/SessionHolder.java | 18 ------ .../db/session/DataBaseSessionManager.java | 53 +++------------- .../redis/session/RedisSessionManager.java | 63 +++---------------- 5 files changed, 21 insertions(+), 116 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 21c0aac853f..c5790fc8def 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -25,6 +25,8 @@ The version is updated as follows: - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager - [[#4881](https://github.com/seata/seata/pull/4881)] reorganize the usage of Sessionmanager and listener - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. + - [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern + ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 514b1f6c1b3..8baf5b3c0b9 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -25,6 +25,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 - [[#4881](https://github.com/seata/seata/pull/4881)] 重新划分 SessionManager和SessionLifecycleListener 用法 - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 + - [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 diff --git a/server/src/main/java/io/seata/server/session/SessionHolder.java b/server/src/main/java/io/seata/server/session/SessionHolder.java index ec03d632006..5d51335d926 100644 --- a/server/src/main/java/io/seata/server/session/SessionHolder.java +++ b/server/src/main/java/io/seata/server/session/SessionHolder.java @@ -83,9 +83,6 @@ public class SessionHolder { private static long DISTRIBUTED_LOCK_EXPIRE_TIME = CONFIG.getLong(ConfigurationKeys.DISTRIBUTED_LOCK_EXPIRE_TIME, DEFAULT_DISTRIBUTED_LOCK_EXPIRE_TIME); private static SessionManager ROOT_SESSION_MANAGER; - private static SessionManager ASYNC_COMMITTING_SESSION_MANAGER; - private static SessionManager RETRY_COMMITTING_SESSION_MANAGER; - private static SessionManager RETRY_ROLLBACKING_SESSION_MANAGER; private static DistributedLocker DISTRIBUTED_LOCKER; @@ -104,12 +101,6 @@ public static void init(SessionMode sessionMode) { } if (SessionMode.DB.equals(sessionMode)) { ROOT_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.DB.getName()); - ASYNC_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.DB.getName(), - new Object[]{ASYNC_COMMITTING_SESSION_MANAGER_NAME}); - RETRY_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.DB.getName(), - new Object[]{RETRY_COMMITTING_SESSION_MANAGER_NAME}); - RETRY_ROLLBACKING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.DB.getName(), - new Object[]{RETRY_ROLLBACKING_SESSION_MANAGER_NAME}); DISTRIBUTED_LOCKER = DistributedLockerFactory.getDistributedLocker(SessionMode.DB.getName()); } else if (SessionMode.FILE.equals(sessionMode)) { @@ -120,19 +111,10 @@ public static void init(SessionMode sessionMode) { } ROOT_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.FILE.getName(), new Object[]{ROOT_SESSION_MANAGER_NAME, sessionStorePath}); - ASYNC_COMMITTING_SESSION_MANAGER = ROOT_SESSION_MANAGER; - RETRY_COMMITTING_SESSION_MANAGER = ROOT_SESSION_MANAGER; - RETRY_ROLLBACKING_SESSION_MANAGER = ROOT_SESSION_MANAGER; DISTRIBUTED_LOCKER = DistributedLockerFactory.getDistributedLocker(SessionMode.FILE.getName()); } else if (SessionMode.REDIS.equals(sessionMode)) { ROOT_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.REDIS.getName()); - ASYNC_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, - SessionMode.REDIS.getName(), new Object[]{ASYNC_COMMITTING_SESSION_MANAGER_NAME}); - RETRY_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, - SessionMode.REDIS.getName(), new Object[]{RETRY_COMMITTING_SESSION_MANAGER_NAME}); - RETRY_ROLLBACKING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, - SessionMode.REDIS.getName(), new Object[]{RETRY_ROLLBACKING_SESSION_MANAGER_NAME}); DISTRIBUTED_LOCKER = DistributedLockerFactory.getDistributedLocker(SessionMode.REDIS.getName()); } else { diff --git a/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java b/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java index a4719535063..9c171a0ca4b 100644 --- a/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java +++ b/server/src/main/java/io/seata/server/storage/db/session/DataBaseSessionManager.java @@ -21,7 +21,6 @@ import io.seata.common.executor.Initialize; import io.seata.common.loader.LoadLevel; import io.seata.common.loader.Scope; -import io.seata.common.util.StringUtils; import io.seata.core.exception.TransactionException; import io.seata.core.model.BranchStatus; import io.seata.core.model.GlobalStatus; @@ -40,19 +39,13 @@ * @author zhangsen */ @LoadLevel(name = "db", scope = Scope.PROTOTYPE) -public class DataBaseSessionManager extends AbstractSessionManager - implements Initialize { +public class DataBaseSessionManager extends AbstractSessionManager implements Initialize { /** * The constant LOGGER. */ protected static final Logger LOGGER = LoggerFactory.getLogger(DataBaseSessionManager.class); - /** - * The Task name. - */ - protected String taskName; - /** * Instantiates a new Data base session manager. */ @@ -60,16 +53,6 @@ public DataBaseSessionManager() { super(); } - /** - * Instantiates a new Data base session manager. - * - * @param name the name - */ - public DataBaseSessionManager(String name) { - super(); - this.taskName = name; - } - @Override public void init() { transactionStoreManager = DataBaseTransactionStoreManager.getInstance(); @@ -77,24 +60,15 @@ public void init() { @Override public void addGlobalSession(GlobalSession session) throws TransactionException { - if (StringUtils.isBlank(taskName)) { - boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_ADD, session); - if (!ret) { - throw new StoreException("addGlobalSession failed."); - } - } else { - boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_UPDATE, session); - if (!ret) { - throw new StoreException("addGlobalSession failed."); - } + boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_ADD, session); + if (!ret) { + throw new StoreException("addGlobalSession failed."); } + } @Override public void updateGlobalSessionStatus(GlobalSession session, GlobalStatus status) throws TransactionException { - if (StringUtils.isNotBlank(taskName)) { - return; - } session.setStatus(status); boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_UPDATE, session); if (!ret) { @@ -103,9 +77,9 @@ public void updateGlobalSessionStatus(GlobalSession session, GlobalStatus status } /** - * remove globalSession - * 1. rootSessionManager remove normal globalSession - * 2. retryCommitSessionManager and retryRollbackSessionManager remove retry expired globalSession + * remove globalSession 1. rootSessionManager remove normal globalSession 2. retryCommitSessionManager and + * retryRollbackSessionManager remove retry expired globalSession + * * @param session the session * @throws TransactionException the transaction exception */ @@ -119,9 +93,6 @@ public void removeGlobalSession(GlobalSession session) throws TransactionExcepti @Override public void addBranchSession(GlobalSession globalSession, BranchSession session) throws TransactionException { - if (StringUtils.isNotBlank(taskName)) { - return; - } boolean ret = transactionStoreManager.writeSession(LogOperation.BRANCH_ADD, session); if (!ret) { throw new StoreException("addBranchSession failed."); @@ -130,9 +101,6 @@ public void addBranchSession(GlobalSession globalSession, BranchSession session) @Override public void updateBranchSessionStatus(BranchSession session, BranchStatus status) throws TransactionException { - if (StringUtils.isNotBlank(taskName)) { - return; - } boolean ret = transactionStoreManager.writeSession(LogOperation.BRANCH_UPDATE, session); if (!ret) { throw new StoreException("updateBranchSessionStatus failed."); @@ -141,9 +109,6 @@ public void updateBranchSessionStatus(BranchSession session, BranchStatus status @Override public void removeBranchSession(GlobalSession globalSession, BranchSession session) throws TransactionException { - if (StringUtils.isNotBlank(taskName)) { - return; - } boolean ret = transactionStoreManager.writeSession(LogOperation.BRANCH_REMOVE, session); if (!ret) { throw new StoreException("removeBranchSession failed."); @@ -177,7 +142,7 @@ public List findGlobalSessions(SessionCondition condition) { @Override public T lockAndExecute(GlobalSession globalSession, GlobalSession.LockCallable lockCallable) - throws TransactionException { + throws TransactionException { return lockCallable.call(); } } diff --git a/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java b/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java index c2b2dfc39b7..006d394c573 100644 --- a/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java +++ b/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java @@ -22,7 +22,6 @@ import io.seata.common.executor.Initialize; import io.seata.common.loader.LoadLevel; import io.seata.common.loader.Scope; -import io.seata.common.util.StringUtils; import io.seata.core.exception.TransactionException; import io.seata.core.model.BranchStatus; import io.seata.core.model.GlobalStatus; @@ -30,7 +29,6 @@ import io.seata.server.session.BranchSession; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; -import io.seata.server.session.SessionHolder; import io.seata.server.storage.redis.store.RedisTransactionStoreManager; import io.seata.server.store.TransactionStoreManager.LogOperation; import org.slf4j.Logger; @@ -46,11 +44,7 @@ public class RedisSessionManager extends AbstractSessionManager * The constant LOGGER. */ protected static final Logger LOGGER = LoggerFactory.getLogger(RedisSessionManager.class); - - /** - * The Task name. - */ - protected String taskName; + /** * Instantiates a new Data base session manager. @@ -58,17 +52,7 @@ public class RedisSessionManager extends AbstractSessionManager public RedisSessionManager() { super(); } - - /** - * Instantiates a new Data base session manager. - * - * @param name - * the name - */ - public RedisSessionManager(String name) { - super(); - this.taskName = name; - } + @Override public void init() { @@ -77,24 +61,14 @@ public void init() { @Override public void addGlobalSession(GlobalSession session) throws TransactionException { - if (StringUtils.isBlank(taskName)) { - boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_ADD, session); - if (!ret) { - throw new StoreException("addGlobalSession failed."); - } - } else { - boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_UPDATE, session); - if (!ret) { - throw new StoreException("addGlobalSession failed."); - } + boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_ADD, session); + if (!ret) { + throw new StoreException("addGlobalSession failed."); } } @Override public void updateGlobalSessionStatus(GlobalSession session, GlobalStatus status) throws TransactionException { - if (!StringUtils.isEmpty(taskName)) { - return; - } session.setStatus(status); boolean ret = transactionStoreManager.writeSession(LogOperation.GLOBAL_UPDATE, session); if (!ret) { @@ -120,9 +94,6 @@ public void removeGlobalSession(GlobalSession session) throws TransactionExcepti @Override public void addBranchSession(GlobalSession globalSession, BranchSession session) throws TransactionException { - if (!StringUtils.isEmpty(taskName)) { - return; - } boolean ret = transactionStoreManager.writeSession(LogOperation.BRANCH_ADD, session); if (!ret) { throw new StoreException("addBranchSession failed."); @@ -131,9 +102,6 @@ public void addBranchSession(GlobalSession globalSession, BranchSession session) @Override public void updateBranchSessionStatus(BranchSession session, BranchStatus status) throws TransactionException { - if (!StringUtils.isEmpty(taskName)) { - return; - } boolean ret = transactionStoreManager.writeSession(LogOperation.BRANCH_UPDATE, session); if (!ret) { throw new StoreException("updateBranchSessionStatus failed."); @@ -142,9 +110,6 @@ public void updateBranchSessionStatus(BranchSession session, BranchStatus status @Override public void removeBranchSession(GlobalSession globalSession, BranchSession session) throws TransactionException { - if (!StringUtils.isEmpty(taskName)) { - return; - } boolean ret = transactionStoreManager.writeSession(LogOperation.BRANCH_REMOVE, session); if (!ret) { throw new StoreException("removeBranchSession failed."); @@ -163,20 +128,10 @@ public GlobalSession findGlobalSession(String xid, boolean withBranchSessions) { @Override public Collection allSessions() { - // get by taskName - if (SessionHolder.ASYNC_COMMITTING_SESSION_MANAGER_NAME.equalsIgnoreCase(taskName)) { - return findGlobalSessions(new SessionCondition(GlobalStatus.AsyncCommitting)); - } else if (SessionHolder.RETRY_COMMITTING_SESSION_MANAGER_NAME.equalsIgnoreCase(taskName)) { - return findGlobalSessions(new SessionCondition(GlobalStatus.CommitRetrying, GlobalStatus.Committing)); - } else if (SessionHolder.RETRY_ROLLBACKING_SESSION_MANAGER_NAME.equalsIgnoreCase(taskName)) { - return findGlobalSessions(new SessionCondition(GlobalStatus.RollbackRetrying, GlobalStatus.Rollbacking, - GlobalStatus.TimeoutRollbacking, GlobalStatus.TimeoutRollbackRetrying)); - } else { - // all data - return findGlobalSessions(new SessionCondition(GlobalStatus.UnKnown, GlobalStatus.Begin, GlobalStatus.Committing, - GlobalStatus.CommitRetrying, GlobalStatus.Rollbacking, GlobalStatus.RollbackRetrying, GlobalStatus.TimeoutRollbacking, - GlobalStatus.TimeoutRollbackRetrying, GlobalStatus.AsyncCommitting)); - } + return findGlobalSessions( + new SessionCondition(GlobalStatus.UnKnown, GlobalStatus.Begin, GlobalStatus.Committing, + GlobalStatus.CommitRetrying, GlobalStatus.Rollbacking, GlobalStatus.RollbackRetrying, + GlobalStatus.TimeoutRollbacking, GlobalStatus.TimeoutRollbackRetrying, GlobalStatus.AsyncCommitting)); } @Override From 0112719ad0e8c4225a9f59a8598f83cda296a760 Mon Sep 17 00:00:00 2001 From: isharpever <36060365+isharpever@users.noreply.github.com> Date: Fri, 3 Feb 2023 13:17:51 +0800 Subject: [PATCH 020/182] bugfix: After 1.6.0, auto-increment of pgsql/oracle pk columns are no longer supported (#5294) --- changes/en-us/2.0.0.md | 2 + changes/zh-cn/2.0.0.md | 2 + .../exec/oracle/OracleInsertExecutor.java | 52 ++++++- .../postgresql/PostgresqlInsertExecutor.java | 52 ++++++- .../exec/OracleInsertExecutorTest.java | 140 +++++++++++++++++ .../exec/PostgresqlInsertExecutorTest.java | 147 +++++++++++++++++- 6 files changed, 392 insertions(+), 3 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index c5790fc8def..74e01278153 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -20,6 +20,7 @@ The version is updated as follows: ### bugfix: - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock - [[#5282](https://github.com/seata/seata/pull/5282)] parallel request handle throw IndexOutOfBoundsException + - [[#5294](https://github.com/seata/seata/pull/5294)] fix auto-increment of pk columns in PostgreSQL/Oracle in AT mode ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager @@ -39,6 +40,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [Bughue](https://github.com/Bughue) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [a364176773](https://github.com/a364176773) + - [isharpever](https://github.com/isharpever) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 8baf5b3c0b9..9c00ae76da9 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -20,6 +20,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 ### bugfix: - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 - [[#5282](https://github.com/seata/seata/pull/5282)] 修复并行rm请求处理时数组索引越界问题 + - [[#5294](https://github.com/seata/seata/pull/5294)] 修复AT模式下pgsql/oracle的主键列自增的问题 ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 @@ -39,6 +40,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [Bughue](https://github.com/Bughue) - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [a364176773](https://github.com/a364176773) + - [isharpever](https://github.com/isharpever) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/oracle/OracleInsertExecutor.java b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/oracle/OracleInsertExecutor.java index e4220026c2e..deec875345e 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/oracle/OracleInsertExecutor.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/oracle/OracleInsertExecutor.java @@ -17,19 +17,23 @@ import io.seata.common.loader.LoadLevel; import io.seata.common.loader.Scope; +import io.seata.common.util.CollectionUtils; import io.seata.rm.datasource.StatementProxy; import io.seata.rm.datasource.exec.BaseInsertExecutor; import io.seata.rm.datasource.exec.StatementCallback; +import io.seata.sqlparser.SQLInsertRecognizer; import io.seata.sqlparser.SQLRecognizer; import io.seata.sqlparser.struct.Null; import io.seata.sqlparser.struct.Sequenceable; import io.seata.sqlparser.struct.SqlMethodExpr; import io.seata.sqlparser.struct.SqlSequenceExpr; +import io.seata.sqlparser.util.ColumnUtils; import io.seata.sqlparser.util.JdbcConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.SQLException; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -56,9 +60,55 @@ public OracleInsertExecutor(StatementProxy statementProxy, StatementCallback sta super(statementProxy, statementCallback, sqlRecognizer); } + /** + * 1. If the insert columns are not empty and do not contain any pk columns, + * it means that there is no pk value in the insert rows, then all the pk values should come from auto-increment. + *

+ * 2. The pk value exists in insert rows. The possible situations are: + *

    + *
  • The insert columns are empty: all pk values can be obtained from insert rows
  • + *
  • The insert columns contain at least one pk column: first obtain the existing pk value from the insert rows, and other from auto-increment
  • + *
+ * + * @return {@link Map}<{@link String}, {@link List}<{@link Object}>> + * @throws SQLException the sql exception + */ @Override public Map> getPkValues() throws SQLException { - return getPkValuesByColumn(); + List pkColumnNameList = getTableMeta().getPrimaryKeyOnlyName(); + Map> pkValuesMap = new HashMap<>(pkColumnNameList.size()); + + // first obtain the existing pk value from the insert rows (if exists) + if (!containsColumns() || containsAnyPk()) { + pkValuesMap.putAll(getPkValuesByColumn()); + } + // other from auto-increment + for (String columnName : pkColumnNameList) { + if (!pkValuesMap.containsKey(columnName)) { + pkValuesMap.put(columnName, getGeneratedKeys(columnName)); + } + } + return pkValuesMap; + } + + /** + * Whether the insert columns contain any pk columns + * + * @return true: contain at least one pk column. false: do not contain any pk columns + */ + public boolean containsAnyPk() { + SQLInsertRecognizer recognizer = (SQLInsertRecognizer)sqlRecognizer; + List insertColumns = recognizer.getInsertColumns(); + if (CollectionUtils.isEmpty(insertColumns)) { + return false; + } + List pkColumnNameList = getTableMeta().getPrimaryKeyOnlyName(); + if (CollectionUtils.isEmpty(pkColumnNameList)) { + return false; + } + List newColumns = ColumnUtils.delEscape(insertColumns, getDbType()); + return pkColumnNameList.stream().anyMatch(pkColumn -> newColumns.contains(pkColumn) + || CollectionUtils.toUpperList(newColumns).contains(pkColumn.toUpperCase())); } @Override diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/postgresql/PostgresqlInsertExecutor.java b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/postgresql/PostgresqlInsertExecutor.java index 5610b86f0cd..9f6ff0f8ef9 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/postgresql/PostgresqlInsertExecutor.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/postgresql/PostgresqlInsertExecutor.java @@ -18,22 +18,26 @@ import io.seata.common.exception.ShouldNeverHappenException; import io.seata.common.loader.LoadLevel; import io.seata.common.loader.Scope; +import io.seata.common.util.CollectionUtils; import io.seata.common.util.StringUtils; import io.seata.rm.datasource.StatementProxy; import io.seata.rm.datasource.exec.BaseInsertExecutor; import io.seata.rm.datasource.exec.StatementCallback; import io.seata.rm.datasource.sql.struct.ColumnMeta; +import io.seata.sqlparser.SQLInsertRecognizer; import io.seata.sqlparser.SQLRecognizer; import io.seata.sqlparser.struct.Defaultable; import io.seata.sqlparser.struct.Sequenceable; import io.seata.sqlparser.struct.SqlMethodExpr; import io.seata.sqlparser.struct.SqlSequenceExpr; import io.seata.sqlparser.struct.SqlDefaultExpr; +import io.seata.sqlparser.util.ColumnUtils; import io.seata.sqlparser.util.JdbcConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.SQLException; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -60,9 +64,55 @@ public PostgresqlInsertExecutor(StatementProxy statementProxy, StatementCallback super(statementProxy, statementCallback, sqlRecognizer); } + /** + * 1. If the insert columns are not empty and do not contain any pk columns, + * it means that there is no pk value in the insert rows, then all the pk values should come from auto-increment. + *

+ * 2. The pk value exists in insert rows. The possible situations are: + *

    + *
  • The insert columns are empty: all pk values can be obtained from insert rows
  • + *
  • The insert columns contain at least one pk column: first obtain the existing pk value from the insert rows, and other from auto-increment
  • + *
+ * + * @return {@link Map}<{@link String}, {@link List}<{@link Object}>> + * @throws SQLException the sql exception + */ @Override public Map> getPkValues() throws SQLException { - return getPkValuesByColumn(); + List pkColumnNameList = getTableMeta().getPrimaryKeyOnlyName(); + Map> pkValuesMap = new HashMap<>(pkColumnNameList.size()); + + // first obtain the existing pk value from the insert rows (if exists) + if (!containsColumns() || containsAnyPk()) { + pkValuesMap.putAll(getPkValuesByColumn()); + } + // other from auto-increment + for (String columnName : pkColumnNameList) { + if (!pkValuesMap.containsKey(columnName)) { + pkValuesMap.put(columnName, getGeneratedKeys(columnName)); + } + } + return pkValuesMap; + } + + /** + * Whether the insert columns contain any pk columns + * + * @return true: contain at least one pk column. false: do not contain any pk columns + */ + public boolean containsAnyPk() { + SQLInsertRecognizer recognizer = (SQLInsertRecognizer)sqlRecognizer; + List insertColumns = recognizer.getInsertColumns(); + if (CollectionUtils.isEmpty(insertColumns)) { + return false; + } + List pkColumnNameList = getTableMeta().getPrimaryKeyOnlyName(); + if (CollectionUtils.isEmpty(pkColumnNameList)) { + return false; + } + List newColumns = ColumnUtils.delEscape(insertColumns, getDbType()); + return pkColumnNameList.stream().anyMatch(pkColumn -> newColumns.contains(pkColumn) + || CollectionUtils.toUpperList(newColumns).contains(pkColumn.toUpperCase())); } @Override diff --git a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/OracleInsertExecutorTest.java b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/OracleInsertExecutorTest.java index 3397f9ab7bd..b6dcdde79bf 100644 --- a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/OracleInsertExecutorTest.java +++ b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/OracleInsertExecutorTest.java @@ -32,8 +32,10 @@ import org.mockito.Mockito; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -198,6 +200,144 @@ public void testStatement_pkValueByAuto_NotSupportYetException() throws Exceptio } + @Test + public void testGetPkValues_SinglePk() throws SQLException { + doReturn(tableMeta).when(insertExecutor).getTableMeta(); + + List pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + + // mock pk values from insert rows + Map> mockPkValuesFromColumn = new HashMap<>(); + mockPkValuesFromColumn.put(ID_COLUMN, Collections.singletonList(PK_VALUE_ID + 1)); + doReturn(mockPkValuesFromColumn).when(insertExecutor).getPkValuesByColumn(); + + // mock pk values from auto increment + List mockPkValuesAutoGenerated = Collections.singletonList(PK_VALUE_ID); + doReturn(mockPkValuesAutoGenerated).when(insertExecutor).getGeneratedKeys(ID_COLUMN); + + // situation1: insert columns are empty + List columns = new ArrayList<>(); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(columns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(true); + Assertions.assertIterableEquals(mockPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation2: insert columns contain the pk column + columns = new ArrayList<>(); + columns.add(ID_COLUMN); + columns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(columns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + Assertions.assertIterableEquals(mockPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation3: insert columns are not empty and do not contain the pk column + columns = new ArrayList<>(); + columns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(columns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + Assertions.assertIterableEquals( + Collections.singletonMap(ID_COLUMN, mockPkValuesAutoGenerated).entrySet(), + insertExecutor.getPkValues().entrySet()); + } + + @Test + public void testGetPkValues_MultiPk() throws SQLException { + doReturn(tableMeta).when(insertExecutor).getTableMeta(); + + List pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + pkColumns.add(USER_ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + + // mock all pk values from insert rows + Map> mockAllPkValuesFromColumn = new HashMap<>(); + mockAllPkValuesFromColumn.put(ID_COLUMN, Collections.singletonList(PK_VALUE_ID + 1)); + mockAllPkValuesFromColumn.put(USER_ID_COLUMN, Collections.singletonList(PK_VALUE_USER_ID + 1)); + doReturn(mockAllPkValuesFromColumn).when(insertExecutor).getPkValuesByColumn(); + + // mock pk values from auto increment + List mockPkValuesAutoGenerated_ID = Collections.singletonList(PK_VALUE_ID); + doReturn(mockPkValuesAutoGenerated_ID).when(insertExecutor).getGeneratedKeys(ID_COLUMN); + List mockPkValuesAutoGenerated_USER_ID = Collections.singletonList(PK_VALUE_USER_ID); + doReturn(mockPkValuesAutoGenerated_USER_ID).when(insertExecutor).getGeneratedKeys(USER_ID_COLUMN); + + // situation1: insert columns are empty + List insertColumns = new ArrayList<>(); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(true); + Assertions.assertIterableEquals(mockAllPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation2: insert columns contain all pk columns + insertColumns = new ArrayList<>(); + insertColumns.add(ID_COLUMN); + insertColumns.add(USER_ID_COLUMN); + insertColumns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + Assertions.assertIterableEquals(mockAllPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation3: insert columns contain partial pk columns + insertColumns = new ArrayList<>(); + insertColumns.add(ID_COLUMN); + insertColumns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + + Map> mockPkValuesFromColumn_ID = new HashMap<>(); + mockPkValuesFromColumn_ID.put(ID_COLUMN, Collections.singletonList(PK_VALUE_ID + 1)); + doReturn(mockPkValuesFromColumn_ID).when(insertExecutor).getPkValuesByColumn(); + + Map> expectPkValues = new HashMap<>(mockPkValuesFromColumn_ID); + expectPkValues.put(USER_ID_COLUMN, mockPkValuesAutoGenerated_USER_ID); + Assertions.assertIterableEquals(expectPkValues.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation4: insert columns are not empty and do not contain the pk column + insertColumns = new ArrayList<>(); + insertColumns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + + doReturn(new HashMap<>()).when(insertExecutor).getPkValuesByColumn(); + + expectPkValues = new HashMap<>(); + expectPkValues.put(ID_COLUMN, mockPkValuesAutoGenerated_ID); + expectPkValues.put(USER_ID_COLUMN, mockPkValuesAutoGenerated_USER_ID); + Assertions.assertIterableEquals(expectPkValues.entrySet(), insertExecutor.getPkValues().entrySet()); + } + + @Test + public void testContainsAnyPK() { + doReturn(tableMeta).when(insertExecutor).getTableMeta(); + + Assertions.assertFalse(insertExecutor.containsAnyPk()); + + mockInsertColumns(); + doReturn(null).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertFalse(insertExecutor.containsAnyPk()); + + List pkColumns = new ArrayList<>(); + pkColumns.add(System.currentTimeMillis() + ""); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertFalse(insertExecutor.containsAnyPk()); + + pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertTrue(insertExecutor.containsAnyPk()); + + pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + pkColumns.add(USER_ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertTrue(insertExecutor.containsAnyPk()); + + pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + pkColumns.add(System.currentTimeMillis() + ""); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertTrue(insertExecutor.containsAnyPk()); + } private List mockInsertColumns() { List columns = new ArrayList<>(); diff --git a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/PostgresqlInsertExecutorTest.java b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/PostgresqlInsertExecutorTest.java index 198604f52ff..1acad8d40ab 100644 --- a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/PostgresqlInsertExecutorTest.java +++ b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/PostgresqlInsertExecutorTest.java @@ -29,7 +29,13 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import java.util.*; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -145,6 +151,145 @@ public void testInsertDefault_ByDefault_MultiPk() throws Exception { Assertions.assertEquals(pkValuesMap.get(USER_ID_COLUMN), pkValuesAutoUserId); } + @Test + public void testGetPkValues_SinglePk() throws SQLException { + doReturn(tableMeta).when(insertExecutor).getTableMeta(); + + List pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + + // mock pk values from insert rows + Map> mockPkValuesFromColumn = new HashMap<>(); + mockPkValuesFromColumn.put(ID_COLUMN, Collections.singletonList(PK_VALUE_ID + 1)); + doReturn(mockPkValuesFromColumn).when(insertExecutor).getPkValuesByColumn(); + + // mock pk values from auto increment + List mockPkValuesAutoGenerated = Collections.singletonList(PK_VALUE_ID); + doReturn(mockPkValuesAutoGenerated).when(insertExecutor).getGeneratedKeys(ID_COLUMN); + + // situation1: insert columns are empty + List columns = new ArrayList<>(); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(columns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(true); + Assertions.assertIterableEquals(mockPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation2: insert columns contain the pk column + columns = new ArrayList<>(); + columns.add(ID_COLUMN); + columns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(columns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + Assertions.assertIterableEquals(mockPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation3: insert columns are not empty and do not contain the pk column + columns = new ArrayList<>(); + columns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(columns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + Assertions.assertIterableEquals( + Collections.singletonMap(ID_COLUMN, mockPkValuesAutoGenerated).entrySet(), + insertExecutor.getPkValues().entrySet()); + } + + @Test + public void testGetPkValues_MultiPk() throws SQLException { + doReturn(tableMeta).when(insertExecutor).getTableMeta(); + + List pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + pkColumns.add(USER_ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + + // mock all pk values from insert rows + Map> mockAllPkValuesFromColumn = new HashMap<>(); + mockAllPkValuesFromColumn.put(ID_COLUMN, Collections.singletonList(PK_VALUE_ID + 1)); + mockAllPkValuesFromColumn.put(USER_ID_COLUMN, Collections.singletonList(PK_VALUE_USER_ID + 1)); + doReturn(mockAllPkValuesFromColumn).when(insertExecutor).getPkValuesByColumn(); + + // mock pk values from auto increment + List mockPkValuesAutoGenerated_ID = Collections.singletonList(PK_VALUE_ID); + doReturn(mockPkValuesAutoGenerated_ID).when(insertExecutor).getGeneratedKeys(ID_COLUMN); + List mockPkValuesAutoGenerated_USER_ID = Collections.singletonList(PK_VALUE_USER_ID); + doReturn(mockPkValuesAutoGenerated_USER_ID).when(insertExecutor).getGeneratedKeys(USER_ID_COLUMN); + + // situation1: insert columns are empty + List insertColumns = new ArrayList<>(); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(true); + Assertions.assertIterableEquals(mockAllPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation2: insert columns contain all pk columns + insertColumns = new ArrayList<>(); + insertColumns.add(ID_COLUMN); + insertColumns.add(USER_ID_COLUMN); + insertColumns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + Assertions.assertIterableEquals(mockAllPkValuesFromColumn.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation3: insert columns contain partial pk columns + insertColumns = new ArrayList<>(); + insertColumns.add(ID_COLUMN); + insertColumns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + + Map> mockPkValuesFromColumn_ID = new HashMap<>(); + mockPkValuesFromColumn_ID.put(ID_COLUMN, Collections.singletonList(PK_VALUE_ID + 1)); + doReturn(mockPkValuesFromColumn_ID).when(insertExecutor).getPkValuesByColumn(); + + Map> expectPkValues = new HashMap<>(mockPkValuesFromColumn_ID); + expectPkValues.put(USER_ID_COLUMN, mockPkValuesAutoGenerated_USER_ID); + Assertions.assertIterableEquals(expectPkValues.entrySet(), insertExecutor.getPkValues().entrySet()); + + // situation4: insert columns are not empty and do not contain the pk column + insertColumns = new ArrayList<>(); + insertColumns.add(USER_NAME_COLUMN); + when(sqlInsertRecognizer.getInsertColumns()).thenReturn(insertColumns); + when(sqlInsertRecognizer.insertColumnsIsEmpty()).thenReturn(false); + + doReturn(new HashMap<>()).when(insertExecutor).getPkValuesByColumn(); + + expectPkValues = new HashMap<>(); + expectPkValues.put(ID_COLUMN, mockPkValuesAutoGenerated_ID); + expectPkValues.put(USER_ID_COLUMN, mockPkValuesAutoGenerated_USER_ID); + Assertions.assertIterableEquals(expectPkValues.entrySet(), insertExecutor.getPkValues().entrySet()); + } + + @Test + public void testContainsAnyPK() { + doReturn(tableMeta).when(insertExecutor).getTableMeta(); + + Assertions.assertFalse(insertExecutor.containsAnyPk()); + + mockInsertColumns(); + doReturn(null).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertFalse(insertExecutor.containsAnyPk()); + + List pkColumns = new ArrayList<>(); + pkColumns.add(System.currentTimeMillis() + ""); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertFalse(insertExecutor.containsAnyPk()); + + pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertTrue(insertExecutor.containsAnyPk()); + + pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + pkColumns.add(USER_ID_COLUMN); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertTrue(insertExecutor.containsAnyPk()); + + pkColumns = new ArrayList<>(); + pkColumns.add(ID_COLUMN); + pkColumns.add(System.currentTimeMillis() + ""); + doReturn(pkColumns).when(tableMeta).getPrimaryKeyOnlyName(); + Assertions.assertTrue(insertExecutor.containsAnyPk()); + } + private void mockParametersPkWithDefault() { Map> parameters = new HashMap<>(4); ArrayList arrayList0 = new ArrayList<>(); From 5eb7c185850647b4d9394761e5cf6920c8cae0eb Mon Sep 17 00:00:00 2001 From: ZhangShiYeChina <42596680+ZhangShiYeChina@users.noreply.github.com> Date: Mon, 6 Feb 2023 09:50:57 +0800 Subject: [PATCH 021/182] bugfix: don't remove GlobalSession when retry rollback or retry commit timeout (#5298) --- changes/en-us/2.0.0.md | 2 ++ changes/zh-cn/2.0.0.md | 2 ++ .../rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.java | 2 +- .../io/seata/server/coordinator/DefaultCoordinator.java | 6 ------ 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 74e01278153..68a5f9cbd70 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -21,6 +21,8 @@ The version is updated as follows: - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock - [[#5282](https://github.com/seata/seata/pull/5282)] parallel request handle throw IndexOutOfBoundsException - [[#5294](https://github.com/seata/seata/pull/5294)] fix auto-increment of pk columns in PostgreSQL/Oracle in AT mode + - [[#5297](https://github.com/seata/seata/pull/5297)] Correct the comment on MySQLUndoUpdateExecutor#UPDATE_SQL_TEMPLATE + - [[#5293](https://github.com/seata/seata/pull/5293)] Do not remove GlobalSession when retry rollback or retry commit timeout ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 9c00ae76da9..c0176bee4a7 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -21,6 +21,8 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 - [[#5282](https://github.com/seata/seata/pull/5282)] 修复并行rm请求处理时数组索引越界问题 - [[#5294](https://github.com/seata/seata/pull/5294)] 修复AT模式下pgsql/oracle的主键列自增的问题 + - [[#5297](https://github.com/seata/seata/pull/5297)] 纠正 MySQLUndoUpdateExecutor#UPDATE_SQL_TEMPLATE 的注释 + - [[#5293](https://github.com/seata/seata/pull/5293)] 协调器的定时任务中处理全局事务的重试回滚 或 重试提交,即使超时也不再删除事务 ### optimize: - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.java b/rm-datasource/src/main/java/io/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.java index 52df100d047..50c59cf6bc5 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.java @@ -37,7 +37,7 @@ public class MySQLUndoUpdateExecutor extends AbstractUndoExecutor { /** - * UPDATE a SET x = ?, y = ?, z = ? WHERE pk1 in (?) pk2 in (?) + * UPDATE a SET x = ?, y = ?, z = ? WHERE pk1 =? and pk2 =? */ private static final String UPDATE_SQL_TEMPLATE = "UPDATE %s SET %s WHERE %s "; diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index f5e70d9847b..9287fc915b2 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -379,9 +379,6 @@ protected void handleRetryRollbacking() { if (ROLLBACK_RETRY_TIMEOUT_UNLOCK_ENABLE) { rollbackingSession.clean(); } - // Prevent thread safety issues - SessionHolder.getRootSessionManager().removeGlobalSession(rollbackingSession); - LOGGER.error("Global transaction rollback retry timeout and has removed [{}]", rollbackingSession.getXid()); SessionHelper.endRollbackFailed(rollbackingSession, true, true); @@ -416,9 +413,6 @@ protected void handleRetryCommitting() { return; } if (isRetryTimeout(now, MAX_COMMIT_RETRY_TIMEOUT, committingSession.getBeginTime())) { - // Prevent thread safety issues - SessionHolder.getRootSessionManager().removeGlobalSession(committingSession); - LOGGER.error("Global transaction commit retry timeout and has removed [{}]", committingSession.getXid()); // commit retry timeout event SessionHelper.endCommitFailed(committingSession, true, true); From 12eabb1c8c25139b9be2f2120e104060ca829d4f Mon Sep 17 00:00:00 2001 From: mxsm Date: Mon, 6 Feb 2023 10:08:51 +0800 Subject: [PATCH 022/182] optimize: Remove startup script the -Xmn configuration (#5302) --- changes/en-us/2.0.0.md | 2 ++ changes/zh-cn/2.0.0.md | 2 ++ distribution/bin/seata-server.bat | 2 +- distribution/bin/seata-server.sh | 3 +-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 68a5f9cbd70..cc3fabaa863 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -29,6 +29,7 @@ The version is updated as follows: - [[#4881](https://github.com/seata/seata/pull/4881)] reorganize the usage of Sessionmanager and listener - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. - [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern + - [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later @@ -43,6 +44,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [a364176773](https://github.com/a364176773) - [isharpever](https://github.com/isharpever) + - [mxsm](https://github.com/mxsm) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index c0176bee4a7..c727268d628 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -29,6 +29,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#4881](https://github.com/seata/seata/pull/4881)] 重新划分 SessionManager和SessionLifecycleListener 用法 - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 - [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 + - [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 @@ -43,6 +44,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [GoodBoyCoder](https://github.com/GoodBoyCoder) - [a364176773](https://github.com/a364176773) - [isharpever](https://github.com/isharpever) + - [mxsm](https://github.com/mxsm) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/distribution/bin/seata-server.bat b/distribution/bin/seata-server.bat index 04c51a38d8e..d94527ab236 100644 --- a/distribution/bin/seata-server.bat +++ b/distribution/bin/seata-server.bat @@ -93,7 +93,7 @@ if "%SKYWALKING_ENABLE%"=="true" ( echo "apm-skywalking not enabled" ) -%JAVACMD% %JAVA_OPTS% %SKYWALKING_OPTS% -server -Dloader.path="%BASEDIR%"/lib -Xmx2048m -Xms2048m -Xmn1024m -Xss512k -XX:SurvivorRatio=10 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=1024m -XX:-OmitStackTraceInFastThrow -XX:-UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="%BASEDIR%"/logs/java_heapdump.hprof -XX:+DisableExplicitGC -Xloggc:"%BASEDIR%"/logs/seata_gc.log -verbose:gc -Dio.netty.leakDetectionLevel=advanced -classpath %CLASSPATH% -Dapp.name="seata-server" -Dapp.repo="%REPO%" -Dapp.home="%BASEDIR%" -Dbasedir="%BASEDIR%" -Dspring.config.location="%BASEDIR%"/conf/application.yml -Dlogging.config="%BASEDIR%"/conf/logback-spring.xml -jar "%BASEDIR%"/target/seata-server.jar %CMD_LINE_ARGS% +%JAVACMD% %JAVA_OPTS% %SKYWALKING_OPTS% -server -Dloader.path="%BASEDIR%"/lib -Xmx2048m -Xms2048m -Xss512k -XX:SurvivorRatio=10 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=1024m -XX:-OmitStackTraceInFastThrow -XX:-UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="%BASEDIR%"/logs/java_heapdump.hprof -XX:+DisableExplicitGC -Xloggc:"%BASEDIR%"/logs/seata_gc.log -verbose:gc -Dio.netty.leakDetectionLevel=advanced -classpath %CLASSPATH% -Dapp.name="seata-server" -Dapp.repo="%REPO%" -Dapp.home="%BASEDIR%" -Dbasedir="%BASEDIR%" -Dspring.config.location="%BASEDIR%"/conf/application.yml -Dlogging.config="%BASEDIR%"/conf/logback-spring.xml -jar "%BASEDIR%"/target/seata-server.jar %CMD_LINE_ARGS% if %ERRORLEVEL% NEQ 0 goto error goto end diff --git a/distribution/bin/seata-server.sh b/distribution/bin/seata-server.sh index bd181f395a8..2ed77251532 100644 --- a/distribution/bin/seata-server.sh +++ b/distribution/bin/seata-server.sh @@ -121,13 +121,12 @@ else fi JVM_XMX=$JVM_XMX JVM_XMS=$JVM_XMS -JVM_XMN=$JVM_XMN JVM_XSS=$JVM_XSS JVM_MetaspaceSize=$JVM_MetaspaceSize JVM_MaxMetaspaceSize=$JVM_MaxMetaspaceSize JVM_MaxDirectMemorySize=$JVM_MaxDirectMemorySize LOADER_PATH=$LOADER_PATH -JAVA_OPT="${JAVA_OPT} -server -Dloader.path=${LOADER_PATH:="$BASEDIR/lib"} -Xmx${JVM_XMX:="2048m"} -Xms${JVM_XMS:="2048m"} -Xmn${JVM_XMN:="1024m"} -Xss${JVM_XSS:="512k"} -XX:SurvivorRatio=10 -XX:MetaspaceSize=${JVM_MetaspaceSize:="128m"} -XX:MaxMetaspaceSize=${JVM_MaxMetaspaceSize:="256m"} -XX:MaxDirectMemorySize=${JVM_MaxDirectMemorySize:=1024m} -XX:-OmitStackTraceInFastThrow -XX:-UseAdaptiveSizePolicy" +JAVA_OPT="${JAVA_OPT} -server -Dloader.path=${LOADER_PATH:="$BASEDIR/lib"} -Xmx${JVM_XMX:="2048m"} -Xms${JVM_XMS:="2048m"} -Xss${JVM_XSS:="512k"} -XX:SurvivorRatio=10 -XX:MetaspaceSize=${JVM_MetaspaceSize:="128m"} -XX:MaxMetaspaceSize=${JVM_MaxMetaspaceSize:="256m"} -XX:MaxDirectMemorySize=${JVM_MaxDirectMemorySize:=1024m} -XX:-OmitStackTraceInFastThrow -XX:-UseAdaptiveSizePolicy" JAVA_OPT="${JAVA_OPT} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASEDIR}/logs/java_heapdump.hprof -XX:+DisableExplicitGC" JAVA_MAJOR_VERSION=$($JAVACMD -version 2>&1 | sed '1!d' | sed -e 's/"//g' | awk '{print $3}' | awk -F '.' '{print $1}') From 3b5ec3564084ceb04672ede2971115bf9efa2322 Mon Sep 17 00:00:00 2001 From: justabug Date: Mon, 6 Feb 2023 21:14:08 +0800 Subject: [PATCH 023/182] optimize: optimize logs when global commit/rollback catch an exception (#4880) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../java/io/seata/server/coordinator/DefaultCore.java | 9 +++++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index cc3fabaa863..ec802bc71e9 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -30,6 +30,7 @@ The version is updated as follows: - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. - [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern - [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration + - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when RM's commit return an exception and returns false ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index c727268d628..74f377c6547 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -30,6 +30,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 - [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 - [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 + - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出,避免误解 ### test: - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCore.java b/server/src/main/java/io/seata/server/coordinator/DefaultCore.java index add4aa5eb58..ad7e0217214 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCore.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCore.java @@ -239,8 +239,9 @@ public boolean doGlobalCommit(GlobalSession globalSession, boolean retrying) thr } } } catch (Exception ex) { - StackTraceLogger.error(LOGGER, ex, "Committing branch transaction exception: {}", - new String[] {branchSession.toString()}); + String commitInfo = retrying ? "Global commit continue" : "Global commit failed"; + StackTraceLogger.error(LOGGER, ex, "Committing branch transaction exception:retrying={}, {}, {}", + new String[] {String.valueOf(retrying), branchSession.toString(), commitInfo}); if (!retrying) { globalSession.queueToRetryCommit(); throw new TransactionException(ex); @@ -334,8 +335,8 @@ public boolean doGlobalRollback(GlobalSession globalSession, boolean retrying) t } } catch (Exception ex) { StackTraceLogger.error(LOGGER, ex, - "Rollback branch transaction exception, xid = {} branchId = {} exception = {}", - new String[] {globalSession.getXid(), String.valueOf(branchSession.getBranchId()), ex.getMessage()}); + "Rollback branch transaction exception, xid = {} ,branchId = {} ,retrying={} ,exception = {}, global rollback failed", + new String[] {globalSession.getXid(), String.valueOf(branchSession.getBranchId()), String.valueOf(retrying), ex.getMessage()}); if (!retrying) { globalSession.queueToRetryRollback(); } From 42693c639234415e06dcc7c031fc948b5eb59aeb Mon Sep 17 00:00:00 2001 From: liuqiufeng <775038282@qq.com> Date: Tue, 7 Feb 2023 10:56:02 +0800 Subject: [PATCH 024/182] test: add unit test[FileLoader, ObjectHolder, StringUtils] (#5308) --- changes/en-us/2.0.0.md | 3 +- changes/zh-cn/2.0.0.md | 3 +- .../seata/common/holder/ObjectHolderTest.java | 49 +++++++++++++++++++ .../io/seata/common/io/FileLoaderTest.java | 40 +++++++++++++++ .../io/seata/common/util/StringUtilsTest.java | 48 ++++++++++++++++++ common/src/test/resources/io/TestFile.txt | 15 ++++++ 6 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 common/src/test/java/io/seata/common/holder/ObjectHolderTest.java create mode 100644 common/src/test/java/io/seata/common/io/FileLoaderTest.java create mode 100644 common/src/test/resources/io/TestFile.txt diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index ec802bc71e9..0f205ccb2e2 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -33,7 +33,7 @@ The version is updated as follows: - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when RM's commit return an exception and returns false ### test: - - [[#1234](https://github.com/seata/seata/pull/1234)] Please delete the sample later + - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] ### Contributors: @@ -46,6 +46,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [a364176773](https://github.com/a364176773) - [isharpever](https://github.com/isharpever) - [mxsm](https://github.com/mxsm) + - [liuqiufeng](https://github.com/liuqiufeng) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 74f377c6547..8ddb8460b12 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -33,7 +33,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出,避免误解 ### test: - - [[#1234](https://github.com/seata/seata/pull/1234)] 样例,后续请删除 + - [[#5308](https://github.com/seata/seata/pull/5308)] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils] ### Contributors: @@ -46,6 +46,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [a364176773](https://github.com/a364176773) - [isharpever](https://github.com/isharpever) - [mxsm](https://github.com/mxsm) + - [liuqiufeng](https://github.com/liuqiufeng) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java b/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java new file mode 100644 index 00000000000..1819e11c98c --- /dev/null +++ b/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java @@ -0,0 +1,49 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.holder; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +/** + * @author liuqiufeng + */ +public class ObjectHolderTest { + + @BeforeEach + void setUp() { + ObjectHolder.INSTANCE.setObject("objectHolderTest", this); + } + + @AfterEach + void tearDown() { + } + + @Test + public void testGetObjectByName() { + Object object = ObjectHolder.INSTANCE.getObject("objectHolderTest"); + Assertions.assertNotNull(object); + } + + @Test + public void testGetObjectByClass() { + Object object = ObjectHolder.INSTANCE.getObject(ObjectHolderTest.class); + Assertions.assertNotNull(object); + } +} diff --git a/common/src/test/java/io/seata/common/io/FileLoaderTest.java b/common/src/test/java/io/seata/common/io/FileLoaderTest.java new file mode 100644 index 00000000000..73131c4fdac --- /dev/null +++ b/common/src/test/java/io/seata/common/io/FileLoaderTest.java @@ -0,0 +1,40 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.io; + +import java.io.File; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author liuqiufeng + */ +public class FileLoaderTest { + + @Test + public void testLoadExistFile() { + File file = FileLoader.load("io/TestFile.txt"); + Assertions.assertTrue(file != null && file.exists()); + } + + @Test + public void testLoadNotExistFile() { + File file = FileLoader.load("io/NotExistFile.txt"); + Assertions.assertTrue(file == null || !file.exists()); + } +} diff --git a/common/src/test/java/io/seata/common/util/StringUtilsTest.java b/common/src/test/java/io/seata/common/util/StringUtilsTest.java index 36e31f79eb7..410fc8e539e 100644 --- a/common/src/test/java/io/seata/common/util/StringUtilsTest.java +++ b/common/src/test/java/io/seata/common/util/StringUtilsTest.java @@ -58,6 +58,54 @@ public void testIsNullOrEmpty() { assertThat(StringUtils.isNullOrEmpty(" ")).isFalse(); } + @Test + public void testIsBlank() { + assertThat(StringUtils.isBlank(null)).isTrue(); + assertThat(StringUtils.isBlank("abc")).isFalse(); + assertThat(StringUtils.isBlank("")).isTrue(); + assertThat(StringUtils.isBlank(" ")).isTrue(); + } + + @Test + public void testIsNotBlank() { + assertThat(StringUtils.isNotBlank(null)).isFalse(); + assertThat(StringUtils.isNotBlank("abc")).isTrue(); + assertThat(StringUtils.isNotBlank("")).isFalse(); + assertThat(StringUtils.isNotBlank(" ")).isFalse(); + } + + @Test + public void testTrimToNull() { + assertThat(StringUtils.trimToNull(null)).isNull(); + assertThat(StringUtils.trimToNull("abc")).isEqualTo("abc"); + assertThat(StringUtils.trimToNull("")).isNull(); + assertThat(StringUtils.trimToNull(" ")).isNull(); + } + + @Test + public void testTrim() { + assertThat(StringUtils.trim(null)).isNull(); + assertThat(StringUtils.trim("abc")).isEqualTo("abc"); + assertThat(StringUtils.trim("")).isEqualTo(""); + assertThat(StringUtils.trim(" ")).isEqualTo(""); + } + + @Test + public void testIsEmpty() { + assertThat(StringUtils.isEmpty(null)).isTrue(); + assertThat(StringUtils.isEmpty("abc")).isFalse(); + assertThat(StringUtils.isEmpty("")).isTrue(); + assertThat(StringUtils.isEmpty(" ")).isFalse(); + } + + @Test + public void testIsNotEmpty() { + assertThat(StringUtils.isNotEmpty(null)).isFalse(); + assertThat(StringUtils.isNotEmpty("abc")).isTrue(); + assertThat(StringUtils.isNotEmpty("")).isFalse(); + assertThat(StringUtils.isNotEmpty(" ")).isTrue(); + } + @Test public void testHump2Line(){ assertThat(StringUtils.hump2Line("abc-d").equals("abcD")).isTrue(); diff --git a/common/src/test/resources/io/TestFile.txt b/common/src/test/resources/io/TestFile.txt new file mode 100644 index 00000000000..a269c622f9d --- /dev/null +++ b/common/src/test/resources/io/TestFile.txt @@ -0,0 +1,15 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ From 33d777e9b5a159bab17e742f069df37ee817623b Mon Sep 17 00:00:00 2001 From: jimin Date: Tue, 7 Feb 2023 13:39:49 +0800 Subject: [PATCH 025/182] bugfix: remove RollbackRetryTimeout sessions during in file storage recover (#5304) --- changes/en-us/2.0.0.md | 71 +++++++++++------- changes/zh-cn/2.0.0.md | 72 ++++++++++++------- .../file/session/FileSessionManager.java | 1 + 3 files changed, 96 insertions(+), 48 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 0f205ccb2e2..f5a3a4dd2ef 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -15,47 +15,70 @@ Seata is an easy-to-use, high-performance, open source distributed transaction s The version is updated as follows: ### feature: - - [[#5165](https://github.com/seata/seata/pull/5165)] optimize TCC structure, supporting API access. add integration layer module(seata-integration-tx-api) for transaction process definition and proxy enhancement. +- [[#5165](https://github.com/seata/seata/pull/5165)] optimize TCC structure, supporting API access. add integration layer module(seata-integration-tx-api) for transaction process definition and proxy enhancement. ### bugfix: - - [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock - - [[#5282](https://github.com/seata/seata/pull/5282)] parallel request handle throw IndexOutOfBoundsException - - [[#5294](https://github.com/seata/seata/pull/5294)] fix auto-increment of pk columns in PostgreSQL/Oracle in AT mode - - [[#5297](https://github.com/seata/seata/pull/5297)] Correct the comment on MySQLUndoUpdateExecutor#UPDATE_SQL_TEMPLATE - - [[#5293](https://github.com/seata/seata/pull/5293)] Do not remove GlobalSession when retry rollback or retry commit timeout +- [[#5194](https://github.com/seata/seata/pull/5194)] fix wrong keyword order for oracle when creating a table +- [[#5021](https://github.com/seata/seata/pull/5201)] fix JDK Reflection for Spring origin proxy failed in JDK17 +- [[#5023](https://github.com/seata/seata/pull/5203)] fix `seata-core` dependency transitive conflict in + `seata-dubbo` +- [[#5224](https://github.com/seata/seata/pull/5224)] fix oracle initialize script index_name is duplicate +- [[#5233](https://github.com/seata/seata/pull/5233)] fix the inconsistent configuration item names related to LoadBalance +- [[#5245](https://github.com/seata/seata/pull/5245)] fix the incomplete dependency of distribution module +- [[#5239](https://github.com/seata/seata/pull/5239)] fix `getConfig` throw `ClassCastException` when use JDK proxy +- [[#5266](https://github.com/seata/seata/pull/5265)] fix server console has queried the released lock +- [[#5282](https://github.com/seata/seata/pull/5282)] parallel request handle throw IndexOutOfBoundsException +- [[#5294](https://github.com/seata/seata/pull/5294)] fix auto-increment of pk columns in PostgreSQL/Oracle in AT mode +- [[#5298](https://github.com/seata/seata/pull/5298)] don't remove GlobalSession when retry rollback or retry commit timeout +- [[#5304](https://github.com/seata/seata/pull/5304)] remove RollbackRetryTimeout sessions during in file storage recover ### optimize: - - [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager - - [[#4881](https://github.com/seata/seata/pull/4881)] reorganize the usage of Sessionmanager and listener - - [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. - - [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern - - [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration - - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when RM's commit return an exception and returns false +- [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more +- [[#5212](https://github.com/seata/seata/pull/5212)] optimize log message level +- [[#5237](https://github.com/seata/seata/pull/5237)] optimize exception log message print(EnhancedServiceLoader.loadFile#cahtch) +- [[#5243](https://github.com/seata/seata/pull/5243)] optimize kryo 5.4.0 optimize compatibility with jdk17 +- [[#5153](https://github.com/seata/seata/pull/5153)] Only AT mode try to get channel with other app +- [[#5177](https://github.com/seata/seata/pull/5177)] If `server.session.enable-branch-async-remove` is true, delete the branch asynchronously and unlock it synchronously. +- [[#4858](https://github.com/seata/seata/pull/4858)] reorganize the usage of task session manager +- [[#4881](https://github.com/seata/seata/pull/4881)] reorganize the usage of Sessionmanager and listener +- [[#5273](https://github.com/seata/seata/pull/5273)] Optimize the compilation configuration of the `protobuf-maven-plugin` plug-in to solve the problem of too long command lines in higher versions. +- [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern +- [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration +- [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when commit/rollback catch an exception ### test: - - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] +- [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] ### Contributors: Thanks to these contributors for their code commits. Please report an unintended omission. - - [slievrly](https://github.com/slievrly) - - [Bughue](https://github.com/Bughue) - - [GoodBoyCoder](https://github.com/GoodBoyCoder) - - [a364176773](https://github.com/a364176773) - - [isharpever](https://github.com/isharpever) - - [mxsm](https://github.com/mxsm) - - [liuqiufeng](https://github.com/liuqiufeng) +- [slievrly](https://github.com/slievrly) +- [xssdpgy](https://github.com/xssdpgy) +- [albumenj](https://github.com/albumenj) +- [PeppaO](https://github.com/PeppaO) +- [yuruixin](https://github.com/yuruixin) +- [CrazyLionLi](https://github.com/JavaLionLi) +- [xingfudeshi](https://github.com/xingfudeshi) +- [Bughue](https://github.com/Bughue) +- [pengten](https://github.com/pengten) +- [wangliang181230](https://github.com/wangliang181230) +- [GoodBoyCoder](https://github.com/GoodBoyCoder) +- [a364176773](https://github.com/a364176773) +- [isharpever](https://github.com/isharpever) +- [mxsm](https://github.com/mxsm) +- [liuqiufeng](https://github.com/liuqiufeng) + Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. #### Link - - **Seata:** https://github.com/seata/seata - - **Seata-Samples:** https://github.com/seata/seata-samples - - **Release:** https://github.com/seata/seata/releases - - **WebSite:** https://seata.io +- **Seata:** https://github.com/seata/seata +- **Seata-Samples:** https://github.com/seata/seata-samples +- **Release:** https://github.com/seata/seata/releases +- **WebSite:** https://seata.io diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 8ddb8460b12..eac4e61cf81 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -15,47 +15,71 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 此版本更新如下: ### feature: - - [[#5165](https://github.com/seata/seata/pull/5165)] TCC结构拆分,支持API方式接入。增加集成层模块(seata-integration-tx-api),对事务流程定义以及代理部分增强。 +- [[#5165](https://github.com/seata/seata/pull/5165)] TCC结构拆分,支持API方式接入。增加集成层模块(seata-integration-tx-api),对事务流程定义以及代理部分增强。 ### bugfix: - - [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 - - [[#5282](https://github.com/seata/seata/pull/5282)] 修复并行rm请求处理时数组索引越界问题 - - [[#5294](https://github.com/seata/seata/pull/5294)] 修复AT模式下pgsql/oracle的主键列自增的问题 - - [[#5297](https://github.com/seata/seata/pull/5297)] 纠正 MySQLUndoUpdateExecutor#UPDATE_SQL_TEMPLATE 的注释 - - [[#5293](https://github.com/seata/seata/pull/5293)] 协调器的定时任务中处理全局事务的重试回滚 或 重试提交,即使超时也不再删除事务 +- [[#5194](https://github.com/seata/seata/pull/5194)] 修复使用Oracle作为服务端DB存储时的建表失败问题 +- [[#5021](https://github.com/seata/seata/pull/5201)] 修复 JDK17 下获取 Spring 原始代理对象失败的问题 +- [[#5023](https://github.com/seata/seata/pull/5203)] 修复 `seata-core` 模块传递依赖冲突 +- [[#5224](https://github.com/seata/seata/pull/5224)] 修复 oracle初始化脚本索引名重复的问题 +- [[#5233](https://github.com/seata/seata/pull/5233)] 修复LoadBalance相关配置不一致的问题 +- [[#5245](https://github.com/seata/seata/pull/5245)] 修复不完整的distribution模块依赖 +- [[#5239](https://github.com/seata/seata/pull/5239)] 修复当使用JDK代理时,`getConfig` 方法获取部分配置时抛出 `ClassCastException` 异常的问题 +- [[#5266](https://github.com/seata/seata/pull/5265)] 修复控制台全局锁查询接口查到了已释放的锁 +- [[#5282](https://github.com/seata/seata/pull/5282)] 修复并行rm请求处理时数组索引越界问题 +- [[#5294](https://github.com/seata/seata/pull/5294)] 修复AT模式下pgsql/oracle的主键列自增的问题 +- [[#5298](https://github.com/seata/seata/pull/5298)] 事务提交或回滚超时不移除global session +- [[#5304](https://github.com/seata/seata/pull/5304)] 移除基于文件存储恢复时的RollbackRetryTimeout事务 ### optimize: - - [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 - - [[#4881](https://github.com/seata/seata/pull/4881)] 重新划分 SessionManager和SessionLifecycleListener 用法 - - [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 - - [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 - - [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 - - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出,避免误解 +- [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 +- [[#5212](https://github.com/seata/seata/pull/5212)] 优化不合理的日志信息级别 +- [[#5237](https://github.com/seata/seata/pull/5237)] 优化异常日志打印(EnhancedServiceLoader.loadFile#cahtch) +- [[#5243](https://github.com/seata/seata/pull/5243)] 升级 kryo 5.4.0 优化对jdk17的兼容性 +- [[#5153](https://github.com/seata/seata/pull/5153)] 只允许AT去尝试跨RM获取channel +- [[#5177](https://github.com/seata/seata/pull/5177)] 如果 `server.session.enable-branch-async-remove` 为真,异步删除分支,同步解锁。 +- [[#4858](https://github.com/seata/seata/pull/4858)] 重构优化 SessionManager 用法 +- [[#4881](https://github.com/seata/seata/pull/4881)] 重新划分 SessionManager和SessionLifecycleListener 用法 +- [[#5273](https://github.com/seata/seata/pull/5273)] 优化`protobuf-maven-plugin`插件的编译配置,解决高版本的命令行过长问题 +- [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 +- [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 +- [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出 + +### security: +- [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 ### test: - - [[#5308](https://github.com/seata/seata/pull/5308)] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils] +- [[#5308](https://github.com/seata/seata/pull/5308)] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils] ### Contributors: 非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。 - - [slievrly](https://github.com/slievrly) - - [Bughue](https://github.com/Bughue) - - [GoodBoyCoder](https://github.com/GoodBoyCoder) - - [a364176773](https://github.com/a364176773) - - [isharpever](https://github.com/isharpever) - - [mxsm](https://github.com/mxsm) - - [liuqiufeng](https://github.com/liuqiufeng) +- [slievrly](https://github.com/slievrly) +- [xssdpgy](https://github.com/xssdpgy) +- [albumenj](https://github.com/albumenj) +- [PeppaO](https://github.com/PeppaO) +- [yuruixin](https://github.com/yuruixin) +- [CrazyLionLi](https://github.com/JavaLionLi) +- [xingfudeshi](https://github.com/xingfudeshi) +- [Bughue](https://github.com/Bughue) +- [pengten](https://github.com/pengten) +- [wangliang181230](https://github.com/wangliang181230) +- [GoodBoyCoder](https://github.com/GoodBoyCoder) +- [a364176773](https://github.com/a364176773) +- [isharpever](https://github.com/isharpever) +- [mxsm](https://github.com/mxsm) +- [liuqiufeng](https://github.com/liuqiufeng) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 #### Link - - **Seata:** https://github.com/seata/seata - - **Seata-Samples:** https://github.com/seata/seata-samples - - **Release:** https://github.com/seata/seata/releases - - **WebSite:** https://seata.io +- **Seata:** https://github.com/seata/seata +- **Seata-Samples:** https://github.com/seata/seata-samples +- **Release:** https://github.com/seata/seata/releases +- **WebSite:** https://seata.io diff --git a/server/src/main/java/io/seata/server/storage/file/session/FileSessionManager.java b/server/src/main/java/io/seata/server/storage/file/session/FileSessionManager.java index 5072cbb4512..7a95f70bd77 100644 --- a/server/src/main/java/io/seata/server/storage/file/session/FileSessionManager.java +++ b/server/src/main/java/io/seata/server/storage/file/session/FileSessionManager.java @@ -232,6 +232,7 @@ private boolean checkSessionStatus(GlobalSession globalSession) { case RollbackFailed: case TimeoutRollbacked: case TimeoutRollbackFailed: + case RollbackRetryTimeout: case Finished: return false; default: From 207dda4ac76c2cb69e0709a2ff5040261d50968b Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Tue, 7 Feb 2023 14:05:36 +0800 Subject: [PATCH 026/182] bugfix: that keywords don't add escaped characters (#5310) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../rm/datasource/exec/UpdateExecutor.java | 30 +++++++++---------- .../exec/mysql/MySQLUpdateJoinExecutor.java | 10 ++----- .../datasource/exec/UpdateExecutorTest.java | 16 ++++++++-- 5 files changed, 32 insertions(+), 26 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index f5a3a4dd2ef..d865aac690c 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -31,6 +31,7 @@ The version is updated as follows: - [[#5294](https://github.com/seata/seata/pull/5294)] fix auto-increment of pk columns in PostgreSQL/Oracle in AT mode - [[#5298](https://github.com/seata/seata/pull/5298)] don't remove GlobalSession when retry rollback or retry commit timeout - [[#5304](https://github.com/seata/seata/pull/5304)] remove RollbackRetryTimeout sessions during in file storage recover +- [[#5310](https://github.com/seata/seata/pull/5310)] fix that keywords don't add escaped characters ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index eac4e61cf81..379c3f16ec8 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -30,6 +30,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5294](https://github.com/seata/seata/pull/5294)] 修复AT模式下pgsql/oracle的主键列自增的问题 - [[#5298](https://github.com/seata/seata/pull/5298)] 事务提交或回滚超时不移除global session - [[#5304](https://github.com/seata/seata/pull/5304)] 移除基于文件存储恢复时的RollbackRetryTimeout事务 +- [[#5310](https://github.com/seata/seata/pull/5310)] 修复生成update前后镜像sql不对关键字转义的bug ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/UpdateExecutor.java b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/UpdateExecutor.java index 491ea23017b..2fc3a9d2b1f 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/UpdateExecutor.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/UpdateExecutor.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.StringJoiner; +import java.util.stream.Collectors; import io.seata.common.util.IOUtil; import io.seata.common.util.StringUtils; @@ -91,9 +92,7 @@ private String buildBeforeImageSQL(TableMeta tableMeta, ArrayList> suffix.append(" FOR UPDATE"); StringJoiner selectSQLJoin = new StringJoiner(", ", prefix.toString(), suffix.toString()); List needUpdateColumns = getNeedUpdateColumns(tableMeta.getTableName(), sqlRecognizer.getTableAlias(), recognizer.getUpdateColumnsIsSimplified()); - for (String needUpdateColumn : needUpdateColumns) { - selectSQLJoin.add(needUpdateColumn); - } + needUpdateColumns.forEach(selectSQLJoin::add); return selectSQLJoin.toString(); } @@ -121,34 +120,33 @@ private String buildAfterImageSQL(TableMeta tableMeta, TableRecords beforeImage) StringJoiner selectSQLJoiner = new StringJoiner(", ", prefix.toString(), suffix); SQLUpdateRecognizer recognizer = (SQLUpdateRecognizer) sqlRecognizer; List needUpdateColumns = getNeedUpdateColumns(tableMeta.getTableName(), sqlRecognizer.getTableAlias(), recognizer.getUpdateColumnsIsSimplified()); - for (String needUpdateColumn : needUpdateColumns) { - selectSQLJoiner.add(needUpdateColumn); - } + needUpdateColumns.forEach(selectSQLJoiner::add); return selectSQLJoiner.toString(); } - protected List getNeedUpdateColumns(String table, String tableAlias, List originUpdateColumns) { + protected List getNeedUpdateColumns(String table, String tableAlias, List unescapeUpdateColumns) { List needUpdateColumns = new ArrayList<>(); TableMeta tableMeta = getTableMeta(table); if (ONLY_CARE_UPDATE_COLUMNS) { - if (!containsPK(table, originUpdateColumns)) { + if (!containsPK(table, unescapeUpdateColumns)) { List pkNameList = tableMeta.getEscapePkNameList(getDbType()); if (CollectionUtils.isNotEmpty(pkNameList)) { needUpdateColumns.add(getColumnNamesWithTablePrefix(table,tableAlias,pkNameList)); } } - needUpdateColumns.addAll(originUpdateColumns); + needUpdateColumns.addAll(unescapeUpdateColumns.parallelStream() + .map(unescapeUpdateColumn -> ColumnUtils.addEscape(unescapeUpdateColumn, getDbType())) + .collect(Collectors.toList())); // The on update xxx columns will be auto update by db, so it's also the actually updated columns List onUpdateColumns = tableMeta.getOnUpdateColumnsOnlyName(); - onUpdateColumns.removeAll(originUpdateColumns); - for (String onUpdateColumn : onUpdateColumns) { - needUpdateColumns.add(ColumnUtils.addEscape(onUpdateColumn, getDbType())); - } + onUpdateColumns.removeAll(unescapeUpdateColumns); + needUpdateColumns.addAll(onUpdateColumns.parallelStream() + .map(onUpdateColumn -> ColumnUtils.addEscape(onUpdateColumn, getDbType())) + .collect(Collectors.toList())); } else { - for (String columnName : tableMeta.getAllColumns().keySet()) { - needUpdateColumns.add(ColumnUtils.addEscape(columnName, getDbType())); - } + needUpdateColumns.addAll(tableMeta.getAllColumns().keySet().parallelStream() + .map(columnName -> ColumnUtils.addEscape(columnName, getDbType())).collect(Collectors.toList())); } return needUpdateColumns; } diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/mysql/MySQLUpdateJoinExecutor.java b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/mysql/MySQLUpdateJoinExecutor.java index 19ba2443548..8077e51078e 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/exec/mysql/MySQLUpdateJoinExecutor.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/exec/mysql/MySQLUpdateJoinExecutor.java @@ -134,9 +134,7 @@ private String buildBeforeImageSQL(String joinTable, String itemTable,String suf suffix.append(buildGroupBy(pkColumnNames,needUpdateColumns)); suffix.append(" FOR UPDATE"); StringJoiner selectSQLJoin = new StringJoiner(", ", prefix.toString(), suffix.toString()); - for (String needUpdateColumn : needUpdateColumns) { - selectSQLJoin.add(needUpdateColumn); - } + needUpdateColumns.forEach(selectSQLJoin::add); return selectSQLJoin.toString(); } @@ -203,11 +201,9 @@ private String buildAfterImageSQL(String joinTable, String itemTable, suffix += GROUP_BY; List itemTableUpdateColumns = getItemUpdateColumns(itemTableMeta, recognizer.getUpdateColumns()); List needUpdateColumns = getNeedUpdateColumns(itemTable, recognizer.getTableAlias(itemTable), itemTableUpdateColumns); - suffix += buildGroupBy(pkColumns,needUpdateColumns); + suffix += buildGroupBy(pkColumns, needUpdateColumns); StringJoiner selectSQLJoiner = new StringJoiner(", ", prefix.toString(), suffix); - for (String needUpdateColumn : needUpdateColumns) { - selectSQLJoiner.add(needUpdateColumn); - } + needUpdateColumns.forEach(selectSQLJoiner::add); return selectSQLJoiner.toString(); } diff --git a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/UpdateExecutorTest.java b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/UpdateExecutorTest.java index 33271227073..07d353effe4 100644 --- a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/UpdateExecutorTest.java +++ b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/UpdateExecutorTest.java @@ -49,14 +49,15 @@ public class UpdateExecutorTest { @BeforeAll public static void init() { - List returnValueColumnLabels = Lists.newArrayList("id", "name"); + List returnValueColumnLabels = Lists.newArrayList("id", "name", "all"); Object[][] returnValue = new Object[][] { - new Object[] {1, "Tom"}, - new Object[] {2, "Jack"}, + new Object[] {1, "Tom", "keyword"}, + new Object[] {2, "Jack", "keyword"}, }; Object[][] columnMetas = new Object[][] { new Object[] {"", "", "table_update_executor_test", "id", Types.INTEGER, "INTEGER", 64, 0, 10, 1, "", "", 0, 0, 64, 1, "NO", "YES"}, new Object[] {"", "", "table_update_executor_test", "name", Types.VARCHAR, "VARCHAR", 64, 0, 10, 0, "", "", 0, 0, 64, 2, "YES", "NO"}, + new Object[] {"", "", "table_update_executor_test", "all", Types.VARCHAR, "VARCHAR", 64, 0, 10, 0, "", "", 0, 0, 64, 2, "YES", "NO"}, }; Object[][] indexMetas = new Object[][] { new Object[] {"PRIMARY", "id", false, "", 3, 1, "A", 34}, @@ -97,6 +98,15 @@ public void testBeforeImage() throws SQLException { Assertions.assertNotNull(updateExecutor.beforeImage()); } + @Test + public void testKeyword() throws SQLException { + String sql = "update table_update_executor_test set `all` = '1234' where id = 1"; + List asts = SQLUtils.parseStatements(sql, JdbcConstants.MYSQL); + MySQLUpdateRecognizer recognizer = new MySQLUpdateRecognizer(sql, asts.get(0)); + updateExecutor = new UpdateExecutor(statementProxy, (statement, args) -> null, recognizer); + Assertions.assertNotNull(updateExecutor.beforeImage()); + } + @Test public void testAfterImage() throws SQLException { TableRecords beforeImage = updateExecutor.beforeImage(); From 5aa0e81ec6417378626bf5f330783ab3fbc913d1 Mon Sep 17 00:00:00 2001 From: jimin Date: Thu, 9 Feb 2023 09:57:14 +0800 Subject: [PATCH 027/182] bugfix: fix G1 jvm parameter in jdk8 (#5318) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + distribution/bin/seata-server.sh | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index d865aac690c..0b58cbc2c68 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -32,6 +32,7 @@ The version is updated as follows: - [[#5298](https://github.com/seata/seata/pull/5298)] don't remove GlobalSession when retry rollback or retry commit timeout - [[#5304](https://github.com/seata/seata/pull/5304)] remove RollbackRetryTimeout sessions during in file storage recover - [[#5310](https://github.com/seata/seata/pull/5310)] fix that keywords don't add escaped characters +- [[#5318](https://github.com/seata/seata/pull/5318)] fix G1 jvm parameter in jdk8 ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 379c3f16ec8..2e519ae24c3 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -31,6 +31,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5298](https://github.com/seata/seata/pull/5298)] 事务提交或回滚超时不移除global session - [[#5304](https://github.com/seata/seata/pull/5304)] 移除基于文件存储恢复时的RollbackRetryTimeout事务 - [[#5310](https://github.com/seata/seata/pull/5310)] 修复生成update前后镜像sql不对关键字转义的bug +- [[#5318](https://github.com/seata/seata/pull/5318)] 修复jdk8 中 G1 参数 ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 diff --git a/distribution/bin/seata-server.sh b/distribution/bin/seata-server.sh index 2ed77251532..512851e5372 100644 --- a/distribution/bin/seata-server.sh +++ b/distribution/bin/seata-server.sh @@ -138,7 +138,7 @@ if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] ; then elif [[ "$JAVA_MAJOR_VERSION" -ge "17" ]] ; then JAVA_OPT="${JAVA_OPT} -Xlog:gc=trace:file=${BASEDIR}/logs/seata_gc.log:time,tags:filecount=10,filesize=10M" else - JAVA_OPT="${JAVA_OPT} -Xloggc:${BASEDIR}/logs/seata_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+UseG1GC" + JAVA_OPT="${JAVA_OPT} -Xloggc:${BASEDIR}/logs/seata_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC" fi JAVA_OPT="${JAVA_OPT} -Dio.netty.leakDetectionLevel=advanced" From 08f96f53b71d7dc754ecaaec0d15975a7ee01148 Mon Sep 17 00:00:00 2001 From: liuqiufeng <775038282@qq.com> Date: Thu, 9 Feb 2023 11:13:30 +0800 Subject: [PATCH 028/182] test: add unit test[ArrayUtils,ConfigTools,MapUtil] (#5309) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../io/seata/common/util/ArrayUtilsTest.java | 57 +++++++++++++++++ .../io/seata/common/util/ConfigToolsTest.java | 16 ++++- .../io/seata/common/util/MapUtilTest.java | 64 +++++++++++++++++++ 5 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 common/src/test/java/io/seata/common/util/ArrayUtilsTest.java create mode 100644 common/src/test/java/io/seata/common/util/MapUtilTest.java diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 0b58cbc2c68..d520bdcccfd 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -50,6 +50,7 @@ The version is updated as follows: ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] +- [[#5309](https://github.com/seata/seata/pull/5309)] add unit test [ArrayUtils, ConfigTools, MapUtil] ### Contributors: diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 2e519ae24c3..f6b91ab431d 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -52,6 +52,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils] +- [[#5309](https://github.com/seata/seata/pull/5309)] 添加单元测试用例 [ArrayUtils, ConfigTools, MapUtil] ### Contributors: diff --git a/common/src/test/java/io/seata/common/util/ArrayUtilsTest.java b/common/src/test/java/io/seata/common/util/ArrayUtilsTest.java new file mode 100644 index 00000000000..aedb11e6597 --- /dev/null +++ b/common/src/test/java/io/seata/common/util/ArrayUtilsTest.java @@ -0,0 +1,57 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.util; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +/** + * @author liuqiufeng + */ +public class ArrayUtilsTest { + + @Test + public void testToArray() { + Assertions.assertNull(ArrayUtils.toArray(null)); + + Object obj = new String[]{"1", "2", "3"}; + Object[] array = ArrayUtils.toArray(obj); + Assertions.assertArrayEquals(new String[]{"1", "2", "3"}, array); + } + + @Test + public void testToArrayException() { + Assertions.assertThrows(ClassCastException.class, () -> { + Object[] array = ArrayUtils.toArray(new Object()); + }); + } + + @Test + public void testToString() { + Assertions.assertEquals("null", ArrayUtils.toString((Object[]) null)); + Assertions.assertEquals("[]", ArrayUtils.toString(new Object[]{})); + Assertions.assertEquals("[\"1\", \"2\", \"3\"]", ArrayUtils.toString(new String[]{"1", "2", "3"})); + + Assertions.assertEquals("null", ArrayUtils.toString((Object) null)); + Assertions.assertEquals("[]", ArrayUtils.toString((Object) new Object[]{})); + Assertions.assertEquals("123", ArrayUtils.toString(123)); + Assertions.assertEquals("[1, 2, 3]", ArrayUtils.toString((Object) new int[]{1, 2, 3})); + Assertions.assertEquals("[\"1\", \"2\", \"3\"]", ArrayUtils.toString((Object) new String[]{"1", "2", "3"})); + } +} diff --git a/common/src/test/java/io/seata/common/util/ConfigToolsTest.java b/common/src/test/java/io/seata/common/util/ConfigToolsTest.java index bbda4e02676..bb8a7ca393d 100644 --- a/common/src/test/java/io/seata/common/util/ConfigToolsTest.java +++ b/common/src/test/java/io/seata/common/util/ConfigToolsTest.java @@ -38,5 +38,19 @@ public void test() throws Exception { String pw = ConfigTools.publicDecrypt(byte2Base64, publicKeyStr); Assertions.assertEquals(pw, password); } - + + @Test + public void testPublicEncryptAndPrivateDecrypt() throws Exception { + KeyPair keyPair = ConfigTools.getKeyPair(); + String publicKeyStr = ConfigTools.getPublicKey(keyPair); + String privateKeyStr = ConfigTools.getPrivateKey(keyPair); + System.out.println("publicKeyStr:" + publicKeyStr); + System.out.println("privateKeyStr:" + privateKeyStr); + String password = "123456"; + String byte2Base64 = ConfigTools.publicEncrypt(password, publicKeyStr); + System.out.println("byte2Base64:" + byte2Base64); + String pw = ConfigTools.privateDecrypt(byte2Base64, privateKeyStr); + Assertions.assertEquals(pw, password); + } + } diff --git a/common/src/test/java/io/seata/common/util/MapUtilTest.java b/common/src/test/java/io/seata/common/util/MapUtilTest.java new file mode 100644 index 00000000000..9c47f12c62d --- /dev/null +++ b/common/src/test/java/io/seata/common/util/MapUtilTest.java @@ -0,0 +1,64 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.util; + +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author liuqiufeng + */ +public class MapUtilTest { + + @Test + public void testAsMap() { + Map map = MapUtil.asMap("abc"); + Assertions.assertEquals(Collections.singletonMap("document", "abc"), map); + + Map source = new HashMap<>(); + source.put("map", Collections.singletonMap("key", "abc")); + source.put("list", Collections.singletonList(123)); + source.put(123, 123); + + Map result = new LinkedHashMap<>(); + result.put("list", Collections.singletonList(123)); + result.put("map", Collections.singletonMap("key", "abc")); + result.put("[123]", 123); + + map = MapUtil.asMap((Object) source); + Assertions.assertEquals(result, map); + } + + @Test + public void testGetFlattenedMap() { + Map source = new HashMap<>(); + source.put("map", Collections.singletonMap("key", "abc")); + source.put("list", Collections.singletonList(123)); + + Map result = new LinkedHashMap<>(); + result.put("list[0]", 123); + result.put("map.key", "abc"); + + Map map = MapUtil.getFlattenedMap(source); + Assertions.assertEquals(result, map); + } +} From 1944640c40f9c5b6f13b8d0388e17d104ddf8369 Mon Sep 17 00:00:00 2001 From: will <349071347@qq.com> Date: Thu, 9 Feb 2023 16:19:06 +0800 Subject: [PATCH 029/182] optimize: optimize EnhancedServiceLoader log (#5322) --- changes/en-us/2.0.0.md | 2 ++ changes/zh-cn/2.0.0.md | 2 ++ .../common/loader/EnhancedServiceLoader.java | 15 +++++++-------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index d520bdcccfd..6e3f4d07b5f 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -47,6 +47,7 @@ The version is updated as follows: - [[#5278](https://github.com/seata/seata/pull/5278)] clean multi-sessionmanager-instance pattern - [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when commit/rollback catch an exception +- [[#5322](https://github.com/seata/seata/pull/5322)] optimize the log of SPI ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] @@ -72,6 +73,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [isharpever](https://github.com/isharpever) - [mxsm](https://github.com/mxsm) - [liuqiufeng](https://github.com/liuqiufeng) +- [l81893521](https://github.com/l81893521) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index f6b91ab431d..c85a704c0af 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -46,6 +46,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5278](https://github.com/seata/seata/pull/5278)] 清理sessionmanager多例模式遗留代码 - [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出 +- [[#5322](https://github.com/seata/seata/pull/5322)] 优化SPI加载日志 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 @@ -74,6 +75,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [isharpever](https://github.com/isharpever) - [mxsm](https://github.com/mxsm) - [liuqiufeng](https://github.com/liuqiufeng) +- [l81893521](https://github.com/l81893521) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java index 3b6942c8a40..dc56d50f76c 100644 --- a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java +++ b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java @@ -32,6 +32,7 @@ import io.seata.common.Constants; import io.seata.common.executor.Initialize; import io.seata.common.util.CollectionUtils; +import io.seata.common.util.StringUtils; import org.apache.commons.lang.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -283,7 +284,6 @@ private static InnerEnhancedServiceLoader removeServiceLoader(Class ty } private static void removeAllServiceLoader() { - SERVICE_LOADERS.clear(); } @@ -391,8 +391,7 @@ private List> getAllExtensionClass(ClassLoader loader) { return loadAllExtensionClass(loader); } - private S loadExtension(ClassLoader loader, Class[] argTypes, - Object[] args) { + private S loadExtension(ClassLoader loader, Class[] argTypes, Object[] args) { try { loadAllExtensionClass(loader); ExtensionDefinition defaultExtensionDefinition = getDefaultExtensionDefinition(); @@ -409,7 +408,7 @@ private S loadExtension(ClassLoader loader, Class[] argTypes, @SuppressWarnings("rawtypes") private S loadExtension(String activateName, ClassLoader loader, Class[] argTypes, Object[] args) { - if (io.seata.common.util.StringUtils.isEmpty(activateName)) { + if (StringUtils.isEmpty(activateName)) { throw new IllegalArgumentException("the name of service provider for [" + type.getName() + "] name is null"); } try { @@ -496,9 +495,9 @@ private List> findAllExtensionDefinition(ClassLoader load } if (!extensionDefinitions.isEmpty()) { - extensionDefinitions.sort((definition1, definition2) -> { - int o1 = definition1.getOrder(); - int o2 = definition2.getOrder(); + extensionDefinitions.sort((def1, def2) -> { + int o1 = def1.getOrder(); + int o2 = def2.getOrder(); return Integer.compare(o1, o2); }); } @@ -542,7 +541,7 @@ private void loadFile(String dir, ClassLoader loader, List Date: Thu, 9 Feb 2023 18:15:38 +0800 Subject: [PATCH 030/182] optimize: add time info in global transaction timeout log for 2.x branch (#5326) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../java/io/seata/server/coordinator/DefaultCoordinator.java | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 6e3f4d07b5f..fd57680ebb7 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -48,6 +48,7 @@ The version is updated as follows: - [[#5302](https://github.com/seata/seata/pull/5302)] remove startup script the -Xmn configuration - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when commit/rollback catch an exception - [[#5322](https://github.com/seata/seata/pull/5322)] optimize the log of SPI +- [[#5323](https://github.com/seata/seata/pull/5323)] add time info for global transaction timeout log ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index c85a704c0af..06c41fc8bf6 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -47,6 +47,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5302](https://github.com/seata/seata/pull/5302)] 移除启动脚本的-Xmn参数 - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出 - [[#5322](https://github.com/seata/seata/pull/5322)] 优化SPI加载日志 +- [[#5323](https://github.com/seata/seata/pull/5323)] 为全局事务超时日志添加时间信息 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index 9287fc915b2..a76af52400d 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -337,7 +337,7 @@ protected void timeoutCheck() { return false; } - LOGGER.info("Global transaction[{}] is timeout and will be rollback.", globalSession.getXid()); + LOGGER.warn("Global transaction[{}] is timeout and will be rollback,transaction begin time:{} and now:{}", globalSession.getXid(), globalSession.getBeginTime(), System.currentTimeMillis()); globalSession.close(); globalSession.changeGlobalStatus(GlobalStatus.TimeoutRollbacking); From 3097fd6996e26e05edb3a65392894ea41f166586 Mon Sep 17 00:00:00 2001 From: liuqiufeng <775038282@qq.com> Date: Fri, 10 Feb 2023 16:34:58 +0800 Subject: [PATCH 031/182] bugfix: fix some tiny bugs (#5330) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../main/java/io/seata/common/loader/ExtensionDefinition.java | 2 +- .../main/java/io/seata/common/util/LowerCaseLinkHashMap.java | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index fd57680ebb7..bcf7f8187c7 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -33,6 +33,7 @@ The version is updated as follows: - [[#5304](https://github.com/seata/seata/pull/5304)] remove RollbackRetryTimeout sessions during in file storage recover - [[#5310](https://github.com/seata/seata/pull/5310)] fix that keywords don't add escaped characters - [[#5318](https://github.com/seata/seata/pull/5318)] fix G1 jvm parameter in jdk8 +- [[#5330](https://github.com/seata/seata/pull/5330)] fix bugs found in unit tests ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 06c41fc8bf6..36e360f5c4d 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -32,6 +32,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5304](https://github.com/seata/seata/pull/5304)] 移除基于文件存储恢复时的RollbackRetryTimeout事务 - [[#5310](https://github.com/seata/seata/pull/5310)] 修复生成update前后镜像sql不对关键字转义的bug - [[#5318](https://github.com/seata/seata/pull/5318)] 修复jdk8 中 G1 参数 +- [[#5330](https://github.com/seata/seata/pull/5330)] 修复单元测试中发现的bug ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 diff --git a/common/src/main/java/io/seata/common/loader/ExtensionDefinition.java b/common/src/main/java/io/seata/common/loader/ExtensionDefinition.java index 9b47d71a0d9..ea8b4790c1a 100644 --- a/common/src/main/java/io/seata/common/loader/ExtensionDefinition.java +++ b/common/src/main/java/io/seata/common/loader/ExtensionDefinition.java @@ -82,7 +82,7 @@ public boolean equals(Object obj) { if (!order.equals(other.order)) { return false; } - return !scope.equals(other.scope); + return scope.equals(other.scope); } public String getName() { diff --git a/common/src/main/java/io/seata/common/util/LowerCaseLinkHashMap.java b/common/src/main/java/io/seata/common/util/LowerCaseLinkHashMap.java index ac9b17f2473..d95344d6d8d 100644 --- a/common/src/main/java/io/seata/common/util/LowerCaseLinkHashMap.java +++ b/common/src/main/java/io/seata/common/util/LowerCaseLinkHashMap.java @@ -68,7 +68,7 @@ public boolean containsKey(Object o) { @Override public boolean containsValue(Object o) { - return targetMap.containsKey(o); + return targetMap.containsValue(o); } @Override From 51f6a09171ab77dc19ef2e1533db00984c9fb50b Mon Sep 17 00:00:00 2001 From: conghuhu <56248584+conghuhu@users.noreply.github.com> Date: Sun, 12 Feb 2023 20:07:53 +0800 Subject: [PATCH 032/182] feature: support redis lua for transaction storage & global lock (#5333) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../io/seata/common/ConfigurationKeys.java | 5 + .../main/java/io/seata/common/Constants.java | 7 +- .../io/seata/core/lock/AbstractLocker.java | 5 + .../exec/BatchInsertExecutorTest.java | 4 +- script/config-center/config.txt | 1 + .../server/store/StoreRedisProperties.java | 15 +- .../redis/BranchSessionRedisServiceImpl.java | 3 +- .../redis/GlobalSessionRedisServiceImpl.java | 3 +- .../seata/server/storage/redis/LuaParser.java | 152 ++++++++ .../storage/redis/lock/RedisLockManager.java | 2 +- .../storage/redis/lock/RedisLocker.java | 315 ++++++---------- .../redis/lock/RedisLockerFactory.java | 48 +++ .../storage/redis/lock/RedisLuaLocker.java | 233 ++++++++++++ .../redis/session/RedisSessionManager.java | 4 +- .../RedisLuaTransactionStoreManager.java | 346 ++++++++++++++++++ .../store/RedisTransactionStoreManager.java | 161 ++++---- .../RedisTransactionStoreManagerFactory.java | 48 +++ .../main/resources/application.example.yml | 2 + server/src/main/resources/application.yml | 4 +- .../lua/redisStore/deleteTransactionDO.lua | 56 +++ .../lua/redisStore/insertTransactionDO.lua | 49 +++ .../rollbackGlobalTransactionDO.lua | 57 +++ .../redisStore/updateBranchTransactionDO.lua | 55 +++ .../redisStore/updateGlobalTransactionDO.lua | 109 ++++++ .../lua/redislocker/acquireRedisLock.lua | 98 +++++ .../resources/lua/redislocker/isLockable.lua | 33 ++ .../resources/lua/redislocker/redislock.lua | 52 --- .../lua/redislocker/releaseRedisLock.lua | 117 ++++++ .../lua/redislocker/updateLockStatus.lua | 82 +++++ .../lock/redis/RedisLockManagerTest.java | 90 ++++- .../lock/redis/RedisLuaLockManagerTest.java | 65 ++++ .../server/session/redis/MockRedisServer.java | 8 +- .../redis/RedisDistributedLockerTest.java | 16 +- .../RedisLuaTransactionStoreManagerTest.java | 54 +++ .../redis/RedisSessionManagerTest.java | 60 +-- .../RedisTransactionStoreManagerTest.java | 151 ++++---- .../lua/redisStore/deleteTransactionDO.lua | 48 +++ .../lua/redisStore/insertTransactionDO.lua | 44 +++ .../rollbackGlobalTransactionDO.lua | 57 +++ .../redisStore/updateBranchTransactionDO.lua | 55 +++ .../redisStore/updateGlobalTransactionDO.lua | 106 ++++++ .../lua/redislocker/acquireRedisLock.lua | 98 +++++ .../resources/lua/redislocker/isLockable.lua | 33 ++ .../lua/redislocker/releaseRedisLock.lua | 117 ++++++ .../lua/redislocker/updateLockStatus.lua | 82 +++++ .../saga/engine/db/StateMachineDBTests.java | 2 +- 48 files changed, 2682 insertions(+), 472 deletions(-) create mode 100644 server/src/main/java/io/seata/server/storage/redis/LuaParser.java create mode 100644 server/src/main/java/io/seata/server/storage/redis/lock/RedisLockerFactory.java create mode 100644 server/src/main/java/io/seata/server/storage/redis/lock/RedisLuaLocker.java create mode 100644 server/src/main/java/io/seata/server/storage/redis/store/RedisLuaTransactionStoreManager.java create mode 100644 server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManagerFactory.java create mode 100644 server/src/main/resources/lua/redisStore/deleteTransactionDO.lua create mode 100644 server/src/main/resources/lua/redisStore/insertTransactionDO.lua create mode 100644 server/src/main/resources/lua/redisStore/rollbackGlobalTransactionDO.lua create mode 100644 server/src/main/resources/lua/redisStore/updateBranchTransactionDO.lua create mode 100644 server/src/main/resources/lua/redisStore/updateGlobalTransactionDO.lua create mode 100644 server/src/main/resources/lua/redislocker/acquireRedisLock.lua create mode 100644 server/src/main/resources/lua/redislocker/isLockable.lua delete mode 100644 server/src/main/resources/lua/redislocker/redislock.lua create mode 100644 server/src/main/resources/lua/redislocker/releaseRedisLock.lua create mode 100644 server/src/main/resources/lua/redislocker/updateLockStatus.lua create mode 100644 server/src/test/java/io/seata/server/lock/redis/RedisLuaLockManagerTest.java create mode 100644 server/src/test/java/io/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java create mode 100644 server/src/test/resources/lua/redisStore/deleteTransactionDO.lua create mode 100644 server/src/test/resources/lua/redisStore/insertTransactionDO.lua create mode 100644 server/src/test/resources/lua/redisStore/rollbackGlobalTransactionDO.lua create mode 100644 server/src/test/resources/lua/redisStore/updateBranchTransactionDO.lua create mode 100644 server/src/test/resources/lua/redisStore/updateGlobalTransactionDO.lua create mode 100644 server/src/test/resources/lua/redislocker/acquireRedisLock.lua create mode 100644 server/src/test/resources/lua/redislocker/isLockable.lua create mode 100644 server/src/test/resources/lua/redislocker/releaseRedisLock.lua create mode 100644 server/src/test/resources/lua/redislocker/updateLockStatus.lua diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index bcf7f8187c7..e936fcb9992 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -50,6 +50,7 @@ The version is updated as follows: - [[#4880](https://github.com/seata/seata/pull/4880)] optimize logs when commit/rollback catch an exception - [[#5322](https://github.com/seata/seata/pull/5322)] optimize the log of SPI - [[#5323](https://github.com/seata/seata/pull/5323)] add time info for global transaction timeout log +- [[#5328](https://github.com/seata/seata/pull/5333)] add corresponding lua implementation for Redis mode of global transaction and transaction storage ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 36e360f5c4d..9ade76b951c 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -49,6 +49,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#4880](https://github.com/seata/seata/pull/4880)] 优化提交和回滚遇到异常时的日志输出 - [[#5322](https://github.com/seata/seata/pull/5322)] 优化SPI加载日志 - [[#5323](https://github.com/seata/seata/pull/5323)] 为全局事务超时日志添加时间信息 +- [[#5328](https://github.com/seata/seata/pull/5333)] 为全局事务和事务存储的Redis模式,增加对应的lua实现 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 diff --git a/common/src/main/java/io/seata/common/ConfigurationKeys.java b/common/src/main/java/io/seata/common/ConfigurationKeys.java index 0437d2b2740..ba2147d16b2 100644 --- a/common/src/main/java/io/seata/common/ConfigurationKeys.java +++ b/common/src/main/java/io/seata/common/ConfigurationKeys.java @@ -641,6 +641,11 @@ public interface ConfigurationKeys { */ String STORE_REDIS_MODE = STORE_REDIS_PREFIX + "mode"; + /** + * The constant STORE_REDIS_TYPE. lua pipeline + */ + String STORE_REDIS_TYPE = STORE_REDIS_PREFIX + "type"; + /** * The constant STORE_REDIS_HOST. */ diff --git a/common/src/main/java/io/seata/common/Constants.java b/common/src/main/java/io/seata/common/Constants.java index f5a4507dcc7..deab9c5f2cd 100644 --- a/common/src/main/java/io/seata/common/Constants.java +++ b/common/src/main/java/io/seata/common/Constants.java @@ -171,4 +171,9 @@ public interface Constants { */ String COMPENSATION_METHOD = "sys::compensation"; -} \ No newline at end of file + /** + * phase STORE_REDIS_TYPE_PIPELINE + */ + String STORE_REDIS_TYPE_PIPELINE = "pipeline"; + +} diff --git a/core/src/main/java/io/seata/core/lock/AbstractLocker.java b/core/src/main/java/io/seata/core/lock/AbstractLocker.java index a655ce51bb3..a516db67540 100644 --- a/core/src/main/java/io/seata/core/lock/AbstractLocker.java +++ b/core/src/main/java/io/seata/core/lock/AbstractLocker.java @@ -88,6 +88,11 @@ public void cleanAllLocks() { } + @Override + public boolean releaseLock(List rowLock) { + return false; + } + @Override public boolean releaseLock(String xid, Long branchId) { return false; diff --git a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/BatchInsertExecutorTest.java b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/BatchInsertExecutorTest.java index b92a0bd18ad..a014f156a2f 100644 --- a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/BatchInsertExecutorTest.java +++ b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/BatchInsertExecutorTest.java @@ -189,7 +189,7 @@ public void testGetPkValues_NotSupportYetException() { } private void mockParameters_with_null_and_insertRows_with_placeholder_null() { - Map> paramters = new HashMap<>(5); + Map> paramters = new HashMap<>(); ArrayList arrayList0 = new ArrayList<>(); arrayList0.add("userId1"); ArrayList arrayList1 = new ArrayList<>(); @@ -214,7 +214,7 @@ private void mockParameters_with_null_and_insertRows_with_placeholder_null() { } private void mockParameters_with_number_and_insertRows_with_placeholde_null() { - Map> paramters = new HashMap<>(5); + Map> paramters = new HashMap<>(); ArrayList arrayList0 = new ArrayList<>(); arrayList0.add("userId1"); ArrayList arrayList1 = new ArrayList<>(); diff --git a/script/config-center/config.txt b/script/config-center/config.txt index 8e7065e8ef7..f221d9aa906 100644 --- a/script/config-center/config.txt +++ b/script/config-center/config.txt @@ -98,6 +98,7 @@ store.db.maxWait=5000 #These configurations are required if the `store mode` is `redis`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `redis`, you can remove the configuration block. store.redis.mode=single +store.redis.type=pipeline store.redis.single.host=127.0.0.1 store.redis.single.port=6379 store.redis.sentinel.masterName= diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java index c6420d84db7..54f93887cf0 100644 --- a/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java +++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-server/src/main/java/io/seata/spring/boot/autoconfigure/properties/server/store/StoreRedisProperties.java @@ -35,8 +35,9 @@ public class StoreRedisProperties { * single, sentinel */ private String mode = "single"; - private String password; + private String type = "pipeline"; private Integer maxConn = DEFAULT_REDIS_MAX_IDLE; + private String password = null; private Integer minConn = DEFAULT_REDIS_MIN_IDLE; private Integer database = 0; private Integer queryLimit = DEFAULT_QUERY_LIMIT; @@ -51,6 +52,15 @@ public StoreRedisProperties setMode(String mode) { return this; } + public String getType() { + return type; + } + + public StoreRedisProperties setType(String type) { + this.type = type; + return this; + } + public String getPassword() { return password; } @@ -105,7 +115,6 @@ public StoreRedisProperties setMaxTotal(Integer maxTotal) { return this; } - @Component @ConfigurationProperties(prefix = STORE_REDIS_SINGLE_PREFIX) public static class Single { @@ -131,8 +140,6 @@ public Single setPort(Integer port) { } } - - @Component @ConfigurationProperties(prefix = STORE_REDIS_SENTINEL_PREFIX) public static class Sentinel { diff --git a/server/src/main/java/io/seata/server/console/impl/redis/BranchSessionRedisServiceImpl.java b/server/src/main/java/io/seata/server/console/impl/redis/BranchSessionRedisServiceImpl.java index 338ee9d7d6c..de50ec05b03 100644 --- a/server/src/main/java/io/seata/server/console/impl/redis/BranchSessionRedisServiceImpl.java +++ b/server/src/main/java/io/seata/server/console/impl/redis/BranchSessionRedisServiceImpl.java @@ -24,6 +24,7 @@ import io.seata.core.store.BranchTransactionDO; import io.seata.server.console.service.BranchSessionService; import io.seata.server.storage.redis.store.RedisTransactionStoreManager; +import io.seata.server.storage.redis.store.RedisTransactionStoreManagerFactory; import org.springframework.beans.BeanUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.stereotype.Component; @@ -47,7 +48,7 @@ public PageResult queryByXid(String xid) { List branchSessionVos = new ArrayList<>(); - RedisTransactionStoreManager instance = RedisTransactionStoreManager.getInstance(); + RedisTransactionStoreManager instance = RedisTransactionStoreManagerFactory.getInstance(); List branchSessionDos = instance.findBranchSessionByXid(xid); diff --git a/server/src/main/java/io/seata/server/console/impl/redis/GlobalSessionRedisServiceImpl.java b/server/src/main/java/io/seata/server/console/impl/redis/GlobalSessionRedisServiceImpl.java index ff8d034a13a..736470e42a6 100644 --- a/server/src/main/java/io/seata/server/console/impl/redis/GlobalSessionRedisServiceImpl.java +++ b/server/src/main/java/io/seata/server/console/impl/redis/GlobalSessionRedisServiceImpl.java @@ -27,6 +27,7 @@ import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; import io.seata.server.storage.redis.store.RedisTransactionStoreManager; +import io.seata.server.storage.redis.store.RedisTransactionStoreManagerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; @@ -60,7 +61,7 @@ public PageResult query(GlobalSessionParam param) { } List globalSessions = new ArrayList<>(); - RedisTransactionStoreManager instance = RedisTransactionStoreManager.getInstance(); + RedisTransactionStoreManager instance = RedisTransactionStoreManagerFactory.getInstance(); checkPage(param); diff --git a/server/src/main/java/io/seata/server/storage/redis/LuaParser.java b/server/src/main/java/io/seata/server/storage/redis/LuaParser.java new file mode 100644 index 00000000000..e711d8bcec0 --- /dev/null +++ b/server/src/main/java/io/seata/server/storage/redis/LuaParser.java @@ -0,0 +1,152 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.storage.redis; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Serializable; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import io.seata.common.exception.StoreException; +import io.seata.common.io.FileLoader; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.exceptions.JedisDataException; + +/** + * lua related utils + * + * @author conghuhu + */ +public class LuaParser { + + private static final String WHITE_SPACE = " "; + + private static final String ANNOTATION_LUA = "--"; + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public final static class LuaResult implements Serializable { + private static final long serialVersionUID = -4160065043902060730L; + private Boolean success; + private String status; + private String data; + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } + + @Override public String toString() { + return "LuaResult{" + + "success=" + success + + ", type='" + status + '\'' + + ", data='" + data + '\'' + + '}'; + } + } + + public final static class LuaErrorStatus { + + public static final String ANOTHER_ROLLBACKING = "AnotherRollbackIng"; + + public static final String ANOTHER_HOLDING = "AnotherHoldIng"; + + public static final String XID_NOT_EXISTED = "NotExisted"; + + public static final String ILLEGAL_CHANGE_STATUS = "ChangeStatusFail"; + } + + /** + * get lua string from lua file. + * + * @param fileName + * @return + * @throws IOException + */ + public static Map getEvalShaMapFromFile(String fileName) throws IOException { + File luaFile = FileLoader.load(fileName); + if (luaFile == null) { + throw new IOException("no lua file: " + fileName); + } + StringBuilder luaByFile = new StringBuilder(); + try (FileInputStream fis = new FileInputStream(luaFile)) { + BufferedReader br = new BufferedReader(new InputStreamReader(fis)); + String line; + while ((line = br.readLine()) != null) { + if (line.trim().startsWith(ANNOTATION_LUA)) { + continue; + } + luaByFile.append(line); + luaByFile.append(WHITE_SPACE); + } + } catch (IOException e) { + throw new IOException(e); + } + Map resultMap = new ConcurrentHashMap<>(1); + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + resultMap.put(fileName, jedis.scriptLoad(luaByFile.toString())); + return resultMap; + } catch (UnsupportedOperationException | JedisDataException e) { + throw new IOException(e); + } + } + + public static T getObjectFromJson(String json, Class classz) { + try { + return OBJECT_MAPPER.readValue(json, classz); + } catch (JsonProcessingException e) { + throw new StoreException(e.getMessage()); + } + } + + public static List getListFromJson(String json, Class classz) { + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.readValue(json, new TypeReference>() { + }); + } catch (JsonProcessingException e) { + throw new StoreException(e.getMessage()); + } + } +} diff --git a/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockManager.java b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockManager.java index 067fd50d622..c6906235da4 100644 --- a/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockManager.java +++ b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockManager.java @@ -36,7 +36,7 @@ public class RedisLockManager extends AbstractLockManager implements Initialize @Override public void init() { - locker = new RedisLocker(); + locker = RedisLockerFactory.getLocker(); } @Override diff --git a/server/src/main/java/io/seata/server/storage/redis/lock/RedisLocker.java b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLocker.java index 37341d4f090..4b610bb4603 100644 --- a/server/src/main/java/io/seata/server/storage/redis/lock/RedisLocker.java +++ b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLocker.java @@ -15,11 +15,6 @@ */ package io.seata.server.storage.redis.lock; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -29,9 +24,8 @@ import java.util.Set; import java.util.StringJoiner; import java.util.stream.Collectors; -import com.google.common.collect.Lists; + import io.seata.common.exception.StoreException; -import io.seata.common.io.FileLoader; import io.seata.common.util.CollectionUtils; import io.seata.common.util.LambdaUtils; import io.seata.common.util.StringUtils; @@ -41,6 +35,8 @@ import io.seata.core.model.LockStatus; import io.seata.core.store.LockDO; import io.seata.server.storage.redis.JedisPooledFactory; + +import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; @@ -50,11 +46,13 @@ import static io.seata.core.constants.RedisKeyConstants.DEFAULT_REDIS_SEATA_GLOBAL_LOCK_PREFIX; import static io.seata.core.constants.RedisKeyConstants.DEFAULT_REDIS_SEATA_ROW_LOCK_PREFIX; import static io.seata.core.exception.TransactionExceptionCode.LockKeyConflictFailFast; + /** * The redis lock store operation * * @author funkye * @author wangzhongxiang + * @author conghuhu */ public class RedisLocker extends AbstractLocker { @@ -76,49 +74,14 @@ public class RedisLocker extends AbstractLocker { private static final String PK = "pk"; - private static final String STATUS = "status"; + protected static final String STATUS = "status"; private static final String ROW_KEY = "rowKey"; - private static final String REDIS_LUA_FILE_NAME = "lua/redislocker/redislock.lua"; - - private static String ACQUIRE_LOCK_SHA; - - private static final String WHITE_SPACE = " "; - - private static final String ANNOTATION_LUA = "--"; - /** * Instantiates a new Redis locker. */ public RedisLocker() { - if (ACQUIRE_LOCK_SHA == null) { - File luaFile = FileLoader.load(REDIS_LUA_FILE_NAME); - if (luaFile != null) { - StringBuilder acquireLockLuaByFile = new StringBuilder(); - try (FileInputStream fis = new FileInputStream(luaFile)) { - BufferedReader br = new BufferedReader(new InputStreamReader(fis)); - String line; - while ((line = br.readLine()) != null) { - if (line.trim().startsWith(ANNOTATION_LUA)) { - continue; - } - acquireLockLuaByFile.append(line); - acquireLockLuaByFile.append(WHITE_SPACE); - } - // if it fails to read the file, pipeline mode is used - } catch (IOException e) { - LOGGER.info("redis locker use pipeline mode"); - return; - } - try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { - ACQUIRE_LOCK_SHA = jedis.scriptLoad(acquireLockLuaByFile.toString()); - LOGGER.info("redis locker use lua mode"); - } - } else { - LOGGER.info("redis locker use pipeline mode"); - } - } } @Override @@ -131,177 +94,109 @@ public boolean acquireLock(List rowLocks, boolean autoCommit, boolean s if (CollectionUtils.isEmpty(rowLocks)) { return true; } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { - if (ACQUIRE_LOCK_SHA != null && autoCommit) { - return acquireLockByLua(jedis, rowLocks); - } else { - return acquireLockByPipeline(jedis, rowLocks, autoCommit, skipCheckLock); + String needLockXid = rowLocks.get(0).getXid(); + Long branchId = rowLocks.get(0).getBranchId(); + List needLockDOS = convertToLockDO(rowLocks); + if (needLockDOS.size() > 1) { + needLockDOS = + needLockDOS.stream().filter(LambdaUtils.distinctByKey(LockDO::getRowKey)).collect(Collectors.toList()); } - } - } - - private boolean acquireLockByPipeline(Jedis jedis, List rowLocks, boolean autoCommit, boolean skipCheckLock) { - String needLockXid = rowLocks.get(0).getXid(); - Long branchId = rowLocks.get(0).getBranchId(); - List needLockDOS = convertToLockDO(rowLocks); - if (needLockDOS.size() > 1) { - needLockDOS = - needLockDOS.stream().filter(LambdaUtils.distinctByKey(LockDO::getRowKey)).collect(Collectors.toList()); - } - List needLockKeys = new ArrayList<>(); - needLockDOS.forEach(lockDO -> needLockKeys.add(buildLockKey(lockDO.getRowKey()))); - Map needAddLock = new HashMap<>(needLockKeys.size(), 1); - - if (!skipCheckLock) { - Pipeline pipeline1 = jedis.pipelined(); - needLockKeys.stream().forEachOrdered(needLockKey -> { - pipeline1.hget(needLockKey, XID); + List needLockKeys = new ArrayList<>(); + needLockDOS.forEach(lockDO -> needLockKeys.add(buildLockKey(lockDO.getRowKey()))); + Map needAddLock = new HashMap<>(needLockKeys.size(), 1); + + if (!skipCheckLock) { + Pipeline pipeline1 = jedis.pipelined(); + needLockKeys.stream().forEachOrdered(needLockKey -> { + pipeline1.hget(needLockKey, XID); + if (!autoCommit) { + pipeline1.hget(needLockKey, STATUS); + } + }); + List> existedLockInfos = + Lists.partition((List) (List) pipeline1.syncAndReturnAll(), autoCommit ? 1 : 2); + + // When the local transaction and the global transaction are enabled, + // the branch registration fails to acquire the global lock, + // the lock holder is in the second-stage rollback, + // and the branch registration fails to be retried quickly, + // because the retry with the local transaction does not release the database lock , + // resulting in a two-phase rollback wait. + // Therefore, if a global lock is found in the Rollbacking state, + // the fail-fast code is returned directly. if (!autoCommit) { - pipeline1.hget(needLockKey, STATUS); - } - }); - List> existedLockInfos = - Lists.partition((List)(List)pipeline1.syncAndReturnAll(), autoCommit ? 1 : 2); - - // When the local transaction and the global transaction are enabled, - // the branch registration fails to acquire the global lock, - // the lock holder is in the second-stage rollback, - // and the branch registration fails to be retried quickly, - // because the retry with the local transaction does not release the database lock , - // resulting in a two-phase rollback wait. - // Therefore, if a global lock is found in the Rollbacking state, - // the fail-fast code is returned directly. - if (!autoCommit) { - boolean hasRollBackingLock = existedLockInfos.parallelStream().anyMatch( - result -> StringUtils.equals(result.get(1), String.valueOf(LockStatus.Rollbacking.getCode()))); - if (hasRollBackingLock) { - throw new StoreException(new BranchTransactionException(LockKeyConflictFailFast)); + boolean hasRollBackingLock = existedLockInfos.parallelStream().anyMatch( + result -> StringUtils.equals(result.get(1), String.valueOf(LockStatus.Rollbacking.getCode()))); + if (hasRollBackingLock) { + throw new StoreException(new BranchTransactionException(LockKeyConflictFailFast)); + } } - } - // The logic is executed here, there must be a lock without Rollbacking status when autoCommit equals false - for (int i = 0; i < needLockKeys.size(); i++) { - List results = existedLockInfos.get(i); - String existedLockXid = CollectionUtils.isEmpty(results) ? null : existedLockInfos.get(i).get(0); - if (StringUtils.isEmpty(existedLockXid)) { - // If empty,we need to lock this row - needAddLock.put(needLockKeys.get(i), needLockDOS.get(i)); - } else { - if (!StringUtils.equals(existedLockXid, needLockXid)) { - // If not equals,means the rowkey is holding by another global transaction - logGlobalLockConflictInfo(needLockXid, needLockKeys.get(i), existedLockXid); - return false; + // The logic is executed here, there must be a lock without Rollbacking status when autoCommit equals false + for (int i = 0; i < needLockKeys.size(); i++) { + List results = existedLockInfos.get(i); + String existedLockXid = CollectionUtils.isEmpty(results) ? null : existedLockInfos.get(i).get(0); + if (StringUtils.isEmpty(existedLockXid)) { + // If empty,we need to lock this row + needAddLock.put(needLockKeys.get(i), needLockDOS.get(i)); + } else { + if (!StringUtils.equals(existedLockXid, needLockXid)) { + // If not equals,means the rowkey is holding by another global transaction + logGlobalLockConflictInfo(needLockXid, needLockKeys.get(i), existedLockXid); + return false; + } } } + if (needAddLock.isEmpty()) { + return true; + } } - if (needAddLock.isEmpty()) { - return true; - } - } - Pipeline pipeline = jedis.pipelined(); - List readyKeys = new ArrayList<>(needAddLock.keySet()); - needAddLock.forEach((key, value) -> { - pipeline.hsetnx(key, XID, value.getXid()); - pipeline.hsetnx(key, TRANSACTION_ID, value.getTransactionId().toString()); - pipeline.hsetnx(key, BRANCH_ID, value.getBranchId().toString()); - pipeline.hset(key, ROW_KEY, value.getRowKey()); - pipeline.hset(key, RESOURCE_ID, value.getResourceId()); - pipeline.hset(key, TABLE_NAME, value.getTableName()); - pipeline.hset(key, PK, value.getPk()); - }); - List results = (List) (List) pipeline.syncAndReturnAll(); - List> partitions = Lists.partition(results, 7); - - ArrayList success = new ArrayList<>(partitions.size()); - Integer status = SUCCEED; - for (int i = 0; i < partitions.size(); i++) { - if (Objects.equals(partitions.get(i).get(0), FAILED)) { - status = FAILED; - } else { - success.add(readyKeys.get(i)); + Pipeline pipeline = jedis.pipelined(); + List readyKeys = new ArrayList<>(needAddLock.keySet()); + needAddLock.forEach((key, value) -> { + pipeline.hsetnx(key, XID, value.getXid()); + pipeline.hsetnx(key, TRANSACTION_ID, value.getTransactionId().toString()); + pipeline.hsetnx(key, BRANCH_ID, value.getBranchId().toString()); + pipeline.hset(key, ROW_KEY, value.getRowKey()); + pipeline.hset(key, RESOURCE_ID, value.getResourceId()); + pipeline.hset(key, TABLE_NAME, value.getTableName()); + pipeline.hset(key, PK, value.getPk()); + }); + List results = (List) (List) pipeline.syncAndReturnAll(); + List> partitions = Lists.partition(results, 7); + + ArrayList success = new ArrayList<>(partitions.size()); + Integer status = SUCCEED; + for (int i = 0; i < partitions.size(); i++) { + if (Objects.equals(partitions.get(i).get(0), FAILED)) { + status = FAILED; + } else { + success.add(readyKeys.get(i)); + } } - } - // If someone has failed,all the lockkey which has been added need to be delete. - if (FAILED.equals(status)) { - if (success.size() > 0) { - jedis.del(success.toArray(new String[0])); + // If someone has failed,all the lockkey which has been added need to be delete. + if (FAILED.equals(status)) { + if (success.size() > 0) { + jedis.del(success.toArray(new String[0])); + } + return false; } - return false; - } - String xidLockKey = buildXidLockKey(needLockXid); - StringJoiner lockKeysString = new StringJoiner(ROW_LOCK_KEY_SPLIT_CHAR); - needLockKeys.forEach(lockKeysString::add); - jedis.hset(xidLockKey, branchId.toString(), lockKeysString.toString()); - return true; - } - - private boolean acquireLockByLua(Jedis jedis, List rowLocks) { - String needLockXid = rowLocks.get(0).getXid(); - Long branchId = rowLocks.get(0).getBranchId(); - List needLockDOs = rowLocks.stream() - .map(this::convertToLockDO) - .filter(LambdaUtils.distinctByKey(LockDO::getRowKey)) - .collect(Collectors.toList()); - ArrayList keys = new ArrayList<>(); - ArrayList args = new ArrayList<>(); - int size = needLockDOs.size(); - args.add(String.valueOf(size)); - // args index 2 placeholder - args.add(null); - args.add(needLockXid); - for (LockDO lockDO : needLockDOs) { - keys.add(buildLockKey(lockDO.getRowKey())); - args.add(lockDO.getTransactionId().toString()); - args.add(lockDO.getBranchId().toString()); - args.add(lockDO.getResourceId()); - args.add(lockDO.getTableName()); - args.add(lockDO.getRowKey()); - args.add(lockDO.getPk()); - } - String xidLockKey = buildXidLockKey(needLockXid); - StringJoiner lockKeysString = new StringJoiner(ROW_LOCK_KEY_SPLIT_CHAR); - needLockDOs.stream().map(lockDO -> buildLockKey(lockDO.getRowKey())).forEach(lockKeysString::add); - keys.add(xidLockKey); - keys.add(branchId.toString()); - args.add(lockKeysString.toString()); - // reset args index 2 - args.set(1, String.valueOf(args.size())); - String xIdOwnLock = (String) jedis.evalsha(ACQUIRE_LOCK_SHA, keys, args); - if (xIdOwnLock.equals(needLockXid)) { + String xidLockKey = buildXidLockKey(needLockXid); + StringJoiner lockKeysString = new StringJoiner(ROW_LOCK_KEY_SPLIT_CHAR); + needLockKeys.forEach(lockKeysString::add); + jedis.hset(xidLockKey, branchId.toString(), lockKeysString.toString()); return true; - } else { - logGlobalLockConflictInfo(needLockXid, keys.get(0), xIdOwnLock); - return false; } } - private void logGlobalLockConflictInfo(String needLockXid, String lockKey, String xIdOwnLock) { + protected void logGlobalLockConflictInfo(String needLockXid, String lockKey, String xIdOwnLock) { LOGGER.info("tx:[{}] acquire Global lock failed. Global lock on [{}] is holding by xid {}", needLockXid, lockKey, xIdOwnLock); } - @Override - public boolean releaseLock(List rowLocks) { - if (CollectionUtils.isEmpty(rowLocks)) { - return true; - } - String currentXid = rowLocks.get(0).getXid(); - Long branchId = rowLocks.get(0).getBranchId(); - List needReleaseLocks = convertToLockDO(rowLocks); - String[] needReleaseKeys = new String[needReleaseLocks.size()]; - for (int i = 0; i < needReleaseLocks.size(); i++) { - needReleaseKeys[i] = buildLockKey(needReleaseLocks.get(i).getRowKey()); - } - - try (Jedis jedis = JedisPooledFactory.getJedisInstance(); Pipeline pipelined = jedis.pipelined()) { - pipelined.del(needReleaseKeys); - pipelined.hdel(buildXidLockKey(currentXid), branchId.toString()); - pipelined.sync(); - return true; - } - } - @Override public boolean releaseLock(String xid) { return doReleaseLock(xid, null); @@ -330,7 +225,7 @@ public boolean isLockable(List rowLocks) { String xid = rowLocks.get(0).getXid(); try (Pipeline pipeline = jedis.pipelined()) { lockKeys.forEach(key -> pipeline.hget(key, XID)); - List existedXids = (List)(List)pipeline.syncAndReturnAll(); + List existedXids = (List) (List) pipeline.syncAndReturnAll(); return existedXids.stream().allMatch(existedXid -> existedXid == null || xid.equals(existedXid)); } } @@ -341,12 +236,24 @@ public void updateLockStatus(String xid, LockStatus lockStatus) { try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { String xidLockKey = buildXidLockKey(xid); Map branchAndLockKeys = jedis.hgetAll(xidLockKey); - if (CollectionUtils.isNotEmpty(branchAndLockKeys)) { - try (Pipeline pipeline = jedis.pipelined()) { - branchAndLockKeys.values() - .forEach(k -> pipeline.hset(k, STATUS, String.valueOf(lockStatus.getCode()))); - pipeline.sync(); - } + if (CollectionUtils.isEmpty(branchAndLockKeys)) { + return; + } + try (Pipeline pipeline = jedis.pipelined()) { + branchAndLockKeys.values() + .forEach(k -> { + if (StringUtils.isNotEmpty(k)) { + if (k.contains(ROW_LOCK_KEY_SPLIT_CHAR)) { + String[] keys = k.split(ROW_LOCK_KEY_SPLIT_CHAR); + for (String key : keys) { + pipeline.hset(key, STATUS, String.valueOf(lockStatus.getCode())); + } + } else { + pipeline.hset(k, STATUS, String.valueOf(lockStatus.getCode())); + } + } + }); + pipeline.sync(); } } } @@ -384,11 +291,11 @@ private boolean doReleaseLock(String xid, Long branchId) { } } - private String buildXidLockKey(String xid) { + protected String buildXidLockKey(String xid) { return DEFAULT_REDIS_SEATA_GLOBAL_LOCK_PREFIX + xid; } - private String buildLockKey(String rowKey) { + protected String buildLockKey(String rowKey) { return DEFAULT_REDIS_SEATA_ROW_LOCK_PREFIX + rowKey; } diff --git a/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockerFactory.java b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockerFactory.java new file mode 100644 index 00000000000..ebfd481ea71 --- /dev/null +++ b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLockerFactory.java @@ -0,0 +1,48 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.storage.redis.lock; + +import io.seata.common.ConfigurationKeys; +import io.seata.config.Configuration; +import io.seata.config.ConfigurationFactory; +import io.seata.core.lock.Locker; + +import static io.seata.common.Constants.STORE_REDIS_TYPE_PIPELINE; + +/** + * @author conghuhu + */ +public class RedisLockerFactory { + + private static final Configuration CONFIG = ConfigurationFactory.getInstance(); + + /** + * The locker. + */ + private static volatile Locker locker; + + public static Locker getLocker() { + if (locker == null) { + synchronized (RedisLockerFactory.class) { + if (locker == null) { + String storeRedisType = CONFIG.getConfig(ConfigurationKeys.STORE_REDIS_TYPE, STORE_REDIS_TYPE_PIPELINE); + locker = STORE_REDIS_TYPE_PIPELINE.equals(storeRedisType) ? new RedisLocker() : new RedisLuaLocker(); + } + } + } + return locker; + } +} diff --git a/server/src/main/java/io/seata/server/storage/redis/lock/RedisLuaLocker.java b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLuaLocker.java new file mode 100644 index 00000000000..8ad6ea41a0b --- /dev/null +++ b/server/src/main/java/io/seata/server/storage/redis/lock/RedisLuaLocker.java @@ -0,0 +1,233 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.storage.redis.lock; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.StringJoiner; +import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import redis.clients.jedis.Jedis; + +import io.seata.common.exception.StoreException; +import io.seata.common.util.CollectionUtils; +import io.seata.common.util.LambdaUtils; +import io.seata.core.exception.BranchTransactionException; +import io.seata.core.lock.RowLock; +import io.seata.core.model.LockStatus; +import io.seata.core.store.LockDO; +import io.seata.server.storage.redis.JedisPooledFactory; +import io.seata.server.storage.redis.LuaParser; + +import static io.seata.common.Constants.ROW_LOCK_KEY_SPLIT_CHAR; +import static io.seata.core.exception.TransactionExceptionCode.LockKeyConflictFailFast; + +/** + * @author conghuhu + */ +public class RedisLuaLocker extends RedisLocker { + + private static final Logger LOGGER = LoggerFactory.getLogger(RedisLuaLocker.class); + + private static final String LUA_PREFIX = "lua/redislocker/"; + + private static final String ACQUIRE_LOCK_LUA_FILE_NAME = LUA_PREFIX + "acquireRedisLock.lua"; + + private static final String RELEASE_LOCK_LUA_FILE_NAME = LUA_PREFIX + "releaseRedisLock.lua"; + + private static final String UPDATE_LOCK_LUA_FILE_NAME = LUA_PREFIX + "updateLockStatus.lua"; + + private static final String LOCKABLE_LUA_FILE_NAME = LUA_PREFIX + "isLockable.lua"; + + /** + * key filename + * value LOCK_SHA_SCRIPT + */ + private static final Map LOCK_SHA_MAP = new HashMap<>(4); + + public RedisLuaLocker() { + if (LOCK_SHA_MAP.isEmpty()) { + loadLuaFile(ACQUIRE_LOCK_LUA_FILE_NAME, "acquire lock"); + loadLuaFile(RELEASE_LOCK_LUA_FILE_NAME, "release lock"); + loadLuaFile(UPDATE_LOCK_LUA_FILE_NAME, "update lock"); + loadLuaFile(LOCKABLE_LUA_FILE_NAME, "lockable"); + } + } + + private void loadLuaFile(String fileName, String mode) { + try { + LOCK_SHA_MAP.putAll(LuaParser.getEvalShaMapFromFile(fileName)); + } catch (IOException e) { + // if it fails to read the file, pipeline mode is used + if (LOCK_SHA_MAP.get(fileName) != null) { + LOCK_SHA_MAP.remove(fileName); + } + if (LOGGER.isInfoEnabled()) { + LOGGER.info("redis locker: {} use pipeline mode", mode); + } + } + } + + @Override + public boolean acquireLock(List rowLocks, boolean autoCommit, boolean skipCheckLock) { + if (CollectionUtils.isEmpty(rowLocks)) { + return true; + } + + String luaSHA = LOCK_SHA_MAP.get(ACQUIRE_LOCK_LUA_FILE_NAME); + if (luaSHA == null) { + return super.acquireLock(rowLocks, autoCommit, skipCheckLock); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + String needLockXid = rowLocks.get(0).getXid(); + Long branchId = rowLocks.get(0).getBranchId(); + List needLockDOs = rowLocks.stream() + .map(this::convertToLockDO) + .filter(LambdaUtils.distinctByKey(LockDO::getRowKey)) + .collect(Collectors.toList()); + List keys = new ArrayList<>(); + List args = new ArrayList<>(); + int size = needLockDOs.size(); + args.add(String.valueOf(size)); + // args index 2 placeholder + args.add(null); + args.add(needLockXid); + for (LockDO lockDO : needLockDOs) { + keys.add(buildLockKey(lockDO.getRowKey())); + args.add(lockDO.getTransactionId().toString()); + args.add(lockDO.getBranchId().toString()); + args.add(lockDO.getResourceId()); + args.add(lockDO.getTableName()); + args.add(lockDO.getRowKey()); + args.add(lockDO.getPk()); + } + String xidLockKey = buildXidLockKey(needLockXid); + StringJoiner lockKeysString = new StringJoiner(ROW_LOCK_KEY_SPLIT_CHAR); + needLockDOs.stream().map(lockDO -> buildLockKey(lockDO.getRowKey())).forEach(lockKeysString::add); + + keys.add(xidLockKey); + keys.add(branchId.toString()); + args.add(lockKeysString.toString()); + // reset args index 2 + args.set(1, String.valueOf(args.size())); + + String result = (String) jedis.evalsha(luaSHA, keys, args); + + LuaParser.LuaResult luaResult = LuaParser.getObjectFromJson(result, LuaParser.LuaResult.class); + + // luaResult.getData() : xIdOwnLock + if (luaResult.getSuccess() && luaResult.getData().equals(needLockXid)) { + return true; + } else { + if (LuaParser.LuaErrorStatus.ANOTHER_ROLLBACKING.equals(luaResult.getStatus())) { + // if a global lock is found in the Rollbacking state,the fail-fast code is returned directly. + throw new StoreException(new BranchTransactionException(LockKeyConflictFailFast)); + } else if (LuaParser.LuaErrorStatus.ANOTHER_HOLDING.equals(luaResult.getStatus())) { + // means the rowKey is holding by another global transaction + logGlobalLockConflictInfo(needLockXid, keys.get(0), luaResult.getData()); + } + return false; + } + } + } + + @Override + public boolean releaseLock(String xid) { + String luaSHA = LOCK_SHA_MAP.get(RELEASE_LOCK_LUA_FILE_NAME); + if (luaSHA == null) { + return super.releaseLock(xid); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + String xidLockKey = buildXidLockKey(xid); + List keys = new ArrayList<>(); + List args = Collections.emptyList(); + keys.add(xidLockKey); + jedis.evalsha(luaSHA, keys, args); + return true; + } + } + + @Override + public boolean releaseLock(String xid, Long branchId) { + if (branchId == null) { + return true; + } + String luaSHA = LOCK_SHA_MAP.get(RELEASE_LOCK_LUA_FILE_NAME); + if (luaSHA == null) { + return super.releaseLock(xid, branchId); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + String xidLockKey = buildXidLockKey(xid); + List keys = new ArrayList<>(); + List args = Collections.emptyList(); + keys.add(xidLockKey); + keys.add(String.valueOf(branchId)); + jedis.evalsha(luaSHA, keys, args); + return true; + } + } + + @Override + public boolean isLockable(List rowLocks) { + if (CollectionUtils.isEmpty(rowLocks)) { + return true; + } + String luaSHA = LOCK_SHA_MAP.get(LOCKABLE_LUA_FILE_NAME); + if (luaSHA == null) { + return super.isLockable(rowLocks); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + List locks = convertToLockDO(rowLocks); + Set lockKeys = new HashSet<>(); + for (LockDO rowlock : locks) { + lockKeys.add(buildLockKey(rowlock.getRowKey())); + } + String xid = rowLocks.get(0).getXid(); + List keys = new ArrayList<>(); + keys.add(String.valueOf(lockKeys.size())); + keys.addAll(lockKeys); + List args = new ArrayList<>(); + args.add(xid); + String res = (String) jedis.evalsha(luaSHA, keys, args); + return "true".equals(res); + } + } + + @Override + public void updateLockStatus(String xid, LockStatus lockStatus) { + String luaSHA = LOCK_SHA_MAP.get(UPDATE_LOCK_LUA_FILE_NAME); + if (luaSHA == null) { + super.updateLockStatus(xid, lockStatus); + return; + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + String xidLockKey = buildXidLockKey(xid); + List keys = new ArrayList<>(); + List args = new ArrayList<>(); + keys.add(xidLockKey); + keys.add(STATUS); + args.add(String.valueOf(lockStatus.getCode())); + jedis.evalsha(luaSHA, keys, args); + } + } +} diff --git a/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java b/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java index 006d394c573..62616f6448a 100644 --- a/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java +++ b/server/src/main/java/io/seata/server/storage/redis/session/RedisSessionManager.java @@ -29,8 +29,8 @@ import io.seata.server.session.BranchSession; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; -import io.seata.server.storage.redis.store.RedisTransactionStoreManager; import io.seata.server.store.TransactionStoreManager.LogOperation; +import io.seata.server.storage.redis.store.RedisTransactionStoreManagerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,7 +56,7 @@ public RedisSessionManager() { @Override public void init() { - transactionStoreManager = RedisTransactionStoreManager.getInstance(); + transactionStoreManager = RedisTransactionStoreManagerFactory.getInstance(); } @Override diff --git a/server/src/main/java/io/seata/server/storage/redis/store/RedisLuaTransactionStoreManager.java b/server/src/main/java/io/seata/server/storage/redis/store/RedisLuaTransactionStoreManager.java new file mode 100644 index 00000000000..f42c3134734 --- /dev/null +++ b/server/src/main/java/io/seata/server/storage/redis/store/RedisLuaTransactionStoreManager.java @@ -0,0 +1,346 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.storage.redis.store; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +import io.seata.common.exception.RedisException; +import io.seata.common.exception.StoreException; +import io.seata.common.util.BeanUtils; +import io.seata.common.util.CollectionUtils; +import io.seata.core.model.GlobalStatus; +import io.seata.core.store.BranchTransactionDO; +import io.seata.core.store.GlobalTransactionDO; +import io.seata.server.storage.redis.JedisPooledFactory; +import io.seata.server.storage.redis.LuaParser; + +import com.google.common.collect.ImmutableMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import redis.clients.jedis.Jedis; + +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_APPLICATION_DATA; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_GMT_MODIFIED; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_STATUS; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_BRANCH_XID; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_GMT_MODIFIED; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_STATUS; +import static io.seata.core.constants.RedisKeyConstants.REDIS_KEY_GLOBAL_XID; + +/** + * @author conghuhu + */ +public class RedisLuaTransactionStoreManager extends RedisTransactionStoreManager { + + private static final Logger LOGGER = LoggerFactory.getLogger(RedisLuaTransactionStoreManager.class); + + private static final String LUA_PREFIX = "lua/redisStore/"; + + private static final String INSERT_TRANSACTION_DO_LUA_FILE_NAME = LUA_PREFIX + "insertTransactionDO.lua"; + + private static final String DELETE_TRANSACTION_DO_LUA_FILE_NAME = LUA_PREFIX + "deleteTransactionDO.lua"; + + private static final String UPDATE_BRANCH_TRANSACTION_DO_LUA_FILE_NAME = LUA_PREFIX + "updateBranchTransactionDO.lua"; + + private static final String UPDATE_GLOBAL_TRANSACTION_DO_LUA_FILE_NAME = LUA_PREFIX + "updateGlobalTransactionDO.lua"; + + private static final String ROLLBACK_GLOBAL_TRANSACTION_DO_LUA_FILE_NAME = LUA_PREFIX + "rollbackGlobalTransactionDO.lua"; + + /** + * key filename + * value LOCK_SHA_SCRIPT_ID + */ + private static final Map LOCK_SHA_MAP = new HashMap<>(); + + /** + * load redis lua script + */ + private void initRedisMode() { + loadLuaFile(INSERT_TRANSACTION_DO_LUA_FILE_NAME, "insertTransactionDO"); + loadLuaFile(DELETE_TRANSACTION_DO_LUA_FILE_NAME, "deleteTransactionDO"); + loadLuaFile(UPDATE_BRANCH_TRANSACTION_DO_LUA_FILE_NAME, "updateBranchTransactionDO"); + loadLuaFile(UPDATE_GLOBAL_TRANSACTION_DO_LUA_FILE_NAME, "updateGlobalTransactionDO"); + loadLuaFile(ROLLBACK_GLOBAL_TRANSACTION_DO_LUA_FILE_NAME, "rollbackGlobalTransactionDO"); + } + + private void loadLuaFile(String fileName, String mode) { + try { + LOCK_SHA_MAP.putAll(LuaParser.getEvalShaMapFromFile(fileName)); + } catch (IOException e) { + // if it fails to read the file, pipeline mode is used + if (LOCK_SHA_MAP.get(fileName) != null) { + LOCK_SHA_MAP.remove(fileName); + } + if (LOGGER.isInfoEnabled()) { + LOGGER.info("redis session: {} use pipeline mode", mode); + } + } + } + + public RedisLuaTransactionStoreManager() { + LOGGER.info("init redisLuaTransactionStoreManager"); + initRedisMode(); + } + + @Override + public void initGlobalMap() { + if (CollectionUtils.isEmpty(branchMap)) { + globalMap = ImmutableMap.>builder() + .put(LogOperation.GLOBAL_ADD, this::insertGlobalTransactionDO) + .put(LogOperation.GLOBAL_UPDATE, this::updateGlobalTransactionDO) + .put(LogOperation.GLOBAL_REMOVE, this::deleteGlobalTransactionDO) + .build(); + } + } + + @Override + public void initBranchMap() { + if (CollectionUtils.isEmpty(branchMap)) { + branchMap = ImmutableMap.>builder() + .put(LogOperation.BRANCH_ADD, this::insertBranchTransactionDO) + .put(LogOperation.BRANCH_UPDATE, this::updateBranchTransactionDO) + .put(LogOperation.BRANCH_REMOVE, this::deleteBranchTransactionDO) + .build(); + } + } + + @Override + protected boolean insertBranchTransactionDO(BranchTransactionDO branchTransactionDO) { + String branchKey = buildBranchKey(branchTransactionDO.getBranchId()); + String branchListKey = buildBranchListKeyByXid(branchTransactionDO.getXid()); + Date now = new Date(); + branchTransactionDO.setGmtCreate(now); + branchTransactionDO.setGmtModified(now); + Map branchTransactionDOMap = BeanUtils.objectToMap(branchTransactionDO); + String luaSHA = LOCK_SHA_MAP.get(INSERT_TRANSACTION_DO_LUA_FILE_NAME); + if (luaSHA == null) { + return super.insertBranchTransactionDO(branchTransactionDO); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + List keys = new ArrayList() { + { + add(branchKey); + add(branchListKey); + } + }; + List args = new ArrayList() { + { + add("branch"); + add(String.valueOf(branchTransactionDOMap.size())); + } + }; + for (Map.Entry entry : branchTransactionDOMap.entrySet()) { + keys.add(entry.getKey()); + args.add(entry.getValue()); + } + jedis.evalsha(luaSHA, keys, args); + return true; + } catch (Exception ex) { + throw new RedisException(ex); + } + } + + @Override + protected boolean deleteBranchTransactionDO(BranchTransactionDO branchTransactionDO) { + String branchKey = buildBranchKey(branchTransactionDO.getBranchId()); + String branchListKey = buildBranchListKeyByXid(branchTransactionDO.getXid()); + String luaSHA = LOCK_SHA_MAP.get(DELETE_TRANSACTION_DO_LUA_FILE_NAME); + if (luaSHA == null) { + return super.deleteBranchTransactionDO(branchTransactionDO); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + List keys = new ArrayList() { + { + add(branchKey); + add(branchListKey); + add(REDIS_KEY_BRANCH_XID); + } + }; + List args = new ArrayList() { + { + add("branch"); + } + }; + jedis.evalsha(luaSHA, keys, args); + return true; + } catch (Exception ex) { + throw new RedisException(ex); + } + } + + @Override + protected boolean updateBranchTransactionDO(BranchTransactionDO branchTransactionDO) { + String branchKey = buildBranchKey(branchTransactionDO.getBranchId()); + String branchStatus = String.valueOf(branchTransactionDO.getStatus()); + String applicationData = String.valueOf(branchTransactionDO.getApplicationData()); + String luaSHA = LOCK_SHA_MAP.get(UPDATE_BRANCH_TRANSACTION_DO_LUA_FILE_NAME); + if (luaSHA == null) { + return super.updateBranchTransactionDO(branchTransactionDO); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + List keys = new ArrayList() { + { + add(branchKey); + add(REDIS_KEY_BRANCH_STATUS); + add(REDIS_KEY_BRANCH_GMT_MODIFIED); + add(REDIS_KEY_BRANCH_APPLICATION_DATA); + } + }; + List args = new ArrayList() { + { + add(branchStatus); + add(String.valueOf((new Date()).getTime())); + add(applicationData); + } + }; + String result = (String) jedis.evalsha(luaSHA, keys, args); + LuaParser.LuaResult luaResult = LuaParser.getObjectFromJson(result, LuaParser.LuaResult.class); + if (!luaResult.getSuccess()) { + throw new StoreException("Branch transaction is not exist, update branch transaction failed."); + } else { + return true; + } + } catch (Exception ex) { + throw new RedisException(ex); + } + } + + @Override + protected boolean insertGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { + String globalKey = buildGlobalKeyByTransactionId(globalTransactionDO.getTransactionId()); + String globalStatus = buildGlobalStatus(globalTransactionDO.getStatus()); + String xid = globalTransactionDO.getXid(); + Date now = new Date(); + globalTransactionDO.setGmtCreate(now); + globalTransactionDO.setGmtModified(now); + Map globalTransactionDOMap = BeanUtils.objectToMap(globalTransactionDO); + String luaSHA = LOCK_SHA_MAP.get(INSERT_TRANSACTION_DO_LUA_FILE_NAME); + if (luaSHA == null) { + return super.insertGlobalTransactionDO(globalTransactionDO); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + // lua mode + List keys = new ArrayList() { + { + add(globalKey); + add(globalStatus); + } + }; + List args = new ArrayList() { + { + add("global"); + add(String.valueOf(globalTransactionDOMap.size())); + } + }; + for (Map.Entry entry : globalTransactionDOMap.entrySet()) { + keys.add(entry.getKey()); + args.add(entry.getValue()); + } + keys.add(REDIS_SEATA_BEGIN_TRANSACTIONS_KEY); + args.add(xid); + args.add(String.valueOf(globalTransactionDO.getBeginTime() + globalTransactionDO.getTimeout())); + jedis.evalsha(luaSHA, keys, args); + return true; + } catch (Exception ex) { + throw new RedisException(ex); + } + } + + @Override + protected boolean deleteGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { + String globalKey = buildGlobalKeyByTransactionId(globalTransactionDO.getTransactionId()); + String globalStatus = buildGlobalStatus(globalTransactionDO.getStatus()); + String luaSHA = LOCK_SHA_MAP.get(DELETE_TRANSACTION_DO_LUA_FILE_NAME); + if (luaSHA == null) { + return super.deleteGlobalTransactionDO(globalTransactionDO); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + // lua mode + List keys = new ArrayList() { + { + add(globalKey); + add(globalStatus); + add(REDIS_KEY_GLOBAL_XID); + add(REDIS_SEATA_BEGIN_TRANSACTIONS_KEY); + } + }; + List args = new ArrayList() { + { + add("global"); + add(globalTransactionDO.getXid()); + add(String.valueOf(globalTransactionDO.getStatus())); + } + }; + jedis.evalsha(luaSHA, keys, args); + return true; + } catch (Exception ex) { + throw new RedisException(ex); + } + } + + @Override + protected boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { + String xid = globalTransactionDO.getXid(); + String globalKey = buildGlobalKeyByTransactionId(globalTransactionDO.getTransactionId()); + Integer status = globalTransactionDO.getStatus(); + + String luaSHA = LOCK_SHA_MAP.get(UPDATE_GLOBAL_TRANSACTION_DO_LUA_FILE_NAME); + if (luaSHA == null) { + return super.updateGlobalTransactionDO(globalTransactionDO); + } + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + List keys = new ArrayList() { + { + add(globalKey); + add(REDIS_KEY_GLOBAL_STATUS); + add(REDIS_KEY_GLOBAL_GMT_MODIFIED); + add(REDIS_SEATA_BEGIN_TRANSACTIONS_KEY); + } + }; + List args = new ArrayList() { + { + add(String.valueOf(status)); + add(String.valueOf((new Date()).getTime())); + add(xid); + } + }; + String result = (String) jedis.evalsha(luaSHA, keys, args); + LuaParser.LuaResult luaResult = LuaParser.getObjectFromJson(result, LuaParser.LuaResult.class); + // fail + if (!luaResult.getSuccess()) { + String type = luaResult.getStatus(); + if (LuaParser.LuaErrorStatus.XID_NOT_EXISTED.equals(type)) { + throw new StoreException("Global transaction is not exist, update global transaction failed."); + } else if (LuaParser.LuaErrorStatus.ILLEGAL_CHANGE_STATUS.equals(type)) { + String previousStatus = luaResult.getData(); + GlobalStatus before = GlobalStatus.get(Integer.parseInt(previousStatus)); + GlobalStatus after = GlobalStatus.get(status); + throw new StoreException("Illegal changing of global status, update global transaction failed." + + " beforeStatus[" + before.name() + "] cannot be changed to afterStatus[" + after.name() + "]"); + } + } + return true; + } catch (Exception ex) { + throw new RedisException(ex); + } + } +} diff --git a/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java b/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java index dd50ca12175..c893b27c0d6 100644 --- a/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java +++ b/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManager.java @@ -24,8 +24,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Optional; +import java.util.Objects; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -51,6 +51,7 @@ import io.seata.server.store.AbstractTransactionStoreManager; import io.seata.server.store.SessionStorable; import io.seata.server.store.TransactionStoreManager; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; @@ -73,25 +74,34 @@ * @author funkye * @author wangzhongxiang * @author doubleDimple + * @author conghuhu */ public class RedisTransactionStoreManager extends AbstractTransactionStoreManager implements TransactionStoreManager { private static final Logger LOGGER = LoggerFactory.getLogger(RedisTransactionStoreManager.class); - /**the prefix of the branch transactions*/ + /** + * the prefix of the branch transactions + */ private static final String REDIS_SEATA_BRANCHES_PREFIX = "SEATA_BRANCHES_"; - /**the prefix of the branch transaction*/ + /** + * the prefix of the branch transaction + */ private static final String REDIS_SEATA_BRANCH_PREFIX = "SEATA_BRANCH_"; - /**the prefix of the global transaction*/ + /** + * the prefix of the global transaction + */ private static final String REDIS_SEATA_GLOBAL_PREFIX = "SEATA_GLOBAL_"; - /**the prefix of the global transaction status*/ + /** + * the prefix of the global transaction status + */ private static final String REDIS_SEATA_STATUS_PREFIX = "SEATA_STATUS_"; /**the key of global transaction status for begin*/ - private static final String REDIS_SEATA_BEGIN_TRANSACTIONS_KEY = "SEATA_BEGIN_TRANSACTIONS"; + protected static final String REDIS_SEATA_BEGIN_TRANSACTIONS_KEY = "SEATA_BEGIN_TRANSACTIONS"; private static volatile RedisTransactionStoreManager instance; @@ -100,12 +110,12 @@ public class RedisTransactionStoreManager extends AbstractTransactionStoreManage /** * The constant CONFIG. */ - private static final Configuration CONFIG = ConfigurationFactory.getInstance(); + protected static final Configuration CONFIG = ConfigurationFactory.getInstance(); /** * The Log query limit. */ - private int logQueryLimit; + protected int logQueryLimit; /** * Get the instance. @@ -128,6 +138,10 @@ public RedisTransactionStoreManager() { super(); initGlobalMap(); initBranchMap(); + initLogQueryLimit(); + } + + protected void initLogQueryLimit() { logQueryLimit = CONFIG.getInt(STORE_REDIS_QUERY_LIMIT, DEFAULT_QUERY_LIMIT); } @@ -141,42 +155,38 @@ public RedisTransactionStoreManager() { */ public static volatile ImmutableMap> branchMap; - /** * init globalMap - * */ public void initGlobalMap() { if (CollectionUtils.isEmpty(branchMap)) { globalMap = ImmutableMap.>builder() - .put(LogOperation.GLOBAL_ADD, this::insertGlobalTransactionDO) - .put(LogOperation.GLOBAL_UPDATE, this::updateGlobalTransactionDO) - .put(LogOperation.GLOBAL_REMOVE, this::deleteGlobalTransactionDO) - .build(); + .put(LogOperation.GLOBAL_ADD, this::insertGlobalTransactionDO) + .put(LogOperation.GLOBAL_UPDATE, this::updateGlobalTransactionDO) + .put(LogOperation.GLOBAL_REMOVE, this::deleteGlobalTransactionDO) + .build(); } } /** * init branchMap - * */ public void initBranchMap() { if (CollectionUtils.isEmpty(branchMap)) { branchMap = ImmutableMap.>builder() - .put(LogOperation.BRANCH_ADD, this::insertBranchTransactionDO) - .put(LogOperation.BRANCH_UPDATE, this::updateBranchTransactionDO) - .put(LogOperation.BRANCH_REMOVE, this::deleteBranchTransactionDO) - .build(); + .put(LogOperation.BRANCH_ADD, this::insertBranchTransactionDO) + .put(LogOperation.BRANCH_UPDATE, this::updateBranchTransactionDO) + .put(LogOperation.BRANCH_REMOVE, this::deleteBranchTransactionDO) + .build(); } } - @Override public boolean writeSession(LogOperation logOperation, SessionStorable session) { if (globalMap.containsKey(logOperation) || branchMap.containsKey(logOperation)) { return globalMap.containsKey(logOperation) ? - globalMap.get(logOperation).apply(SessionConverter.convertGlobalTransactionDO(session)) : - branchMap.get(logOperation).apply(SessionConverter.convertBranchTransactionDO(session)); + globalMap.get(logOperation).apply(SessionConverter.convertGlobalTransactionDO(session)) : + branchMap.get(logOperation).apply(SessionConverter.convertBranchTransactionDO(session)); } else { throw new StoreException("Unknown LogOperation:" + logOperation.name()); } @@ -184,10 +194,11 @@ public boolean writeSession(LogOperation logOperation, SessionStorable session) /** * Insert branch transaction + * * @param branchTransactionDO * @return the boolean */ - private boolean insertBranchTransactionDO(BranchTransactionDO branchTransactionDO) { + protected boolean insertBranchTransactionDO(BranchTransactionDO branchTransactionDO) { String branchKey = buildBranchKey(branchTransactionDO.getBranchId()); String branchListKey = buildBranchListKeyByXid(branchTransactionDO.getXid()); try (Jedis jedis = JedisPooledFactory.getJedisInstance(); Pipeline pipelined = jedis.pipelined()) { @@ -205,17 +216,18 @@ private boolean insertBranchTransactionDO(BranchTransactionDO branchTransactionD /** * Delete the branch transaction + * * @param branchTransactionDO * @return */ - private boolean deleteBranchTransactionDO(BranchTransactionDO branchTransactionDO) { + protected boolean deleteBranchTransactionDO(BranchTransactionDO branchTransactionDO) { String branchKey = buildBranchKey(branchTransactionDO.getBranchId()); + String branchListKey = buildBranchListKeyByXid(branchTransactionDO.getXid()); try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { String xid = jedis.hget(branchKey, REDIS_KEY_BRANCH_XID); if (StringUtils.isEmpty(xid)) { return true; } - String branchListKey = buildBranchListKeyByXid(branchTransactionDO.getXid()); try (Pipeline pipelined = jedis.pipelined()) { pipelined.lrem(branchListKey, 0, branchKey); pipelined.del(branchKey); @@ -229,21 +241,24 @@ private boolean deleteBranchTransactionDO(BranchTransactionDO branchTransactionD /** * Update the branch transaction + * * @param branchTransactionDO * @return */ - private boolean updateBranchTransactionDO(BranchTransactionDO branchTransactionDO) { + protected boolean updateBranchTransactionDO(BranchTransactionDO branchTransactionDO) { String branchKey = buildBranchKey(branchTransactionDO.getBranchId()); + String branchStatus = String.valueOf(branchTransactionDO.getStatus()); + String applicationData = String.valueOf(branchTransactionDO.getApplicationData()); try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { String previousBranchStatus = jedis.hget(branchKey, REDIS_KEY_BRANCH_STATUS); if (StringUtils.isEmpty(previousBranchStatus)) { throw new StoreException("Branch transaction is not exist, update branch transaction failed."); } Map map = new HashMap<>(3, 1); - map.put(REDIS_KEY_BRANCH_STATUS, String.valueOf(branchTransactionDO.getStatus())); + map.put(REDIS_KEY_BRANCH_STATUS, branchStatus); map.put(REDIS_KEY_BRANCH_GMT_MODIFIED, String.valueOf((new Date()).getTime())); if (StringUtils.isNotBlank(branchTransactionDO.getApplicationData())) { - map.put(REDIS_KEY_BRANCH_APPLICATION_DATA, String.valueOf(branchTransactionDO.getApplicationData())); + map.put(REDIS_KEY_BRANCH_APPLICATION_DATA, applicationData); } jedis.hmset(branchKey, map); return true; @@ -254,10 +269,11 @@ private boolean updateBranchTransactionDO(BranchTransactionDO branchTransactionD /** * Insert the global transaction. + * * @param globalTransactionDO * @return */ - private boolean insertGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { + protected boolean insertGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { String globalKey = buildGlobalKeyByTransactionId(globalTransactionDO.getTransactionId()); try (Jedis jedis = JedisPooledFactory.getJedisInstance(); Pipeline pipelined = jedis.pipelined()) { Date now = new Date(); @@ -278,15 +294,18 @@ private boolean insertGlobalTransactionDO(GlobalTransactionDO globalTransactionD /** * Delete the global transaction. * It will operate two parts: - * 1.delete the global session map - * 2.remove the xid from the global status list + * 1.delete the global session map + * 2.remove the xid from the global status list * If the operate failed,the succeed operates will rollback + * * @param globalTransactionDO * @return */ - private boolean deleteGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { + protected boolean deleteGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { String globalKey = buildGlobalKeyByTransactionId(globalTransactionDO.getTransactionId()); + String globalStatus = buildGlobalStatus(globalTransactionDO.getStatus()); try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + // pipeline mode String xid = jedis.hget(globalKey, REDIS_KEY_GLOBAL_XID); if (StringUtils.isEmpty(xid)) { LOGGER.warn("Global transaction is not exist,xid = {}.Maybe has been deleted by another tc server", @@ -294,7 +313,7 @@ private boolean deleteGlobalTransactionDO(GlobalTransactionDO globalTransactionD return true; } try (Pipeline pipelined = jedis.pipelined()) { - pipelined.lrem(buildGlobalStatus(globalTransactionDO.getStatus()), 0, globalTransactionDO.getXid()); + pipelined.lrem(globalStatus, 0, globalTransactionDO.getXid()); pipelined.del(globalKey); if (GlobalStatus.Begin.getCode() == globalTransactionDO.getStatus() || GlobalStatus.UnKnown.getCode() == globalTransactionDO.getStatus()) { @@ -311,15 +330,17 @@ private boolean deleteGlobalTransactionDO(GlobalTransactionDO globalTransactionD /** * Update the global transaction. * It will update two parts: - * 1.the global session map - * 2.the global status list + * 1.the global session map + * 2.the global status list * If the update failed,the succeed operates will rollback + * * @param globalTransactionDO * @return */ - private boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { + protected boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionDO) { String xid = globalTransactionDO.getXid(); String globalKey = buildGlobalKeyByTransactionId(globalTransactionDO.getTransactionId()); + Integer status = globalTransactionDO.getStatus(); try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { // Defensive watch to prevent other TC server operating concurrently,Fail fast jedis.watch(globalKey); @@ -329,12 +350,12 @@ private boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionD jedis.unwatch(); throw new StoreException("Global transaction is not exist, update global transaction failed."); } - if (previousStatus.equals(String.valueOf(globalTransactionDO.getStatus()))) { + if (previousStatus.equals(String.valueOf(status))) { jedis.unwatch(); return true; } GlobalStatus before = GlobalStatus.get(Integer.parseInt(previousStatus)); - GlobalStatus after = GlobalStatus.get(globalTransactionDO.getStatus()); + GlobalStatus after = GlobalStatus.get(status); if (!SessionStatusValidator.validateUpdateStatus(before, after)) { throw new StoreException("Illegal changing of global status, update global transaction failed." + " beforeStatus[" + before.name() + "] cannot be changed to afterStatus[" + after.name() + "]"); @@ -352,26 +373,26 @@ private boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionD List exec = multi.exec(); if (CollectionUtils.isEmpty(exec)) { //The data has changed by another tc, so we still think the modification is successful. - LOGGER.warn("The global transaction xid = {}, maybe changed by another TC. It does not affect the results",globalTransactionDO.getXid()); + LOGGER.warn("The global transaction xid = {}, maybe changed by another TC. It does not affect the results", xid); return true; } String hmset = exec.get(0).toString(); - long lrem = (long)exec.get(1); - long rpush = (long)exec.get(2); + long lrem = (long) exec.get(1); + long rpush = (long) exec.get(2); if (OK.equalsIgnoreCase(hmset) && lrem > 0 && rpush > 0) { return true; } else { - // If someone failed, the succeed operations need rollback + // pipeline mode if (OK.equalsIgnoreCase(hmset)) { // Defensive watch to prevent other TC server operating concurrently,give up this operate jedis.watch(globalKey); String xid2 = jedis.hget(globalKey, REDIS_KEY_GLOBAL_XID); if (StringUtils.isNotEmpty(xid2)) { - Map mapPrevious = new HashMap<>(2,1); - mapPrevious.put(REDIS_KEY_GLOBAL_STATUS,previousStatus); - mapPrevious.put(REDIS_KEY_GLOBAL_GMT_MODIFIED,previousGmtModified); + Map mapPrevious = new HashMap<>(2, 1); + mapPrevious.put(REDIS_KEY_GLOBAL_STATUS, previousStatus); + mapPrevious.put(REDIS_KEY_GLOBAL_GMT_MODIFIED, previousGmtModified); Transaction multi2 = jedis.multi(); - multi2.hmset(globalKey,mapPrevious); + multi2.hmset(globalKey, mapPrevious); multi2.exec(); } } @@ -379,7 +400,7 @@ private boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionD jedis.rpush(buildGlobalStatus(Integer.valueOf(previousStatus)), xid); } if (rpush > 0) { - jedis.lrem(buildGlobalStatus(globalTransactionDO.getStatus()), 0, xid); + jedis.lrem(buildGlobalStatus(status), 0, xid); } return false; } @@ -391,8 +412,8 @@ private boolean updateGlobalTransactionDO(GlobalTransactionDO globalTransactionD /** * Read session global session. * - * @param xid the xid - * @param withBranchSessions the withBranchSessions + * @param xid the xid + * @param withBranchSessions the withBranchSessions * @return the global session */ @Override @@ -400,11 +421,11 @@ public GlobalSession readSession(String xid, boolean withBranchSessions) { String transactionId = String.valueOf(XID.getTransactionId(xid)); String globalKey = buildGlobalKeyByTransactionId(transactionId); try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { - Map map = jedis.hgetAll(globalKey); + Map map = jedis.hgetAll(globalKey); if (CollectionUtils.isEmpty(map)) { return null; } - GlobalTransactionDO globalTransactionDO = (GlobalTransactionDO)BeanUtils.mapToObject(map, GlobalTransactionDO.class); + GlobalTransactionDO globalTransactionDO = (GlobalTransactionDO) BeanUtils.mapToObject(map, GlobalTransactionDO.class); List branchTransactionDOs = null; if (withBranchSessions) { branchTransactionDOs = this.readBranchSessionByXid(jedis, xid); @@ -417,8 +438,7 @@ public GlobalSession readSession(String xid, boolean withBranchSessions) { /** * Read session global session. * - * @param xid - * the xid + * @param xid the xid * @return the global session */ @Override @@ -514,6 +534,7 @@ private int resetLogQueryLimit(Map targetMap) { /** * read the global session list by different condition + * * @param sessionCondition the session condition * @return the global sessions */ @@ -574,9 +595,10 @@ public List readSessionStatusByPage(GlobalSessionParam param) { /** * assemble the global session and branch session - * @param globalTransactionDO the global transactionDo + * + * @param globalTransactionDO the global transactionDo * @param branchTransactionDOs the branch transactionDos - * @param withBranchSessions if read branch sessions + * @param withBranchSessions if read branch sessions * @return the global session with branch session */ private GlobalSession getGlobalSession(GlobalTransactionDO globalTransactionDO, @@ -592,7 +614,8 @@ private GlobalSession getGlobalSession(GlobalTransactionDO globalTransactionDO, /** * read the global session by transactionId - * @param transactionId the transaction id + * + * @param transactionId the transaction id * @param withBranchSessions if read branch sessions * @return the global session */ @@ -604,7 +627,7 @@ private GlobalSession readSessionByTransactionId(String transactionId, boolean w if (CollectionUtils.isEmpty(map)) { return null; } - GlobalTransactionDO globalTransactionDO = (GlobalTransactionDO)BeanUtils.mapToObject(map, GlobalTransactionDO.class); + GlobalTransactionDO globalTransactionDO = (GlobalTransactionDO) BeanUtils.mapToObject(map, GlobalTransactionDO.class); if (globalTransactionDO != null) { xid = globalTransactionDO.getXid(); } @@ -616,11 +639,11 @@ private GlobalSession readSessionByTransactionId(String transactionId, boolean w } } - /** * Read the branch session list by xid + * * @param jedis the jedis - * @param xid the xid + * @param xid the xid * @return the branch transactionDo list */ private List readBranchSessionByXid(Jedis jedis, String xid) { @@ -633,9 +656,9 @@ private List readBranchSessionByXid(Jedis jedis, String xid List branchInfos = pipeline.syncAndReturnAll(); for (Object branchInfo : branchInfos) { if (branchInfo != null) { - Map branchInfoMap = (Map)branchInfo; + Map branchInfoMap = (Map) branchInfo; Optional branchTransactionDO = Optional.ofNullable( - (BranchTransactionDO)BeanUtils.mapToObject(branchInfoMap, BranchTransactionDO.class)); + (BranchTransactionDO) BeanUtils.mapToObject(branchInfoMap, BranchTransactionDO.class)); branchTransactionDO.ifPresent(branchTransactionDOs::add); } } @@ -653,7 +676,7 @@ private List lRange(Jedis jedis, String key) { int limit = 20; int start = 0; int stop = limit; - for (;;) { + for (; ; ) { values = jedis.lrange(key, start, stop); keys.addAll(values); if (CollectionUtils.isEmpty(values) || values.size() < limit) { @@ -744,7 +767,7 @@ public Long countByGlobalSessions(GlobalStatus[] values) { } try (Jedis jedis = JedisPooledFactory.getJedisInstance(); Pipeline pipelined = jedis.pipelined()) { statusKeys.stream().forEach(statusKey -> pipelined.llen(statusKey)); - List list = (List)(List)pipelined.syncAndReturnAll(); + List list = (List) (List) pipelined.syncAndReturnAll(); if (list.size() > 0) { total = list.stream().mapToLong(value -> value).sum(); } @@ -761,7 +784,7 @@ private List convertStatusKeys(GlobalStatus... statuses) { } private void dogetXidsForTargetMapRecursive(Map targetMap, long start, long end, - long queryCount, List> listList) { + long queryCount, List> listList) { long total = listList.stream().mapToLong(List::size).sum(); @@ -807,7 +830,7 @@ private void dogetXidsForTargetMapRecursive(Map targetMap, long } private List> dogetXidsForTargetMap(Map targetMap, int start, int end, - int totalCount) { + int totalCount) { List> listList = new ArrayList<>(); try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { for (String key : targetMap.keySet()) { @@ -824,19 +847,19 @@ private List> dogetXidsForTargetMap(Map targetMap, return listList; } - private String buildBranchListKeyByXid(String xid) { + protected String buildBranchListKeyByXid(String xid) { return REDIS_SEATA_BRANCHES_PREFIX + xid; } - private String buildGlobalKeyByTransactionId(Object transactionId) { + protected String buildGlobalKeyByTransactionId(Object transactionId) { return REDIS_SEATA_GLOBAL_PREFIX + transactionId; } - private String buildBranchKey(Long branchId) { + protected String buildBranchKey(Long branchId) { return REDIS_SEATA_BRANCH_PREFIX + branchId; } - private String buildGlobalStatus(Integer status) { + protected String buildGlobalStatus(Integer status) { return REDIS_SEATA_STATUS_PREFIX + status; } diff --git a/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManagerFactory.java b/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManagerFactory.java new file mode 100644 index 00000000000..6d6a87bd27b --- /dev/null +++ b/server/src/main/java/io/seata/server/storage/redis/store/RedisTransactionStoreManagerFactory.java @@ -0,0 +1,48 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.storage.redis.store; + +import io.seata.common.ConfigurationKeys; +import io.seata.config.Configuration; +import io.seata.config.ConfigurationFactory; + +import static io.seata.common.Constants.STORE_REDIS_TYPE_PIPELINE; + +/** + * @author conghuhu + */ +public class RedisTransactionStoreManagerFactory { + + protected static final Configuration CONFIG = ConfigurationFactory.getInstance(); + + private static volatile RedisTransactionStoreManager instance; + + /** + * Get the instance. + */ + public static RedisTransactionStoreManager getInstance() { + if (instance == null) { + synchronized (RedisTransactionStoreManagerFactory.class) { + if (instance == null) { + String storeRedisType = CONFIG.getConfig(ConfigurationKeys.STORE_REDIS_TYPE, STORE_REDIS_TYPE_PIPELINE); + instance = STORE_REDIS_TYPE_PIPELINE.equals(storeRedisType) ? + new RedisTransactionStoreManager() : new RedisLuaTransactionStoreManager(); + } + } + } + return instance; + } +} diff --git a/server/src/main/resources/application.example.yml b/server/src/main/resources/application.example.yml index 4e46e672825..db94415a390 100644 --- a/server/src/main/resources/application.example.yml +++ b/server/src/main/resources/application.example.yml @@ -167,6 +167,8 @@ seata: max-wait: 5000 redis: mode: single + # support: lua 、 pipeline + type: lua database: 0 min-conn: 10 max-conn: 100 diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index 16822c55e18..cb859540135 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -45,8 +45,8 @@ seata: store: # support: file 、 db 、 redis mode: file -# server: -# service-port: 8091 #If not configured, the default is '${server.port} + 1000' + # server: + # service-port: 8091 #If not configured, the default is '${server.port} + 1000' security: secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017 tokenValidityInMilliseconds: 1800000 diff --git a/server/src/main/resources/lua/redisStore/deleteTransactionDO.lua b/server/src/main/resources/lua/redisStore/deleteTransactionDO.lua new file mode 100644 index 00000000000..9845198e4d1 --- /dev/null +++ b/server/src/main/resources/lua/redisStore/deleteTransactionDO.lua @@ -0,0 +1,56 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/25 + +-- param description +-- KEYS[1] branchOrGlobalKey +-- KEYS[2] listKey +-- KEYS[3] REDIS_KEY_BRANCH_XID/REDIS_KEY_GLOBAL_XID +-- KEYS[4] REDIS_SEATA_BEGIN_TRANSACTIONS_KEY (only type is global) +-- ARGV[1] type: global or branch +-- ARGV[2] globalTransactionDO xid (only type is global) +-- ARGV[3] globalTransactionDO status (only type is global) + +-- init data +local branchOrGlobalKey = KEYS[1]; +local listKey = KEYS[2]; +local redisKeyXID = KEYS[3]; + +local type = ARGV[1]; + +local existedXid = redis.call('HGET', branchOrGlobalKey, redisKeyXID); + +if (not existedXid or string.len(tostring(existedXid)) == 0) +then + return 'true'; +end + +if (type == 'branch') then + redis.call('LREM', listKey, 0, branchOrGlobalKey); + redis.call('DEL', branchOrGlobalKey); +elseif (type == 'global') then + local xid = ARGV[2]; + local status = tonumber(ARGV[3]); + local REDIS_SEATA_BEGIN_TRANSACTIONS_KEY = KEYS[4]; + redis.call('LREM', listKey, 0, xid); + redis.call('DEL', branchOrGlobalKey); + -- GlobalStatus.Begin or GlobalStatus.UnKnown + if (status == 1 or status == 0) then + redis.call('ZREM', REDIS_SEATA_BEGIN_TRANSACTIONS_KEY, branchOrGlobalKey); + end +end + +return 'true'; diff --git a/server/src/main/resources/lua/redisStore/insertTransactionDO.lua b/server/src/main/resources/lua/redisStore/insertTransactionDO.lua new file mode 100644 index 00000000000..75388ea68ad --- /dev/null +++ b/server/src/main/resources/lua/redisStore/insertTransactionDO.lua @@ -0,0 +1,49 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/25 + +-- param description +-- KEYS[1] branchOrGlobalKey +-- KEYS[2] listKey +-- KEYS[3~-2] transactionDOMap.keys +-- KEYS[-1] REDIS_SEATA_BEGIN_TRANSACTIONS_KEY (only type is global) +-- ARGV[1] type: global or branch +-- ARGV[2] transactionDOMap.size() +-- ARGV[3~-2] transactionDOMap.values +-- ARGV[-2] xid (only type is global) +-- ARGV[-1] beginTime+timeout (only type is global) + +-- init data +local branchOrGlobalKey = KEYS[1]; +local listKey = KEYS[2]; + +local type = ARGV[1]; +local keySize = tonumber(ARGV[2]); + +for i = 1, keySize do + redis.call('HSET', branchOrGlobalKey, KEYS[i + 2], ARGV[i + 2]); +end + +if type == 'branch' then + redis.call('RPUSH', listKey, branchOrGlobalKey); +elseif type == 'global' then + local REDIS_SEATA_BEGIN_TRANSACTIONS_KEY = KEYS[keySize + 3]; + redis.call('RPUSH', listKey, ARGV[keySize + 3]); + redis.call('ZADD', REDIS_SEATA_BEGIN_TRANSACTIONS_KEY, ARGV[keySize + 4], branchOrGlobalKey) +end + +return 'true'; + diff --git a/server/src/main/resources/lua/redisStore/rollbackGlobalTransactionDO.lua b/server/src/main/resources/lua/redisStore/rollbackGlobalTransactionDO.lua new file mode 100644 index 00000000000..5e6c4a6a057 --- /dev/null +++ b/server/src/main/resources/lua/redisStore/rollbackGlobalTransactionDO.lua @@ -0,0 +1,57 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/27 + +-- param description +-- KEYS[1] globalKey +-- KEYS[2] REDIS_KEY_GLOBAL_XID +-- KEYS[3] REDIS_KEY_GLOBAL_STATUS +-- KEYS[4] REDIS_KEY_GLOBAL_GMT_MODIFIED +-- KEYS[5] status +-- ARGV[1] previousStatus +-- ARGV[2] previousGmtModified +-- ARGV[3] xid +-- ARGV[4] hmset +-- ARGV[5] lrem +-- ARGV[6] rpush + +-- init data +local globalKey = KEYS[1]; +local REDIS_KEY_GLOBAL_XID = KEYS[2]; +local REDIS_KEY_GLOBAL_STATUS = KEYS[3]; +local REDIS_KEY_GLOBAL_GMT_MODIFIED = KEYS[4]; +local status = KEYS[5]; +local previousStatus = ARGV[1]; +local previousGmtModified = ARGV[2]; +local xid = ARGV[3]; +local hmset = ARGV[4]; +local lrem = ARGV[5]; +local rpush = ARGV[6]; + +if string.upper(hmset) == "OK" then + local xid2 = redis.call('HGET', globalKey, REDIS_KEY_GLOBAL_XID); + if (xid2 and string.len(tostring(xid2)) ~= 0) then + redis.call('HMSET', globalKey, REDIS_KEY_GLOBAL_STATUS, previousStatus, REDIS_KEY_GLOBAL_GMT_MODIFIED, previousGmtModified); + end +end + +if tonumber(lrem) > 0 then + redis.call('RPUSH', 'SEATA_STATUS_' .. previousStatus, xid); +end + +if tonumber(rpush) then + redis.call('LREM', 'SEATA_STATUS_' .. status, 0, xid); +end \ No newline at end of file diff --git a/server/src/main/resources/lua/redisStore/updateBranchTransactionDO.lua b/server/src/main/resources/lua/redisStore/updateBranchTransactionDO.lua new file mode 100644 index 00000000000..24e3083cde8 --- /dev/null +++ b/server/src/main/resources/lua/redisStore/updateBranchTransactionDO.lua @@ -0,0 +1,55 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/27 + +-- param description +-- KEYS[1] branchKey +-- KEYS[2] REDIS_KEY_BRANCH_STATUS +-- KEYS[3] REDIS_KEY_BRANCH_GMT_MODIFIED +-- KEYS[4] REDIS_KEY_BRANCH_APPLICATION_DATA +-- ARGV[1] branchStatus +-- ARGV[2] nowTime +-- ARGV[3] applicationData + +-- init data +local branchKey = KEYS[1]; +local REDIS_KEY_BRANCH_STATUS = KEYS[2]; +local REDIS_KEY_BRANCH_GMT_MODIFIED = KEYS[3]; +local REDIS_KEY_BRANCH_APPLICATION_DATA = KEYS[4]; +local branchStatus = ARGV[1]; +local nowTime = ARGV[2]; +local applicationData = ARGV[3]; +local result = {}; + +local previousBranchStatus = redis.call('HGET', branchKey, REDIS_KEY_BRANCH_STATUS); +if (not previousBranchStatus or string.len(tostring(previousBranchStatus)) == 0) +then + result['success'] = false; + result['status'] = ''; + result['data'] = ''; + return cjson.encode(result); +end + +redis.call('HSET', branchKey, REDIS_KEY_BRANCH_STATUS, branchStatus); +redis.call('HSET', branchKey, REDIS_KEY_BRANCH_GMT_MODIFIED, nowTime); +if (applicationData and string.len(tostring(applicationData)) ~= 0) then + redis.call('HSET', branchKey, REDIS_KEY_BRANCH_APPLICATION_DATA, applicationData); +end + +result['success'] = true; +result['status'] = ''; +result['data'] = ''; +return cjson.encode(result); \ No newline at end of file diff --git a/server/src/main/resources/lua/redisStore/updateGlobalTransactionDO.lua b/server/src/main/resources/lua/redisStore/updateGlobalTransactionDO.lua new file mode 100644 index 00000000000..438029625c9 --- /dev/null +++ b/server/src/main/resources/lua/redisStore/updateGlobalTransactionDO.lua @@ -0,0 +1,109 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/27 + +-- param description +-- KEYS[1] globalKey +-- KEYS[2] REDIS_KEY_GLOBAL_STATUS +-- KEYS[3] REDIS_KEY_GLOBAL_GMT_MODIFIED +-- KEYS[4] REDIS_SEATA_BEGIN_TRANSACTIONS_KEY +-- ARGV[1] status +-- ARGV[2] nowTime +-- ARGV[3] xid + +-- init data +local globalKey = KEYS[1]; +local REDIS_KEY_GLOBAL_STATUS = KEYS[2]; +local REDIS_KEY_GLOBAL_GMT_MODIFIED = KEYS[3]; +local REDIS_SEATA_BEGIN_TRANSACTIONS_KEY = KEYS[4]; + +local status = ARGV[1]; +local nowTime = ARGV[2]; +local xid = ARGV[3]; + +local result = {}; + +-- is timeout global status +local function isTimeoutGlobalStatus(s) + local globalStatus = tonumber(s); + return globalStatus == 13 or globalStatus == 14 or globalStatus == 6 or globalStatus == 7; +end + +-- is rollback global status +local function isRollbackGlobalStatus(s) + local globalStatus = tonumber(s); + return globalStatus == 4 or globalStatus == 5 or globalStatus == 11 or globalStatus == 12 or globalStatus == 17; +end + +local function isCommitGlobalStatus(s) + local globalStatus = tonumber(s); + return globalStatus == 2 or globalStatus == 8 or globalStatus == 3 or globalStatus == 9 or globalStatus == 10 or globalStatus == 16; +end + +-- check the relation of before status and after status +local function validateUpdateStatus(before, after) + if isTimeoutGlobalStatus(before) and isCommitGlobalStatus(after) then + return false; + end + if isCommitGlobalStatus(before) and isTimeoutGlobalStatus(after) then + return false; + end + if isRollbackGlobalStatus(before) and isCommitGlobalStatus(after) then + return false; + end + if isCommitGlobalStatus(before) and isRollbackGlobalStatus(after) then + return false; + end + return true; +end + +local statusAndGmtModified = redis.call('HMGET', globalKey, REDIS_KEY_GLOBAL_STATUS, REDIS_KEY_GLOBAL_GMT_MODIFIED); +local previousStatus = statusAndGmtModified[1]; +local previousGmtModified = statusAndGmtModified[2]; + +if (not previousStatus and string.len(tostring(previousStatus)) ~= 0) then + result['success'] = false; + result['status'] = 'NotExisted'; + result['data'] = ''; + return cjson.encode(result); +end + +if previousStatus == status then + result['success'] = true; + result['status'] = ''; + result['data'] = ''; + return cjson.encode(result); +end + +if not validateUpdateStatus(previousStatus, status) then + result['success'] = false; + result['status'] = 'ChangeStatusFail'; + result['data'] = previousGmtModified; + return cjson.encode(result); +end + +local data = {}; +data[1] = redis.call('HMSET', globalKey, REDIS_KEY_GLOBAL_STATUS, status, REDIS_KEY_GLOBAL_GMT_MODIFIED, nowTime)['ok']; +data[2] = tostring(redis.call('LREM', 'SEATA_STATUS_' .. previousStatus, 0, xid)); +data[3] = tostring(redis.call('RPUSH', 'SEATA_STATUS_' .. status, xid)); +data[4] = tostring(redis.call('ZREM', REDIS_SEATA_BEGIN_TRANSACTIONS_KEY, globalKey)); +data[5] = previousStatus; +data[6] = previousGmtModified; + +result['success'] = true; +result['status'] = ''; +result['data'] = cjson.encode(data); +return cjson.encode(result); \ No newline at end of file diff --git a/server/src/main/resources/lua/redislocker/acquireRedisLock.lua b/server/src/main/resources/lua/redislocker/acquireRedisLock.lua new file mode 100644 index 00000000000..cb1668cf6e3 --- /dev/null +++ b/server/src/main/resources/lua/redislocker/acquireRedisLock.lua @@ -0,0 +1,98 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: tianyu.li;conghuhu +-- Date: 2022/7/1 + +-- param description +-- ARGV[1] needLockDOs.size() +-- ARGV[2] argSize +-- ARGV[3] needLockXid +-- ARGV[-1] localKeysString +-- KEYS[1 ~ needLockKeys.size()] needLockKeys +-- KEYS[-2] xidLockKey +-- KEYS[-1] branchId + +-- init data +local array = {}; +local result = {}; +local keySize = ARGV[1]; +local argSize = ARGV[2]; +-- Loop through all keys to see if they can be used , when a key is not available, exit +for i = 1, keySize do + local needLockKey = KEYS[i] + -- search lock xid + local existedLockXid = redis.call('HGET', needLockKey, 'xid'); + -- query lockStatus + local status = redis.call('HGET', needLockKey, 'status'); + + -- if a global lock is found in the Rollbacking state,the fail-fast code is returned directly + if (status == '1' or tonumber(status) == 1) + then + result["success"] = false + result['status'] = 'AnotherRollbackIng' + result["data"] = existedLockXid + return cjson.encode(result) + end + + -- if lock xid is nil + if (not existedLockXid) + -- set 'no' mean There is need to store lock information + then + array[i] = 'no' + else + if (existedLockXid ~= ARGV[3]) + then + -- return fail + result['success'] = false + result['status'] = 'AnotherHoldIng' + result["data"] = existedLockXid + return cjson.encode(result) + else + -- set 'yes' mean There is not need to store lock information + array[i] = 'yes' + end + end +end +-- Loop through array +for i = 1, keySize do + -- if is no ,The lock information is stored + if (array[i] == 'no') + then + -- set xid + redis.call('HSET', KEYS[i], 'xid', ARGV[3]); + -- set transactionId + redis.call('HSET', KEYS[i], 'transactionId', ARGV[(i - 1) * 6 + 4]); + -- set branchId + redis.call('HSET', KEYS[i], 'branchId', ARGV[(i - 1) * 6 + 5]); + -- set resourceId + redis.call('HSET', KEYS[i], 'resourceId', ARGV[(i - 1) * 6 + 6]); + -- set tableName + redis.call('HSET', KEYS[i], 'tableName', ARGV[(i - 1) * 6 + 7]); + -- set rowKey + redis.call('HSET', KEYS[i], 'rowKey', ARGV[(i - 1) * 6 + 8]); + -- set pk + redis.call('HSET', KEYS[i], 'pk', ARGV[(i - 1) * 6 + 9]); + -- exit if + end + -- exit for +end +-- set SEATA_GLOBAL_LOCK +redis.call('HSET', KEYS[(keySize + 1)], KEYS[(keySize + 2)], ARGV[(argSize + 0)]); + +-- return success +result['success'] = true +result['status'] = 'GetLock' +result['data'] = ARGV[3] +return cjson.encode(result) diff --git a/server/src/main/resources/lua/redislocker/isLockable.lua b/server/src/main/resources/lua/redislocker/isLockable.lua new file mode 100644 index 00000000000..7325966f276 --- /dev/null +++ b/server/src/main/resources/lua/redislocker/isLockable.lua @@ -0,0 +1,33 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/7 + +-- param description +-- KEYS[1] lockKeys.size() +-- KEYS[2~lockKeys.size()+1] lockKey +-- ARGV[1] xid + +-- init data +local lockKeysSize = tonumber(KEYS[1]); +local xid = tostring(ARGV[1]); +for i = 1, lockKeysSize do + local lockKey = KEYS[i + 1] + local existedXid = redis.call('HGET', lockKey, 'xid') + if (existedXid == nil or xid == tostring(existedXid)) then + return 'true' + end +end +return 'false' \ No newline at end of file diff --git a/server/src/main/resources/lua/redislocker/redislock.lua b/server/src/main/resources/lua/redislocker/redislock.lua deleted file mode 100644 index b004408c965..00000000000 --- a/server/src/main/resources/lua/redislocker/redislock.lua +++ /dev/null @@ -1,52 +0,0 @@ --- --- User: tianyu.li --- Date: 2021/1/19 --- --- init data -local array = {}; local result; local keySize = ARGV[1]; local argSize = ARGV[2]; --- Loop through all keys to see if they can be used , when a key is not available, exit -for i= 1, keySize do - -- search lock xid - result = redis.call('HGET',KEYS[i],'xid'); - -- if lock xid is nil - if (not result) - -- set 'no' mean There is need to store lock information - then array[i]='no' - else - if (result ~= ARGV[3]) - then - -- return fail - return result - else - -- set 'yes' mean There is not need to store lock information - array[i]= 'yes' - end - end -end --- Loop through array -for i =1, keySize do - -- if is no ,The lock information is stored - if(array[i] == 'no') - then - -- set xid - redis.call('HSET',KEYS[i],'xid',ARGV[3]); - -- set transactionId - redis.call('HSET',KEYS[i],'transactionId',ARGV[(i-1)*6+4]); - -- set branchId - redis.call('HSET',KEYS[i],'branchId',ARGV[(i-1)*6+5]); - -- set resourceId - redis.call('HSET',KEYS[i],'resourceId',ARGV[(i-1)*6+6]); - -- set tableName - redis.call('HSET',KEYS[i],'tableName',ARGV[(i-1)*6+7]); - -- set rowKey - redis.call('HSET',KEYS[i],'rowKey',ARGV[(i-1)*6+8]); - -- set pk - redis.call('HSET',KEYS[i],'pk',ARGV[(i-1)*6+9]); - -- exit if - end --- exit for -end --- set SEATA_GLOBAL_LOCK -redis.call('HSET',KEYS[(keySize+1)],KEYS[(keySize+2)],ARGV[(argSize+0)]); --- return success -return ARGV[3] diff --git a/server/src/main/resources/lua/redislocker/releaseRedisLock.lua b/server/src/main/resources/lua/redislocker/releaseRedisLock.lua new file mode 100644 index 00000000000..72176dcdd52 --- /dev/null +++ b/server/src/main/resources/lua/redislocker/releaseRedisLock.lua @@ -0,0 +1,117 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/7 + +-- param description +-- KEYS[1] xidLockKey +-- KEYS[2] branchId + +-- init data +local xidLockKey = KEYS[1]; +local branchId = KEYS[2]; + +local rowKeys = {} + +-- get table length +local function table_len(t) + local len = 0 + for _, _ in pairs(t) do + len = len + 1 + end + return len; +end + +-- split +local function split(target, sep) + local str = tostring(target) + local separator = tostring(sep) + local strB, arrayIndex = 1, 1 + local targetArray = {} + if (separator == nil) + then + return false + end + local condition = true + while (condition) + do + local si, sd = string.find(str, separator, strB) + if (si) + then + targetArray[arrayIndex] = string.sub(str, strB, si - 1) + arrayIndex = arrayIndex + 1 + strB = sd + 1 + else + targetArray[arrayIndex] = string.sub(str, strB, string.len(str)) + condition = false + end + end + return targetArray +end + +-- start +if (not branchId) +then + local rowKeyMap = redis.call('HGETALL', xidLockKey) + for i = 1, table_len(rowKeyMap) do + if (i % 2 == 0) + then + rowKeys[i / 2] = rowKeyMap[i] + end + end +else + local rowKey = redis.call('HGET', xidLockKey, branchId) + rowKeys[1] = rowKey +end + +if (table_len(rowKeys) == 0) +-- rowKeys is empty +then + return true +end + +if (not branchId) +-- branchId is null +then + redis.call('DEL', xidLockKey) +else + redis.call('HDEL', xidLockKey, branchId) +end + +for _, value in pairs(rowKeys) do + local rowKeyStr = tostring(value) + if (string.len(rowKeyStr) == 0) + -- rowKeyStr is empty + then + return true + end + + local start, _ = string.find(rowKeyStr, ';') + if (start) + -- rowKeyStr contains ';' + then + local keys = split(rowKeyStr, ';') + redis.call('DEL', unpack(keys)) + else + redis.call('DEL', rowKeyStr) + end +end + +return true + + + + + diff --git a/server/src/main/resources/lua/redislocker/updateLockStatus.lua b/server/src/main/resources/lua/redislocker/updateLockStatus.lua new file mode 100644 index 00000000000..d3170d33958 --- /dev/null +++ b/server/src/main/resources/lua/redislocker/updateLockStatus.lua @@ -0,0 +1,82 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/7 + +-- param description +-- KEYS[1] xidLockKey +-- KEYS[2] status +-- ARGV[1] code + +-- init data +local xidLockKey = KEYS[1]; +local status = KEYS[2]; +local code = ARGV[1]; + +-- get table length +local function table_len(t) + local len = 0 + for _, _ in pairs(t) do + len = len + 1 + end + return len; +end + +-- split +local function split(target, sep) + local str = tostring(target) + local separator = tostring(sep) + local strB, arrayIndex = 1, 1 + local targetArray = {} + if (separator == nil) + then + return false + end + local condition = true + while (condition) + do + local si, sd = string.find(str, separator, strB) + if (si) + then + targetArray[arrayIndex] = string.sub(str, strB, si - 1) + arrayIndex = arrayIndex + 1 + strB = sd + 1 + else + targetArray[arrayIndex] = string.sub(str, strB, string.len(str)) + condition = false + end + end + return targetArray +end + +local branchAndLockKeys = redis.call('HGETALL', xidLockKey) +for i = 1, table_len(branchAndLockKeys) do + if (i % 2 == 0) + then + local k = tostring(branchAndLockKeys[i]) + local start, _ = string.find(k, ';') + if (start) + -- k contains ';' + then + local keys = split(k, ';') + for _, key in pairs(keys) + do + redis.call('HSET', key, status, code) + end + else + redis.call('HSET', k, status, code) + end + end +end \ No newline at end of file diff --git a/server/src/test/java/io/seata/server/lock/redis/RedisLockManagerTest.java b/server/src/test/java/io/seata/server/lock/redis/RedisLockManagerTest.java index 4c629aad41a..32502f815db 100644 --- a/server/src/test/java/io/seata/server/lock/redis/RedisLockManagerTest.java +++ b/server/src/test/java/io/seata/server/lock/redis/RedisLockManagerTest.java @@ -15,14 +15,16 @@ */ package io.seata.server.lock.redis; +import io.seata.common.exception.StoreException; import java.io.IOException; -import com.github.microwww.redis.RedisServer; import io.seata.core.exception.TransactionException; import io.seata.core.lock.Locker; +import io.seata.core.model.LockStatus; import io.seata.server.lock.LockManager; import io.seata.server.session.BranchSession; import io.seata.server.session.redis.MockRedisServer; +import io.seata.server.storage.redis.JedisPooledFactory; import io.seata.server.storage.redis.lock.RedisLockManager; import io.seata.server.storage.redis.lock.RedisLocker; import org.junit.jupiter.api.Assertions; @@ -30,39 +32,78 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; /** * @author funkye + * @author conghuhu */ @SpringBootTest public class RedisLockManagerTest { static LockManager lockManager = null; + static Jedis jedis = null; + + /** + * because of mock redis server can not run lua script, + * if you want to test lua mode, please modify application.yaml and config your redis instance info. + * + * @param context + * @throws IOException + */ @BeforeAll public static void start(ApplicationContext context) throws IOException { MockRedisServer.getInstance(); + JedisPoolConfig poolConfig = new JedisPoolConfig(); + poolConfig.setMinIdle(1); + poolConfig.setMaxIdle(10); + JedisPooledFactory.getJedisPoolInstance(new JedisPool(poolConfig, "127.0.0.1", 6789, 60000)).getResource(); lockManager = new RedisLockManagerForTest(); } @Test public void acquireLock() throws TransactionException { - BranchSession branchSession = new BranchSession(); - branchSession.setXid("abc-123:786756"); - branchSession.setTransactionId(123543465); - branchSession.setBranchId(5756678); - branchSession.setResourceId("abcss"); - branchSession.setLockKey("t1:13,14;t2:11,12"); + BranchSession branchSession = getBranchSession(); Assertions.assertTrue(lockManager.acquireLock(branchSession)); + Assertions.assertTrue(lockManager.releaseLock(branchSession)); + } + + /** + * test in lua mode, a global lock is found in the Rollbacking state, fast failure + */ + @Test + public void acquireLockByLuaFastFailure() throws TransactionException { + BranchSession branchLockSession = getBranchSession(); + Assertions.assertTrue(lockManager.acquireLock(branchLockSession)); + lockManager.updateLockStatus(branchLockSession.getXid(), LockStatus.Rollbacking); + + BranchSession branchSession = getBranchSession(); + Assertions.assertThrows(StoreException.class, () -> { + lockManager.acquireLock(branchSession, false, false); + }); + Assertions.assertTrue(lockManager.releaseLock(branchLockSession)); + } + + /** + * test in lua mode, other hold the lock + */ + @Test + public void acquireLockByLuaHolding() throws TransactionException { + BranchSession branchLockSession = getBranchSession(); + Assertions.assertTrue(lockManager.acquireLock(branchLockSession)); + + BranchSession branchSession = getBranchSession(); + branchSession.setXid("abc-123:786754"); + + Assertions.assertFalse(lockManager.acquireLock(branchSession)); + Assertions.assertTrue(lockManager.releaseLock(branchLockSession)); } @Test public void unLock() throws TransactionException { - BranchSession branchSession = new BranchSession(); - branchSession.setXid("abc-123:56867"); - branchSession.setTransactionId(1236765); - branchSession.setBranchId(204565); - branchSession.setResourceId("abcss"); - branchSession.setLockKey("t1:3,4;t2:4,5"); + BranchSession branchSession = getBranchSession(); Assertions.assertTrue(lockManager.releaseLock(branchSession)); } @@ -83,16 +124,35 @@ public void isLockable() throws TransactionException { branchSession2.setLockKey("t1:8"); Assertions.assertTrue(lockManager.isLockable(branchSession2.getXid(), branchSession2.getResourceId(), branchSession2.getLockKey())); + Assertions.assertTrue(lockManager.releaseLock(branchSession)); + } + + @Test + public void updateLockStatus() throws TransactionException { + BranchSession branchSession = getBranchSession(); + Assertions.assertTrue(lockManager.acquireLock(branchSession)); + lockManager.updateLockStatus(branchSession.getXid(), LockStatus.Rollbacking); + Assertions.assertTrue(lockManager.releaseLock(branchSession)); } public static class RedisLockManagerForTest extends RedisLockManager { - public RedisLockManagerForTest() {} + public RedisLockManagerForTest() { + } @Override public Locker getLocker(BranchSession branchSession) { - return new RedisLocker(); } } + + private BranchSession getBranchSession() { + BranchSession branchSession = new BranchSession(); + branchSession.setXid("abc-123:786756"); + branchSession.setTransactionId(123543465); + branchSession.setBranchId(5756678); + branchSession.setResourceId("abcss"); + branchSession.setLockKey("t1:13,14;t2:11,12"); + return branchSession; + } } diff --git a/server/src/test/java/io/seata/server/lock/redis/RedisLuaLockManagerTest.java b/server/src/test/java/io/seata/server/lock/redis/RedisLuaLockManagerTest.java new file mode 100644 index 00000000000..525f94c7c28 --- /dev/null +++ b/server/src/test/java/io/seata/server/lock/redis/RedisLuaLockManagerTest.java @@ -0,0 +1,65 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.lock.redis; + +import java.io.IOException; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.core.lock.Locker; +import io.seata.server.session.BranchSession; +import io.seata.server.session.redis.MockRedisServer; +import io.seata.server.storage.redis.lock.RedisLockManager; +import io.seata.server.storage.redis.lock.RedisLuaLocker; + +import org.junit.jupiter.api.BeforeAll; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; + +/** + * RedisLocker use lua script + * + * @author conghuhu + */ +@SpringBootTest +public class RedisLuaLockManagerTest extends RedisLockManagerTest { + + /** + * because of mock redis server can not run lua script, + * if you want to test lua mode, please modify application.yaml and config your redis instance info. + * store.redis.type = lua + * + * @param context + * @throws IOException + */ + @BeforeAll + public static void start(ApplicationContext context) throws IOException { + MockRedisServer.getInstance(); + EnhancedServiceLoader.unloadAll(); + lockManager = new RedisLuaLockManagerTest.RedisLockManagerForTest(); + } + + + public static class RedisLockManagerForTest extends RedisLockManager { + + public RedisLockManagerForTest() { + } + + @Override + public Locker getLocker(BranchSession branchSession) { + return new RedisLuaLocker(); + } + } +} diff --git a/server/src/test/java/io/seata/server/session/redis/MockRedisServer.java b/server/src/test/java/io/seata/server/session/redis/MockRedisServer.java index 567b04471de..11642136b88 100644 --- a/server/src/test/java/io/seata/server/session/redis/MockRedisServer.java +++ b/server/src/test/java/io/seata/server/session/redis/MockRedisServer.java @@ -46,12 +46,12 @@ public class MockRedisServer { })); } - private static class Instance { - private static final MockRedisServer mockredis = new MockRedisServer(); - } - public static MockRedisServer getInstance() { return Instance.mockredis; } + private static class Instance { + private static final MockRedisServer mockredis = new MockRedisServer(); + } + } diff --git a/server/src/test/java/io/seata/server/session/redis/RedisDistributedLockerTest.java b/server/src/test/java/io/seata/server/session/redis/RedisDistributedLockerTest.java index 331c536ed79..ccb0c3496d3 100644 --- a/server/src/test/java/io/seata/server/session/redis/RedisDistributedLockerTest.java +++ b/server/src/test/java/io/seata/server/session/redis/RedisDistributedLockerTest.java @@ -59,6 +59,14 @@ public static void start(ApplicationContext context) throws IOException { jedis = JedisPooledFactory.getJedisInstance(); } + @AfterAll + public static void after() throws IOException { + EnhancedServiceLoader.unload(DistributedLocker.class); + DistributedLockerFactory.cleanLocker(); + DistributedLockerFactory.getDistributedLocker(StoreMode.FILE.getName()); + jedis.close(); + } + @Test public void test_acquireScheduledLock_success() { boolean acquire = distributedLocker.acquireLock(new DistributedLockDO(retryRollbacking, lockValue, 60000L)); @@ -132,12 +140,4 @@ public void test_acquireLock_false() { Assertions.assertFalse(acquire); } - @AfterAll - public static void after() throws IOException { - EnhancedServiceLoader.unload(DistributedLocker.class); - DistributedLockerFactory.cleanLocker(); - DistributedLockerFactory.getDistributedLocker(StoreMode.FILE.getName()); - jedis.close(); - } - } diff --git a/server/src/test/java/io/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java b/server/src/test/java/io/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java new file mode 100644 index 00000000000..9283c246fc1 --- /dev/null +++ b/server/src/test/java/io/seata/server/session/redis/RedisLuaTransactionStoreManagerTest.java @@ -0,0 +1,54 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.server.session.redis; + +import java.io.IOException; + +import io.seata.common.loader.EnhancedServiceLoader; +import io.seata.server.storage.redis.session.RedisSessionManager; +import io.seata.server.storage.redis.store.RedisLuaTransactionStoreManager; + +import org.junit.jupiter.api.BeforeAll; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; + +/** + * test RedisLuaTransactionStoreManager + * + * @author conghuhu + */ +@SpringBootTest +public class RedisLuaTransactionStoreManagerTest extends RedisTransactionStoreManagerTest { + + /** + * because of mock redis server can not run lua script, + * if you want to test lua mode, please modify application.yaml and config your redis instance info. + * store.redis.type = lua + * + * @param context + * @throws IOException + */ + @BeforeAll + public static void start(ApplicationContext context) throws IOException { + MockRedisServer.getInstance(); + EnhancedServiceLoader.unloadAll(); + redisTransactionStoreManager = new RedisLuaTransactionStoreManager(); + RedisSessionManager redisSessionManager = new RedisSessionManager(); + redisSessionManager.setTransactionStoreManager(redisTransactionStoreManager); + sessionManager = redisSessionManager; + } + +} diff --git a/server/src/test/java/io/seata/server/session/redis/RedisSessionManagerTest.java b/server/src/test/java/io/seata/server/session/redis/RedisSessionManagerTest.java index 4a8a2d3ef32..883d749688b 100644 --- a/server/src/test/java/io/seata/server/session/redis/RedisSessionManagerTest.java +++ b/server/src/test/java/io/seata/server/session/redis/RedisSessionManagerTest.java @@ -36,9 +36,12 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; + import static io.seata.common.DefaultValues.DEFAULT_TX_GROUP; /** @@ -46,6 +49,8 @@ */ @SpringBootTest public class RedisSessionManagerTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(RedisSessionManagerTest.class); private static SessionManager sessionManager = null; @BeforeAll @@ -83,8 +88,7 @@ public void test_updateGlobalSessionStatus() throws TransactionException { session.setApplicationData("abc=878s"); session.setStatus(GlobalStatus.Begin); sessionManager.addGlobalSession(session); - session.setStatus(GlobalStatus.Committing); - sessionManager.updateGlobalSessionStatus(session,GlobalStatus.Committing); + sessionManager.updateGlobalSessionStatus(session, GlobalStatus.Committing); } @Test @@ -135,9 +139,9 @@ public void test_addBranchSession() throws TransactionException { branchSession.setBranchType(BranchType.AT); branchSession.setApplicationData("{\"data\":\"test\"}"); branchSession.setClientId("storage-server:192.168.158.80:11934"); - sessionManager.addBranchSession(globalSession,branchSession); + sessionManager.addBranchSession(globalSession, branchSession); - sessionManager.removeBranchSession(globalSession,branchSession); + sessionManager.removeBranchSession(globalSession, branchSession); sessionManager.removeGlobalSession(globalSession); } @@ -167,7 +171,7 @@ public void test_updateBranchSessionStatus() throws Exception { branchSession.setStatus(BranchStatus.PhaseOne_Timeout); sessionManager.updateBranchSessionStatus(branchSession, BranchStatus.PhaseOne_Timeout); - sessionManager.removeBranchSession(globalSession,branchSession); + sessionManager.removeBranchSession(globalSession, branchSession); sessionManager.removeGlobalSession(globalSession); } @@ -195,13 +199,13 @@ public void testReadSession() throws TransactionException { sessionManager.addBranchSession(session, branchSession); GlobalSession globalSession = sessionManager.findGlobalSession(xid); - Assertions.assertEquals(session.getXid(),globalSession.getXid()); - Assertions.assertEquals(session.getTransactionId(),globalSession.getTransactionId()); - Assertions.assertEquals(branchSession.getXid(),globalSession.getBranchSessions().get(0).getXid()); - Assertions.assertEquals(branchSession.getBranchId(),globalSession.getBranchSessions().get(0).getBranchId()); - Assertions.assertEquals(branchSession.getClientId(),globalSession.getBranchSessions().get(0).getClientId()); + Assertions.assertEquals(session.getXid(), globalSession.getXid()); + Assertions.assertEquals(session.getTransactionId(), globalSession.getTransactionId()); + Assertions.assertEquals(branchSession.getXid(), globalSession.getBranchSessions().get(0).getXid()); + Assertions.assertEquals(branchSession.getBranchId(), globalSession.getBranchSessions().get(0).getBranchId()); + Assertions.assertEquals(branchSession.getClientId(), globalSession.getBranchSessions().get(0).getClientId()); - sessionManager.removeBranchSession(globalSession,branchSession); + sessionManager.removeBranchSession(globalSession, branchSession); sessionManager.removeGlobalSession(globalSession); } @@ -232,26 +236,26 @@ public void testReadSessionWithCondition() throws TransactionException { condition.setXid(xid); List globalSessions = sessionManager.findGlobalSessions(condition); - Assertions.assertEquals(session.getXid(),globalSessions.get(0).getXid()); - Assertions.assertEquals(session.getTransactionId(),globalSessions.get(0).getTransactionId()); - Assertions.assertEquals(branchSession.getXid(),globalSessions.get(0).getBranchSessions().get(0).getXid()); - Assertions.assertEquals(branchSession.getBranchId(),globalSessions.get(0).getBranchSessions().get(0).getBranchId()); - Assertions.assertEquals(branchSession.getClientId(),globalSessions.get(0).getBranchSessions().get(0).getClientId()); + Assertions.assertEquals(session.getXid(), globalSessions.get(0).getXid()); + Assertions.assertEquals(session.getTransactionId(), globalSessions.get(0).getTransactionId()); + Assertions.assertEquals(branchSession.getXid(), globalSessions.get(0).getBranchSessions().get(0).getXid()); + Assertions.assertEquals(branchSession.getBranchId(), globalSessions.get(0).getBranchSessions().get(0).getBranchId()); + Assertions.assertEquals(branchSession.getClientId(), globalSessions.get(0).getBranchSessions().get(0).getClientId()); condition.setXid(null); condition.setTransactionId(session.getTransactionId()); globalSessions = sessionManager.findGlobalSessions(condition); - Assertions.assertEquals(session.getXid(),globalSessions.get(0).getXid()); - Assertions.assertEquals(session.getTransactionId(),globalSessions.get(0).getTransactionId()); - Assertions.assertEquals(branchSession.getXid(),globalSessions.get(0).getBranchSessions().get(0).getXid()); - Assertions.assertEquals(branchSession.getBranchId(),globalSessions.get(0).getBranchSessions().get(0).getBranchId()); - Assertions.assertEquals(branchSession.getClientId(),globalSessions.get(0).getBranchSessions().get(0).getClientId()); + Assertions.assertEquals(session.getXid(), globalSessions.get(0).getXid()); + Assertions.assertEquals(session.getTransactionId(), globalSessions.get(0).getTransactionId()); + Assertions.assertEquals(branchSession.getXid(), globalSessions.get(0).getBranchSessions().get(0).getXid()); + Assertions.assertEquals(branchSession.getBranchId(), globalSessions.get(0).getBranchSessions().get(0).getBranchId()); + Assertions.assertEquals(branchSession.getClientId(), globalSessions.get(0).getBranchSessions().get(0).getClientId()); condition.setTransactionId(null); globalSessions = sessionManager.findGlobalSessions(condition); Assertions.assertNull(globalSessions); - sessionManager.removeBranchSession(session,branchSession); + sessionManager.removeBranchSession(session, branchSession); sessionManager.removeGlobalSession(session); } @@ -287,7 +291,7 @@ public void testReadSessionWithConditionStatus() throws TransactionException { condition.setStatuses(statuses); sessionManager.findGlobalSessions(condition); - sessionManager.removeBranchSession(session,branchSession); + sessionManager.removeBranchSession(session, branchSession); sessionManager.removeGlobalSession(session); } @@ -322,12 +326,12 @@ public void testReadSessionWithBranch() throws TransactionException, NoSuchField branchSessions.setAccessible(true); Assertions.assertTrue(CollectionUtils.isEmpty((List)branchSessions.get(globalSession))); - globalSession = sessionManager.findGlobalSession(xid,true); - Assertions.assertEquals(branchSession.getXid(),globalSession.getBranchSessions().get(0).getXid()); - Assertions.assertEquals(branchSession.getBranchId(),globalSession.getBranchSessions().get(0).getBranchId()); - Assertions.assertEquals(branchSession.getClientId(),globalSession.getBranchSessions().get(0).getClientId()); + globalSession = sessionManager.findGlobalSession(xid, true); + Assertions.assertEquals(branchSession.getXid(), globalSession.getBranchSessions().get(0).getXid()); + Assertions.assertEquals(branchSession.getBranchId(), globalSession.getBranchSessions().get(0).getBranchId()); + Assertions.assertEquals(branchSession.getClientId(), globalSession.getBranchSessions().get(0).getClientId()); - sessionManager.removeBranchSession(session,branchSession); + sessionManager.removeBranchSession(session, branchSession); sessionManager.removeGlobalSession(session); } diff --git a/server/src/test/java/io/seata/server/session/redis/RedisTransactionStoreManagerTest.java b/server/src/test/java/io/seata/server/session/redis/RedisTransactionStoreManagerTest.java index a4b8d85abee..ab17a0d6cb7 100644 --- a/server/src/test/java/io/seata/server/session/redis/RedisTransactionStoreManagerTest.java +++ b/server/src/test/java/io/seata/server/session/redis/RedisTransactionStoreManagerTest.java @@ -20,7 +20,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import io.seata.common.XID; import io.seata.common.exception.RedisException; import io.seata.common.loader.EnhancedServiceLoader; @@ -46,11 +45,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import redis.clients.jedis.Jedis; -import redis.clients.jedis.Pipeline; - import static io.seata.server.storage.SessionConverter.convertToGlobalSessionVo; - /** * @author doubleDimple */ @@ -59,8 +55,8 @@ public class RedisTransactionStoreManagerTest { private static final Logger LOGGER = LoggerFactory.getLogger(RedisTransactionStoreManagerTest.class); - private static volatile RedisTransactionStoreManager redisTransactionStoreManager = null; - private static volatile SessionManager sessionManager = null; + static RedisTransactionStoreManager redisTransactionStoreManager = null; + static SessionManager sessionManager = null; @BeforeAll public static void start(ApplicationContext context) throws IOException { @@ -73,6 +69,11 @@ public static void start(ApplicationContext context) throws IOException { sessionManager = redisSessionManager; } + @AfterAll + public static void close(){ + redisTransactionStoreManager=null; + } + @Test public synchronized void testBeginSortByTimeoutQuery() throws TransactionException, InterruptedException { GlobalSession session1 = GlobalSession.createGlobalSession("test1", "test2", "test001", 500); @@ -90,6 +91,7 @@ public synchronized void testBeginSortByTimeoutQuery() throws TransactionExcepti session2.setApplicationData("abc1=878s2"); session2.setStatus(GlobalStatus.Begin); SessionCondition sessionCondition = new SessionCondition(GlobalStatus.Begin); + JedisPooledFactory.getJedisInstance().flushAll(); sessionManager.addGlobalSession(session1); sessionManager.addGlobalSession(session2); List list = sessionManager.findGlobalSessions(sessionCondition); @@ -111,6 +113,55 @@ public synchronized void testBeginSortByTimeoutQuery() throws TransactionExcepti } } + @Test + public void testInsertGlobalLockData() { + String GLOBAL_LOCK_KEY = "SEATA_GLOBAL_LOCK_192.168.158.80:8091:37621364385185792"; + String ROW_LOCK_KEY = "SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-order^^^order^^^2188"; + Map globallockMap = new HashMap<>(); + globallockMap.put("137621367686103001", "SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-order^^^order^^^2188;SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-storage^^^storage^^^1"); + globallockMap.put("237621367686103002", "SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-storage^^^storage^^^1"); + GlobalLockVO globalLockVO = new GlobalLockVO(); + globalLockVO.setXid("192.168.158.80:8091:37621364385185792"); + globalLockVO.setTransactionId(37621364385185792L); + globalLockVO.setBranchId(37621367686103000L); + globalLockVO.setResourceId("jdbc:mysql://116.62.62.26/seata-order"); + globalLockVO.setTableName("order"); + globalLockVO.setPk("2188"); + globalLockVO.setRowKey("jdbc:mysql://116.62.62.26/seata-order^^^order^^^2188"); + globalLockVO.setGmtCreate(System.currentTimeMillis()); + globalLockVO.setGmtModified(System.currentTimeMillis()); + try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { + jedis.hmset(GLOBAL_LOCK_KEY, globallockMap); + jedis.hmset(ROW_LOCK_KEY, BeanUtils.objectToMap(globalLockVO)); + } catch (Exception ex) { + throw new RedisException(ex); + } + } + + @Test + public void testQueryGlobalslSession() { + Long count = redisTransactionStoreManager.countByGlobalSessions(GlobalStatus.values()); + LOGGER.info("the count is:[{}]", count); + } + + @Test + public void testreadisQuery() { + GlobalSessionParam param = new GlobalSessionParam(); + param.setPageNum(0); + param.setPageSize(5); + param.setWithBranch(false); + List globalSessionKeys = redisTransactionStoreManager.findGlobalSessionByPage(param.getPageNum(), param.getPageSize(), param.isWithBranch()); + LOGGER.info("the result size is:[{}]", globalSessionKeys.size()); + LOGGER.info("the globalSessionKeys is:[{}]", globalSessionKeys); + } + + @Test + public void testLimitAllSessions() { + redisTransactionStoreManager.setLogQueryLimit(20); + List globalSessions = redisTransactionStoreManager.readSession(GlobalStatus.values(), true); + LOGGER.info("the limit All Sessions result is:[{}]", globalSessions); + } + @Test public synchronized void testInsertGlobalSessionDataAndQuery() throws TransactionException { GlobalSession session = GlobalSession.createGlobalSession("test", "test", "test123", 100); @@ -172,41 +223,41 @@ public synchronized void testInsertGlobalSessionDataAndQuery() throws Transactio //third: setLogQueryLimit < totalCount redisTransactionStoreManager.setLogQueryLimit(3); List globalSessions = redisTransactionStoreManager.readSession(GlobalStatus.values(), false); - LOGGER.info("the limit Sessions result is:[{}]",globalSessions); - LOGGER.info("the limit Sessions result size is:[{}]",globalSessions.size()); + LOGGER.info("the limit Sessions result is:[{}]", globalSessions); + LOGGER.info("the limit Sessions result size is:[{}]", globalSessions.size()); //first page final List globalSessions1 = redisTransactionStoreManager.findGlobalSessionByPage(1, 2, true); List result = new ArrayList<>(); - convertToGlobalSessionVo(result,globalSessions1); - LOGGER.info("the first page result is:[{}]",result); - LOGGER.info("the first page result size is:[{}]",result.size()); + convertToGlobalSessionVo(result, globalSessions1); + LOGGER.info("the first page result is:[{}]", result); + LOGGER.info("the first page result size is:[{}]", result.size()); //second page final List globalSessions2 = redisTransactionStoreManager.findGlobalSessionByPage(2, 2, true); List result1 = new ArrayList<>(); - convertToGlobalSessionVo(result1,globalSessions2); - LOGGER.info("the second page result is:[{}]",result1); - LOGGER.info("the second page result size is:[{}]",result1.size()); + convertToGlobalSessionVo(result1, globalSessions2); + LOGGER.info("the second page result is:[{}]", result1); + LOGGER.info("the second page result size is:[{}]", result1.size()); //third page final List globalSessions3 = redisTransactionStoreManager.findGlobalSessionByPage(3, 2, true); List result2 = new ArrayList<>(); - convertToGlobalSessionVo(result2,globalSessions3); - LOGGER.info("the third page result is:[{}]",result2); - LOGGER.info("the third page result size is:[{}]",result2.size()); + convertToGlobalSessionVo(result2, globalSessions3); + LOGGER.info("the third page result is:[{}]", result2); + LOGGER.info("the third page result size is:[{}]", result2.size()); final List globalSessions4 = redisTransactionStoreManager.findGlobalSessionByPage(1, 5, true); List result3 = new ArrayList<>(); - convertToGlobalSessionVo(result3,globalSessions4); - LOGGER.info("the All page result is:[{}]",result3); - LOGGER.info("the All page result size is:[{}]",result3.size()); + convertToGlobalSessionVo(result3, globalSessions4); + LOGGER.info("the All page result is:[{}]", result3); + LOGGER.info("the All page result size is:[{}]", result3.size()); final List globalSessions5 = redisTransactionStoreManager.findGlobalSessionByPage(4, 2, true); List result4 = new ArrayList<>(); - convertToGlobalSessionVo(result3,globalSessions5); - LOGGER.info("the four page result is:[{}]",result4); - LOGGER.info("the four page result size is:[{}]",result4.size()); + convertToGlobalSessionVo(result3, globalSessions5); + LOGGER.info("the four page result is:[{}]", result4); + LOGGER.info("the four page result size is:[{}]", result4.size()); // test statusByPage GlobalSessionParam param = new GlobalSessionParam(); @@ -224,58 +275,4 @@ public synchronized void testInsertGlobalSessionDataAndQuery() throws Transactio sessionManager.removeGlobalSession(session); } - @Test - public void testInsertGlobalLockData() { - String GLOBAL_LOCK_KEY = "SEATA_GLOBAL_LOCK_192.168.158.80:8091:37621364385185792"; - String ROW_LOCK_KEY = "SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-order^^^order^^^2188"; - Map globallockMap = new HashMap<>(); - globallockMap.put("137621367686103001","SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-order^^^order^^^2188;SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-storage^^^storage^^^1"); - globallockMap.put("237621367686103002","SEATA_ROW_LOCK_jdbc:mysql://116.62.62.26/seata-storage^^^storage^^^1"); - GlobalLockVO globalLockVO = new GlobalLockVO(); - globalLockVO.setXid("192.168.158.80:8091:37621364385185792"); - globalLockVO.setTransactionId(37621364385185792L); - globalLockVO.setBranchId(37621367686103000L); - globalLockVO.setResourceId("jdbc:mysql://116.62.62.26/seata-order"); - globalLockVO.setTableName("order"); - globalLockVO.setPk("2188"); - globalLockVO.setRowKey("jdbc:mysql://116.62.62.26/seata-order^^^order^^^2188"); - globalLockVO.setGmtCreate(System.currentTimeMillis()); - globalLockVO.setGmtModified(System.currentTimeMillis()); - try (Jedis jedis = JedisPooledFactory.getJedisInstance()) { - jedis.hmset(GLOBAL_LOCK_KEY,globallockMap); - jedis.hmset(ROW_LOCK_KEY,BeanUtils.objectToMap(globalLockVO)); - } catch (Exception ex) { - throw new RedisException(ex); - } - } - - @Test - public void testQueryGlobalslSession() { - Long count = redisTransactionStoreManager.countByGlobalSessions(GlobalStatus.values()); - LOGGER.info("the count is:[{}]",count); - } - - @Test - public void testreadisQuery() { - GlobalSessionParam param = new GlobalSessionParam(); - param.setPageNum(0); - param.setPageSize(5); - param.setWithBranch(false); - List globalSessionKeys = redisTransactionStoreManager.findGlobalSessionByPage(param.getPageNum(), param.getPageSize(), param.isWithBranch()); - LOGGER.info("the result size is:[{}]",globalSessionKeys.size()); - LOGGER.info("the globalSessionKeys is:[{}]",globalSessionKeys); - } - - @Test - public void testLimitAllSessions() { - redisTransactionStoreManager.setLogQueryLimit(20); - List globalSessions = redisTransactionStoreManager.readSession(GlobalStatus.values(), true); - LOGGER.info("the limit All Sessions result is:[{}]",globalSessions); - } - - @AfterAll - public static void close(){ - redisTransactionStoreManager=null; - } - } diff --git a/server/src/test/resources/lua/redisStore/deleteTransactionDO.lua b/server/src/test/resources/lua/redisStore/deleteTransactionDO.lua new file mode 100644 index 00000000000..a689bb4ab92 --- /dev/null +++ b/server/src/test/resources/lua/redisStore/deleteTransactionDO.lua @@ -0,0 +1,48 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/25 + +-- param description +-- KEYS[1] branchOrGlobalKey +-- KEYS[2] listKey +-- KEYS[3~-1] transactionDOMap.keys +-- ARGV[1] type: global or branch +-- ARGV[2] transactionDOMap.size() +-- ARGV[3~-1] transactionDOMap.values +-- ARGV[-1] xid only type is global + +-- init data +local branchOrGlobalKey = KEYS[1]; +local listKey = KEYS[2]; +local redisKeyXID = KEYS[3]; +local type = ARGV[1]; + +local existedXid = redis.call('HGET', branchOrGlobalKey, redisKeyXID); + +if (not existedXid or string.len(tostring(existedXid)) == 0) +then + return 'true'; +end + +if (type == 'branch') then + redis.call('LREM', listKey, 0, branchOrGlobalKey); +elseif (type == 'global') then + local xid = ARGV[2]; + redis.call('LREM', listKey, 0, xid); +end + +redis.call('DEL', branchOrGlobalKey); +return 'true'; diff --git a/server/src/test/resources/lua/redisStore/insertTransactionDO.lua b/server/src/test/resources/lua/redisStore/insertTransactionDO.lua new file mode 100644 index 00000000000..8c2c3cbc858 --- /dev/null +++ b/server/src/test/resources/lua/redisStore/insertTransactionDO.lua @@ -0,0 +1,44 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/25 + +-- param description +-- KEYS[1] branchOrGlobalKey +-- KEYS[2] listKey +-- KEYS[3~-1] transactionDOMap.keys +-- ARGV[1] type: global or branch +-- ARGV[2] transactionDOMap.size() +-- ARGV[3~-1] transactionDOMap.values +-- ARGV[-1] xid only type is global + +-- init data +local branchOrGlobalKey = KEYS[1]; +local listKey = KEYS[2]; +local type = ARGV[1]; +local keySize = tonumber(ARGV[2]); + +for i = 1, keySize do + redis.call('HSET', branchOrGlobalKey, KEYS[i + 2], ARGV[i + 2]); +end + +if type == 'branch' then + redis.call('RPUSH', listKey, branchOrGlobalKey); +elseif type == 'global' then + redis.call('RPUSH', listKey, ARGV[keySize + 3]); +end + +return 'true'; + diff --git a/server/src/test/resources/lua/redisStore/rollbackGlobalTransactionDO.lua b/server/src/test/resources/lua/redisStore/rollbackGlobalTransactionDO.lua new file mode 100644 index 00000000000..5e6c4a6a057 --- /dev/null +++ b/server/src/test/resources/lua/redisStore/rollbackGlobalTransactionDO.lua @@ -0,0 +1,57 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/27 + +-- param description +-- KEYS[1] globalKey +-- KEYS[2] REDIS_KEY_GLOBAL_XID +-- KEYS[3] REDIS_KEY_GLOBAL_STATUS +-- KEYS[4] REDIS_KEY_GLOBAL_GMT_MODIFIED +-- KEYS[5] status +-- ARGV[1] previousStatus +-- ARGV[2] previousGmtModified +-- ARGV[3] xid +-- ARGV[4] hmset +-- ARGV[5] lrem +-- ARGV[6] rpush + +-- init data +local globalKey = KEYS[1]; +local REDIS_KEY_GLOBAL_XID = KEYS[2]; +local REDIS_KEY_GLOBAL_STATUS = KEYS[3]; +local REDIS_KEY_GLOBAL_GMT_MODIFIED = KEYS[4]; +local status = KEYS[5]; +local previousStatus = ARGV[1]; +local previousGmtModified = ARGV[2]; +local xid = ARGV[3]; +local hmset = ARGV[4]; +local lrem = ARGV[5]; +local rpush = ARGV[6]; + +if string.upper(hmset) == "OK" then + local xid2 = redis.call('HGET', globalKey, REDIS_KEY_GLOBAL_XID); + if (xid2 and string.len(tostring(xid2)) ~= 0) then + redis.call('HMSET', globalKey, REDIS_KEY_GLOBAL_STATUS, previousStatus, REDIS_KEY_GLOBAL_GMT_MODIFIED, previousGmtModified); + end +end + +if tonumber(lrem) > 0 then + redis.call('RPUSH', 'SEATA_STATUS_' .. previousStatus, xid); +end + +if tonumber(rpush) then + redis.call('LREM', 'SEATA_STATUS_' .. status, 0, xid); +end \ No newline at end of file diff --git a/server/src/test/resources/lua/redisStore/updateBranchTransactionDO.lua b/server/src/test/resources/lua/redisStore/updateBranchTransactionDO.lua new file mode 100644 index 00000000000..24e3083cde8 --- /dev/null +++ b/server/src/test/resources/lua/redisStore/updateBranchTransactionDO.lua @@ -0,0 +1,55 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/27 + +-- param description +-- KEYS[1] branchKey +-- KEYS[2] REDIS_KEY_BRANCH_STATUS +-- KEYS[3] REDIS_KEY_BRANCH_GMT_MODIFIED +-- KEYS[4] REDIS_KEY_BRANCH_APPLICATION_DATA +-- ARGV[1] branchStatus +-- ARGV[2] nowTime +-- ARGV[3] applicationData + +-- init data +local branchKey = KEYS[1]; +local REDIS_KEY_BRANCH_STATUS = KEYS[2]; +local REDIS_KEY_BRANCH_GMT_MODIFIED = KEYS[3]; +local REDIS_KEY_BRANCH_APPLICATION_DATA = KEYS[4]; +local branchStatus = ARGV[1]; +local nowTime = ARGV[2]; +local applicationData = ARGV[3]; +local result = {}; + +local previousBranchStatus = redis.call('HGET', branchKey, REDIS_KEY_BRANCH_STATUS); +if (not previousBranchStatus or string.len(tostring(previousBranchStatus)) == 0) +then + result['success'] = false; + result['status'] = ''; + result['data'] = ''; + return cjson.encode(result); +end + +redis.call('HSET', branchKey, REDIS_KEY_BRANCH_STATUS, branchStatus); +redis.call('HSET', branchKey, REDIS_KEY_BRANCH_GMT_MODIFIED, nowTime); +if (applicationData and string.len(tostring(applicationData)) ~= 0) then + redis.call('HSET', branchKey, REDIS_KEY_BRANCH_APPLICATION_DATA, applicationData); +end + +result['success'] = true; +result['status'] = ''; +result['data'] = ''; +return cjson.encode(result); \ No newline at end of file diff --git a/server/src/test/resources/lua/redisStore/updateGlobalTransactionDO.lua b/server/src/test/resources/lua/redisStore/updateGlobalTransactionDO.lua new file mode 100644 index 00000000000..c511d8f541e --- /dev/null +++ b/server/src/test/resources/lua/redisStore/updateGlobalTransactionDO.lua @@ -0,0 +1,106 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/27 + +-- param description +-- KEYS[1] globalKey +-- KEYS[2] REDIS_KEY_GLOBAL_STATUS +-- KEYS[3] REDIS_KEY_GLOBAL_GMT_MODIFIED +-- ARGV[1] status +-- ARGV[2] nowTime +-- ARGV[3] xid + +-- init data +local globalKey = KEYS[1]; +local REDIS_KEY_GLOBAL_STATUS = KEYS[2]; +local REDIS_KEY_GLOBAL_GMT_MODIFIED = KEYS[3]; + +local status = ARGV[1]; +local nowTime = ARGV[2]; +local xid = ARGV[3]; + +local result = {}; + +-- is timeout global status +local function isTimeoutGlobalStatus(s) + local globalStatus = tonumber(s); + return globalStatus == 13 or globalStatus == 14 or globalStatus == 6 or globalStatus == 7; +end + +-- is rollback global status +local function isRollbackGlobalStatus(s) + local globalStatus = tonumber(s); + return globalStatus == 4 or globalStatus == 5 or globalStatus == 11 or globalStatus == 12 or globalStatus == 17; +end + +local function isCommitGlobalStatus(s) + local globalStatus = tonumber(s); + return globalStatus == 2 or globalStatus == 8 or globalStatus == 3 or globalStatus == 9 or globalStatus == 10 or globalStatus == 16; +end + +-- check the relation of before status and after status +local function validateUpdateStatus(before, after) + if isTimeoutGlobalStatus(before) and isCommitGlobalStatus(after) then + return false; + end + if isCommitGlobalStatus(before) and isTimeoutGlobalStatus(after) then + return false; + end + if isRollbackGlobalStatus(before) and isCommitGlobalStatus(after) then + return false; + end + if isCommitGlobalStatus(before) and isRollbackGlobalStatus(after) then + return false; + end + return true; +end + +local statusAndGmtModified = redis.call('HMGET', globalKey, REDIS_KEY_GLOBAL_STATUS, REDIS_KEY_GLOBAL_GMT_MODIFIED); +local previousStatus = statusAndGmtModified[1]; +local previousGmtModified = statusAndGmtModified[2]; + +if (not previousStatus and string.len(tostring(previousStatus)) ~= 0) then + result['success'] = false; + result['status'] = 'NotExisted'; + result['data'] = ''; + return cjson.encode(result); +end + +if previousStatus == status then + result['success'] = true; + result['status'] = ''; + result['data'] = ''; + return cjson.encode(result); +end + +if not validateUpdateStatus(previousStatus, status) then + result['success'] = false; + result['status'] = 'ChangeStatusFail'; + result['data'] = previousGmtModified; + return cjson.encode(result); +end + +local data = {}; +data[1] = redis.call('HMSET', globalKey, REDIS_KEY_GLOBAL_STATUS, status, REDIS_KEY_GLOBAL_GMT_MODIFIED, nowTime)['ok']; +data[2] = tostring(redis.call('LREM', 'SEATA_STATUS_' .. previousStatus, 0, xid)); +data[3] = tostring(redis.call('RPUSH', 'SEATA_STATUS_' .. status, xid)); +data[4] = previousStatus; +data[5] = previousGmtModified; + +result['success'] = true; +result['status'] = ''; +result['data'] = cjson.encode(data); +return cjson.encode(result); \ No newline at end of file diff --git a/server/src/test/resources/lua/redislocker/acquireRedisLock.lua b/server/src/test/resources/lua/redislocker/acquireRedisLock.lua new file mode 100644 index 00000000000..cb1668cf6e3 --- /dev/null +++ b/server/src/test/resources/lua/redislocker/acquireRedisLock.lua @@ -0,0 +1,98 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: tianyu.li;conghuhu +-- Date: 2022/7/1 + +-- param description +-- ARGV[1] needLockDOs.size() +-- ARGV[2] argSize +-- ARGV[3] needLockXid +-- ARGV[-1] localKeysString +-- KEYS[1 ~ needLockKeys.size()] needLockKeys +-- KEYS[-2] xidLockKey +-- KEYS[-1] branchId + +-- init data +local array = {}; +local result = {}; +local keySize = ARGV[1]; +local argSize = ARGV[2]; +-- Loop through all keys to see if they can be used , when a key is not available, exit +for i = 1, keySize do + local needLockKey = KEYS[i] + -- search lock xid + local existedLockXid = redis.call('HGET', needLockKey, 'xid'); + -- query lockStatus + local status = redis.call('HGET', needLockKey, 'status'); + + -- if a global lock is found in the Rollbacking state,the fail-fast code is returned directly + if (status == '1' or tonumber(status) == 1) + then + result["success"] = false + result['status'] = 'AnotherRollbackIng' + result["data"] = existedLockXid + return cjson.encode(result) + end + + -- if lock xid is nil + if (not existedLockXid) + -- set 'no' mean There is need to store lock information + then + array[i] = 'no' + else + if (existedLockXid ~= ARGV[3]) + then + -- return fail + result['success'] = false + result['status'] = 'AnotherHoldIng' + result["data"] = existedLockXid + return cjson.encode(result) + else + -- set 'yes' mean There is not need to store lock information + array[i] = 'yes' + end + end +end +-- Loop through array +for i = 1, keySize do + -- if is no ,The lock information is stored + if (array[i] == 'no') + then + -- set xid + redis.call('HSET', KEYS[i], 'xid', ARGV[3]); + -- set transactionId + redis.call('HSET', KEYS[i], 'transactionId', ARGV[(i - 1) * 6 + 4]); + -- set branchId + redis.call('HSET', KEYS[i], 'branchId', ARGV[(i - 1) * 6 + 5]); + -- set resourceId + redis.call('HSET', KEYS[i], 'resourceId', ARGV[(i - 1) * 6 + 6]); + -- set tableName + redis.call('HSET', KEYS[i], 'tableName', ARGV[(i - 1) * 6 + 7]); + -- set rowKey + redis.call('HSET', KEYS[i], 'rowKey', ARGV[(i - 1) * 6 + 8]); + -- set pk + redis.call('HSET', KEYS[i], 'pk', ARGV[(i - 1) * 6 + 9]); + -- exit if + end + -- exit for +end +-- set SEATA_GLOBAL_LOCK +redis.call('HSET', KEYS[(keySize + 1)], KEYS[(keySize + 2)], ARGV[(argSize + 0)]); + +-- return success +result['success'] = true +result['status'] = 'GetLock' +result['data'] = ARGV[3] +return cjson.encode(result) diff --git a/server/src/test/resources/lua/redislocker/isLockable.lua b/server/src/test/resources/lua/redislocker/isLockable.lua new file mode 100644 index 00000000000..7325966f276 --- /dev/null +++ b/server/src/test/resources/lua/redislocker/isLockable.lua @@ -0,0 +1,33 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/7 + +-- param description +-- KEYS[1] lockKeys.size() +-- KEYS[2~lockKeys.size()+1] lockKey +-- ARGV[1] xid + +-- init data +local lockKeysSize = tonumber(KEYS[1]); +local xid = tostring(ARGV[1]); +for i = 1, lockKeysSize do + local lockKey = KEYS[i + 1] + local existedXid = redis.call('HGET', lockKey, 'xid') + if (existedXid == nil or xid == tostring(existedXid)) then + return 'true' + end +end +return 'false' \ No newline at end of file diff --git a/server/src/test/resources/lua/redislocker/releaseRedisLock.lua b/server/src/test/resources/lua/redislocker/releaseRedisLock.lua new file mode 100644 index 00000000000..72176dcdd52 --- /dev/null +++ b/server/src/test/resources/lua/redislocker/releaseRedisLock.lua @@ -0,0 +1,117 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/7 + +-- param description +-- KEYS[1] xidLockKey +-- KEYS[2] branchId + +-- init data +local xidLockKey = KEYS[1]; +local branchId = KEYS[2]; + +local rowKeys = {} + +-- get table length +local function table_len(t) + local len = 0 + for _, _ in pairs(t) do + len = len + 1 + end + return len; +end + +-- split +local function split(target, sep) + local str = tostring(target) + local separator = tostring(sep) + local strB, arrayIndex = 1, 1 + local targetArray = {} + if (separator == nil) + then + return false + end + local condition = true + while (condition) + do + local si, sd = string.find(str, separator, strB) + if (si) + then + targetArray[arrayIndex] = string.sub(str, strB, si - 1) + arrayIndex = arrayIndex + 1 + strB = sd + 1 + else + targetArray[arrayIndex] = string.sub(str, strB, string.len(str)) + condition = false + end + end + return targetArray +end + +-- start +if (not branchId) +then + local rowKeyMap = redis.call('HGETALL', xidLockKey) + for i = 1, table_len(rowKeyMap) do + if (i % 2 == 0) + then + rowKeys[i / 2] = rowKeyMap[i] + end + end +else + local rowKey = redis.call('HGET', xidLockKey, branchId) + rowKeys[1] = rowKey +end + +if (table_len(rowKeys) == 0) +-- rowKeys is empty +then + return true +end + +if (not branchId) +-- branchId is null +then + redis.call('DEL', xidLockKey) +else + redis.call('HDEL', xidLockKey, branchId) +end + +for _, value in pairs(rowKeys) do + local rowKeyStr = tostring(value) + if (string.len(rowKeyStr) == 0) + -- rowKeyStr is empty + then + return true + end + + local start, _ = string.find(rowKeyStr, ';') + if (start) + -- rowKeyStr contains ';' + then + local keys = split(rowKeyStr, ';') + redis.call('DEL', unpack(keys)) + else + redis.call('DEL', rowKeyStr) + end +end + +return true + + + + + diff --git a/server/src/test/resources/lua/redislocker/updateLockStatus.lua b/server/src/test/resources/lua/redislocker/updateLockStatus.lua new file mode 100644 index 00000000000..d3170d33958 --- /dev/null +++ b/server/src/test/resources/lua/redislocker/updateLockStatus.lua @@ -0,0 +1,82 @@ +-- Copyright 1999-2019 Seata.io Group. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- User: conghuhu +-- Date: 2022/7/7 + +-- param description +-- KEYS[1] xidLockKey +-- KEYS[2] status +-- ARGV[1] code + +-- init data +local xidLockKey = KEYS[1]; +local status = KEYS[2]; +local code = ARGV[1]; + +-- get table length +local function table_len(t) + local len = 0 + for _, _ in pairs(t) do + len = len + 1 + end + return len; +end + +-- split +local function split(target, sep) + local str = tostring(target) + local separator = tostring(sep) + local strB, arrayIndex = 1, 1 + local targetArray = {} + if (separator == nil) + then + return false + end + local condition = true + while (condition) + do + local si, sd = string.find(str, separator, strB) + if (si) + then + targetArray[arrayIndex] = string.sub(str, strB, si - 1) + arrayIndex = arrayIndex + 1 + strB = sd + 1 + else + targetArray[arrayIndex] = string.sub(str, strB, string.len(str)) + condition = false + end + end + return targetArray +end + +local branchAndLockKeys = redis.call('HGETALL', xidLockKey) +for i = 1, table_len(branchAndLockKeys) do + if (i % 2 == 0) + then + local k = tostring(branchAndLockKeys[i]) + local start, _ = string.find(k, ';') + if (start) + -- k contains ';' + then + local keys = split(k, ';') + for _, key in pairs(keys) + do + redis.call('HSET', key, status, code) + end + else + redis.call('HSET', k, status, code) + end + end +end \ No newline at end of file diff --git a/test/src/test/java/io/seata/saga/engine/db/StateMachineDBTests.java b/test/src/test/java/io/seata/saga/engine/db/StateMachineDBTests.java index 63bb17589d6..9cdc0c96521 100644 --- a/test/src/test/java/io/seata/saga/engine/db/StateMachineDBTests.java +++ b/test/src/test/java/io/seata/saga/engine/db/StateMachineDBTests.java @@ -322,7 +322,7 @@ public void testCompensationStateMachineForRecovery() throws Exception { String stateMachineName = "simpleCompensationStateMachineForRecovery"; SagaCostPrint.executeAndPrint("3-14", () -> { - Map paramMap = new HashMap<>(5); + Map paramMap = new HashMap<>(); paramMap.put("a", 1); paramMap.put("fooThrowExceptionRandomly", "true"); paramMap.put("barThrowExceptionRandomly", "true"); From 024ed11d995f252378f903073411192a76e80f8c Mon Sep 17 00:00:00 2001 From: liuqiufeng <775038282@qq.com> Date: Mon, 13 Feb 2023 09:33:22 +0800 Subject: [PATCH 033/182] test: add unit test for common module (#5335) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../seata/common/holder/ObjectHolderTest.java | 12 +- .../io/seata/common/io/FileLoaderTest.java | 5 + .../loader/EnhancedServiceLoaderTest.java | 68 +++++ .../loader/ExtensionDefinitionTest.java | 35 +++ .../java/io/seata/common/loader/Hello2.java | 23 ++ .../io/seata/common/loader/JapaneseHello.java | 30 ++ .../common/util/LowerCaseLinkHashMapTest.java | 264 ++++++++++++++++++ .../seata/common/util/ReflectionUtilTest.java | 42 +++ .../io/seata/common/util/SizeUtilTest.java | 10 +- .../seata/io.seata.common.loader.Hello2 | 17 ++ 12 files changed, 503 insertions(+), 5 deletions(-) create mode 100644 common/src/test/java/io/seata/common/loader/ExtensionDefinitionTest.java create mode 100644 common/src/test/java/io/seata/common/loader/Hello2.java create mode 100644 common/src/test/java/io/seata/common/loader/JapaneseHello.java create mode 100644 common/src/test/java/io/seata/common/util/LowerCaseLinkHashMapTest.java create mode 100644 common/src/test/resources/META-INF/seata/io.seata.common.loader.Hello2 diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index e936fcb9992..15cae6744ee 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -55,6 +55,7 @@ The version is updated as follows: ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] - [[#5309](https://github.com/seata/seata/pull/5309)] add unit test [ArrayUtils, ConfigTools, MapUtil] +- [[#5335](https://github.com/seata/seata/pull/5335)] add unit test [EnhancedServiceLoader,ExtensionDefinition,SizeUtilTest,ReflectionUtil,LowerCaseLinkHashMap,FileLoader,ObjectHolder] ### Contributors: diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 9ade76b951c..13744a0f66f 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -57,6 +57,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] 添加单元测试用例 [FileLoader, ObjectHolder, StringUtils] - [[#5309](https://github.com/seata/seata/pull/5309)] 添加单元测试用例 [ArrayUtils, ConfigTools, MapUtil] +- [[#5335](https://github.com/seata/seata/pull/5335)] 添加单元测试用例 [EnhancedServiceLoader,ExtensionDefinition,SizeUtilTest,ReflectionUtil,LowerCaseLinkHashMap,FileLoader,ObjectHolder] ### Contributors: diff --git a/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java b/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java index 1819e11c98c..bb158cd34a7 100644 --- a/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java +++ b/common/src/test/java/io/seata/common/holder/ObjectHolderTest.java @@ -16,6 +16,7 @@ package io.seata.common.holder; +import io.seata.common.exception.ShouldNeverHappenException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -37,13 +38,16 @@ void tearDown() { @Test public void testGetObjectByName() { - Object object = ObjectHolder.INSTANCE.getObject("objectHolderTest"); - Assertions.assertNotNull(object); + Assertions.assertNotNull(ObjectHolder.INSTANCE.getObject("objectHolderTest")); + // object not exist in ObjectHolder.INSTANCE + Assertions.assertNull(ObjectHolder.INSTANCE.getObject("objectHolder")); } @Test public void testGetObjectByClass() { - Object object = ObjectHolder.INSTANCE.getObject(ObjectHolderTest.class); - Assertions.assertNotNull(object); + Assertions.assertNotNull(ObjectHolder.INSTANCE.getObject(ObjectHolderTest.class)); + // object not exist in ObjectHolder.INSTANCE + Assertions.assertThrows(ShouldNeverHappenException.class, + () -> ObjectHolder.INSTANCE.getObject(ObjectHolder.class)); } } diff --git a/common/src/test/java/io/seata/common/io/FileLoaderTest.java b/common/src/test/java/io/seata/common/io/FileLoaderTest.java index 73131c4fdac..561f4e4909b 100644 --- a/common/src/test/java/io/seata/common/io/FileLoaderTest.java +++ b/common/src/test/java/io/seata/common/io/FileLoaderTest.java @@ -37,4 +37,9 @@ public void testLoadNotExistFile() { File file = FileLoader.load("io/NotExistFile.txt"); Assertions.assertTrue(file == null || !file.exists()); } + + @Test + public void testLoadException() { + Assertions.assertThrows(IllegalArgumentException.class, () -> FileLoader.load(null)); + } } diff --git a/common/src/test/java/io/seata/common/loader/EnhancedServiceLoaderTest.java b/common/src/test/java/io/seata/common/loader/EnhancedServiceLoaderTest.java index dd1d6a69c00..04311bc51b4 100644 --- a/common/src/test/java/io/seata/common/loader/EnhancedServiceLoaderTest.java +++ b/common/src/test/java/io/seata/common/loader/EnhancedServiceLoaderTest.java @@ -15,8 +15,11 @@ */ package io.seata.common.loader; +import java.lang.reflect.Field; import java.util.List; +import java.util.Map; +import io.seata.common.util.CollectionUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -133,4 +136,69 @@ public void classCastExceptionTest() { }); } + @Test + public void testLoadByClassAndActivateNameAndArgs() { + Hello2 load = EnhancedServiceLoader.load(Hello2.class, "JapaneseHello", new Object[] {"msg"}); + assertThat(load).isInstanceOf(Hello2.class); + } + + @Test + public void testLoadByClassAndActivateNameAndArgsTypeAndArgs() { + Hello2 load = EnhancedServiceLoader + .load(Hello2.class, "JapaneseHello", new Class[] {String.class}, new Object[] {"msg"}); + assertThat(load).isInstanceOf(Hello2.class); + } + + @Test + public void testUnloadAll() throws NoSuchFieldException, IllegalAccessException { + Hello hello = EnhancedServiceLoader.load(Hello.class); + assertThat(hello).isInstanceOf(Hello.class); + Hello2 hello2 = EnhancedServiceLoader.load(Hello2.class, "JapaneseHello", new Object[]{"msg"}); + assertThat(hello2).isInstanceOf(Hello2.class); + + EnhancedServiceLoader.unloadAll(); + + Class clazz = EnhancedServiceLoader.class; + Field serviceLoadersField = clazz.getDeclaredField("SERVICE_LOADERS"); + serviceLoadersField.setAccessible(true); + Map, Object> serviceLoaders = (Map, Object>)serviceLoadersField.get(null); + assertThat(CollectionUtils.isEmpty(serviceLoaders)).isTrue(); + } + + @Test + public void testUnloadByClass() throws NoSuchFieldException, IllegalAccessException { + Hello load = EnhancedServiceLoader.load(Hello.class); + assertThat(load).isInstanceOf(Hello.class); + + EnhancedServiceLoader.unload(Hello.class); + // get serviceLoaders + Class clazz = EnhancedServiceLoader.class; + Field serviceLoadersField = clazz.getDeclaredField("SERVICE_LOADERS"); + serviceLoadersField.setAccessible(true); + Map, Object> serviceLoaders = (Map, Object>)serviceLoadersField.get(null); + + assertThat(serviceLoaders.get(Hello.class)).isNull(); + } + + // FIXME: 2023/2/11 wait fix EnhancedServiceLoader.unload(Class service, String activateName) + // @Test + public void testUnloadByClassAndActivateName() throws NoSuchFieldException, IllegalAccessException { + Hello englishHello = EnhancedServiceLoader.load(Hello.class, "EnglishHello"); + assertThat(englishHello.say()).isEqualTo("hello!"); + + EnhancedServiceLoader.unload(Hello.class, "EnglishHello"); + // get serviceLoaders + Class clazz = EnhancedServiceLoader.class; + Field serviceLoadersField = clazz.getDeclaredField("SERVICE_LOADERS"); + serviceLoadersField.setAccessible(true); + Map, Object> serviceLoaders = (Map, Object>)serviceLoadersField.get(null); + //get innerEnhancedServiceLoader.classToDefinitionMap + Object innerEnhancedServiceLoader = serviceLoaders.get(Hello.class); + Field classToDefinitionMapField = innerEnhancedServiceLoader.getClass().getDeclaredField("classToDefinitionMap"); + classToDefinitionMapField.setAccessible(true); + Map, Object> classToDefinitionMap = (Map, Object>) classToDefinitionMapField.get(innerEnhancedServiceLoader); + + assertThat(classToDefinitionMap.get(EnglishHello.class)).isNull(); + } + } diff --git a/common/src/test/java/io/seata/common/loader/ExtensionDefinitionTest.java b/common/src/test/java/io/seata/common/loader/ExtensionDefinitionTest.java new file mode 100644 index 00000000000..897519bfdaa --- /dev/null +++ b/common/src/test/java/io/seata/common/loader/ExtensionDefinitionTest.java @@ -0,0 +1,35 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.loader; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author liuqiufeng + */ +public class ExtensionDefinitionTest { + + @Test + public void testEquals() { + ExtensionDefinition definition + = new ExtensionDefinition<>("abc", 1, Scope.PROTOTYPE, ChineseHello.class); + ExtensionDefinition definition2 + = new ExtensionDefinition<>("abc", 1, Scope.PROTOTYPE, ChineseHello.class); + Assertions.assertEquals(definition2, definition); + } +} diff --git a/common/src/test/java/io/seata/common/loader/Hello2.java b/common/src/test/java/io/seata/common/loader/Hello2.java new file mode 100644 index 00000000000..be4a55e63cc --- /dev/null +++ b/common/src/test/java/io/seata/common/loader/Hello2.java @@ -0,0 +1,23 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.loader; + +/** + * @author liuqiufeng + */ +public interface Hello2 { +} diff --git a/common/src/test/java/io/seata/common/loader/JapaneseHello.java b/common/src/test/java/io/seata/common/loader/JapaneseHello.java new file mode 100644 index 00000000000..b00da0402e7 --- /dev/null +++ b/common/src/test/java/io/seata/common/loader/JapaneseHello.java @@ -0,0 +1,30 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.loader; + +/** + * @author liuqiufeng + */ +@LoadLevel(name = "JapaneseHello", order = Integer.MAX_VALUE) +public class JapaneseHello implements Hello2{ + + private final String msg; + + public JapaneseHello(String msg) { + this.msg = msg; + } +} diff --git a/common/src/test/java/io/seata/common/util/LowerCaseLinkHashMapTest.java b/common/src/test/java/io/seata/common/util/LowerCaseLinkHashMapTest.java new file mode 100644 index 00000000000..7ac4900392e --- /dev/null +++ b/common/src/test/java/io/seata/common/util/LowerCaseLinkHashMapTest.java @@ -0,0 +1,264 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.seata.common.util; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +/** + * @author liuqiufeng + */ +public class LowerCaseLinkHashMapTest { + + private static final Map lowerCaseLinkHashMap = new LowerCaseLinkHashMap<>(); + + public LowerCaseLinkHashMapTest() { + lowerCaseLinkHashMap.put("Key", "Value"); + lowerCaseLinkHashMap.put("Key2", "Value2"); + } + + @BeforeEach + void setUp() { + } + + @AfterEach + void tearDown() { + } + + @Test + void size() { + Assertions.assertEquals(2,lowerCaseLinkHashMap.size()); + } + + @Test + void isEmpty() { + Assertions.assertFalse(lowerCaseLinkHashMap.isEmpty()); + Assertions.assertTrue(new LowerCaseLinkHashMap<>().isEmpty()); + } + + @Test + void containsKey() { + Assertions.assertTrue(lowerCaseLinkHashMap.containsKey("key")); + Assertions.assertTrue(lowerCaseLinkHashMap.containsKey("Key")); + Assertions.assertTrue(lowerCaseLinkHashMap.containsKey("KEY")); + Assertions.assertFalse(lowerCaseLinkHashMap.containsKey("test")); + Assertions.assertFalse(lowerCaseLinkHashMap.containsKey(123)); + } + + @Test + void containsValue() { + Assertions.assertTrue(lowerCaseLinkHashMap.containsValue("Value")); + Assertions.assertFalse(lowerCaseLinkHashMap.containsValue("test")); + } + + @Test + void get() { + Assertions.assertEquals("Value",lowerCaseLinkHashMap.get("key")); + // not exist + Assertions.assertNull(lowerCaseLinkHashMap.get("key12")); + Assertions.assertNull(lowerCaseLinkHashMap.get(123)); + } + + @Test + void testPutAndRemove() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Assertions.assertNull(map.get("keyPut")); + map.put("keyPut", "valuePut"); + Assertions.assertEquals("valuePut", map.get("keyPut")); + Assertions.assertEquals("valuePut", map.remove("keyPut")); + Assertions.assertNull(map.get("keyPut")); + Assertions.assertNull(map.remove(123)); + map.put("keyPut", "valuePut"); + Assertions.assertEquals("valuePut", map.get("keyPut")); + Assertions.assertFalse( map.remove("keyPut","VALUEPUT")); + Assertions.assertEquals("valuePut", map.get("keyPut")); + Assertions.assertTrue(map.remove("keyPut","valuePut")); + Assertions.assertNull(map.get("keyPut")); + Assertions.assertFalse(map.remove(123, 123)); + } + + @Test + void testPutAllAndClear() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + map.putAll(lowerCaseLinkHashMap); + Assertions.assertEquals(map, lowerCaseLinkHashMap); + map.clear(); + Assertions.assertTrue(map.isEmpty()); + } + + @Test + void keySet() { + Set keySet = new HashSet<>(); + keySet.add("Key"); + keySet.add("Key2"); + Assertions.assertEquals(keySet, lowerCaseLinkHashMap.keySet()); + } + + @Test + void values() { + List values = new ArrayList<>(); + values.add("Value"); + values.add("Value2"); + Assertions.assertArrayEquals(values.toArray(), lowerCaseLinkHashMap.values().toArray()); + } + + @Test + void getOrDefault() { + Assertions.assertEquals("Value", lowerCaseLinkHashMap.getOrDefault("Key", "abc")); + Assertions.assertEquals("Value", lowerCaseLinkHashMap.getOrDefault("key", "abc")); + Assertions.assertEquals("abc", lowerCaseLinkHashMap.getOrDefault("default", "abc")); + } + + @Test + void replaceAll() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + // replace all values with key + map.replaceAll((key, value) -> key); + for (Map.Entry entry : map.entrySet()) { + Assertions.assertEquals(entry.getKey(), entry.getValue()); + } + } + + @Test + void putIfAbsent() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object obj = map.putIfAbsent("putIfAbsent", "putIfAbsent"); + Assertions.assertNull(obj); + Assertions.assertEquals("putIfAbsent", map.get("putIfAbsent")); + obj = map.putIfAbsent("key", "putIfAbsent"); + Assertions.assertEquals("Value", obj); + Assertions.assertEquals("Value", map.get("key")); + } + + @Test + void testRemove() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object value = map.remove("key"); + Assertions.assertEquals("Value", value); + Assertions.assertFalse(map.containsKey("key")); + Assertions.assertTrue(map.containsKey("key2")); + } + + @Test + void testReplace() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object replace = map.replace("key", "replace"); + Assertions.assertEquals("Value", replace); + Assertions.assertEquals("replace",map.get("key")); + + boolean result = map.replace("key2", "value2", "replace"); + Assertions.assertFalse(result); + Assertions.assertEquals("Value2", map.get("key2")); + + result = map.replace("key2", "Value2", "replace"); + Assertions.assertTrue(result); + Assertions.assertEquals("replace", map.get("key2")); + } + + @Test + void computeIfAbsent() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object result = map.computeIfAbsent("key", String::toUpperCase); + Assertions.assertEquals("Value", result); + Assertions.assertEquals("Value", map.get("key")); + + result = map.computeIfAbsent("computeIfAbsent", String::toUpperCase); + Assertions.assertEquals("COMPUTEIFABSENT", result); + Assertions.assertEquals("COMPUTEIFABSENT", map.get("computeIfAbsent")); + } + + @Test + void computeIfPresent() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object result = map.computeIfPresent("key", (key,value)-> key.toUpperCase()); + Assertions.assertEquals("KEY", result); + Assertions.assertEquals("KEY", map.get("key")); + + result = map.computeIfPresent("key", (key, value) -> null); + Assertions.assertNull(result); + Assertions.assertFalse(map.containsKey("key")); + + result = map.computeIfPresent("computeIfPresent", (key,value)-> key.toUpperCase()); + Assertions.assertNull(result); + Assertions.assertFalse(map.containsKey("computeIfPresent")); + } + + @Test + void compute() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object result = map.compute("key", (key,value)-> key.toUpperCase()); + Assertions.assertEquals("KEY", result); + Assertions.assertEquals("KEY", map.get("key")); + + result = map.compute("key", (key, value) -> null); + Assertions.assertNull(result); + Assertions.assertFalse(map.containsKey("key")); + + result = map.compute("compute", (key,value)-> key.toUpperCase()); + Assertions.assertEquals("COMPUTE", result); + Assertions.assertEquals("COMPUTE", map.get("compute")); + } + + @Test + void merge() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Object result = map.merge("key", "merge",(oldValue,value)-> oldValue.toString().toUpperCase()); + Assertions.assertEquals("VALUE", result); + Assertions.assertEquals("VALUE", map.get("key")); + + result = map.merge("key", "merge", (oldValue, value) -> null); + Assertions.assertNull(result); + Assertions.assertFalse(map.containsKey("key")); + + result = map.merge("compute", "merge", (oldValue, value) -> oldValue.toString().toUpperCase()); + Assertions.assertEquals("merge", result); + Assertions.assertEquals("merge", map.get("compute")); + } + + @Test + void testEquals() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Assertions.assertTrue(map.equals(lowerCaseLinkHashMap)); + map.put("equals", "equals"); + Assertions.assertFalse(map.equals(lowerCaseLinkHashMap)); + } + + @Test + void testHashCode() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Assertions.assertEquals(lowerCaseLinkHashMap.hashCode(), map.hashCode()); + map.put("equals", "equals2"); + Assertions.assertNotEquals(lowerCaseLinkHashMap.hashCode(), map.hashCode()); + } + + @Test + void testToString() { + Map map = new LowerCaseLinkHashMap<>(lowerCaseLinkHashMap); + Assertions.assertEquals(lowerCaseLinkHashMap.toString(), map.toString()); + map.put("toString", "toString2"); + Assertions.assertNotEquals(lowerCaseLinkHashMap.toString(), map.toString()); + } + +} diff --git a/common/src/test/java/io/seata/common/util/ReflectionUtilTest.java b/common/src/test/java/io/seata/common/util/ReflectionUtilTest.java index f5c739de894..c43bfd51ee3 100644 --- a/common/src/test/java/io/seata/common/util/ReflectionUtilTest.java +++ b/common/src/test/java/io/seata/common/util/ReflectionUtilTest.java @@ -19,10 +19,13 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import io.seata.common.BranchDO; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnJre; @@ -41,6 +44,27 @@ public void testGetClassByName() throws ClassNotFoundException { ReflectionUtil.getClassByName("java.lang.String")); } + @Test + public void testGetWrappedClass() { + Assertions.assertEquals(Byte.class, ReflectionUtil.getWrappedClass(byte.class)); + Assertions.assertEquals(Boolean.class, ReflectionUtil.getWrappedClass(boolean.class)); + Assertions.assertEquals(Character.class, ReflectionUtil.getWrappedClass(char.class)); + Assertions.assertEquals(Short.class, ReflectionUtil.getWrappedClass(short.class)); + Assertions.assertEquals(Integer.class, ReflectionUtil.getWrappedClass(int.class)); + Assertions.assertEquals(Long.class, ReflectionUtil.getWrappedClass(long.class)); + Assertions.assertEquals(Float.class, ReflectionUtil.getWrappedClass(float.class)); + Assertions.assertEquals(Double.class, ReflectionUtil.getWrappedClass(double.class)); + Assertions.assertEquals(Void.class, ReflectionUtil.getWrappedClass(void.class)); + Assertions.assertEquals(Object.class, ReflectionUtil.getWrappedClass(Object.class)); + } + + @Test + public void testSetFieldValue() throws NoSuchFieldException { + BranchDO branchDO = new BranchDO("xid123123", 123L, 1, 2.2, new Date()); + ReflectionUtil.setFieldValue(branchDO, "xid", "xid456"); + Assertions.assertEquals("xid456", branchDO.getXid()); + } + @Test public void testGetFieldValue() throws NoSuchFieldException { Assertions.assertEquals("d", @@ -152,6 +176,24 @@ private void testGetAllFieldsInternal(Class clazz, String... fieldNames) { } } + @Test + public void testMethodToString() throws NoSuchMethodException { + Assertions.assertEquals("Method", + ReflectionUtil.methodToString(this.getClass().getMethod("testMethodToString"))); + } + + @Test + public void testAnnotationToString() throws NoSuchMethodException { + Assertions.assertEquals("@Test()", ReflectionUtil + .annotationToString(this.getClass().getMethod("testAnnotationToString").getAnnotation(Test.class))); + } + + @Test + public void testGetAnnotationValues() throws NoSuchMethodException, NoSuchFieldException { + Assertions.assertEquals(new LinkedHashMap<>(), ReflectionUtil + .getAnnotationValues(this.getClass().getMethod("testGetAnnotationValues").getAnnotation(Test.class))); + } + //region the test class and interface class EmptyClass { diff --git a/common/src/test/java/io/seata/common/util/SizeUtilTest.java b/common/src/test/java/io/seata/common/util/SizeUtilTest.java index 5fd545cfae3..99acb8f732b 100755 --- a/common/src/test/java/io/seata/common/util/SizeUtilTest.java +++ b/common/src/test/java/io/seata/common/util/SizeUtilTest.java @@ -18,13 +18,21 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; class SizeUtilTest { @Test void size2Long() { + assertThatThrownBy(() -> SizeUtil.size2Long(null)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> SizeUtil.size2Long("")).isInstanceOf(IllegalArgumentException.class); + // wrong format + assertThatThrownBy(() -> SizeUtil.size2Long("2kk")).isInstanceOf(IllegalArgumentException.class); + // wrong unit + assertThatThrownBy(() -> SizeUtil.size2Long("2x")).isInstanceOf(IllegalArgumentException.class); + assertThat(SizeUtil.size2Long("2k")).isEqualTo(2L * 1024); assertThat(SizeUtil.size2Long("2m")).isEqualTo(2L * 1024 * 1024); assertThat(SizeUtil.size2Long("2G")).isEqualTo(2L * 1024 * 1024 * 1024); assertThat(SizeUtil.size2Long("2t")).isEqualTo(2L * 1024 * 1024 * 1024 * 1024); } -} \ No newline at end of file +} diff --git a/common/src/test/resources/META-INF/seata/io.seata.common.loader.Hello2 b/common/src/test/resources/META-INF/seata/io.seata.common.loader.Hello2 new file mode 100644 index 00000000000..a494329ea36 --- /dev/null +++ b/common/src/test/resources/META-INF/seata/io.seata.common.loader.Hello2 @@ -0,0 +1,17 @@ +# +# Copyright 1999-2019 Seata.io Group. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +io.seata.common.loader.JapaneseHello From 5465a9f7ac095e7741fb6fdd574e0bec9a4f3d36 Mon Sep 17 00:00:00 2001 From: leezongjie Date: Mon, 13 Feb 2023 14:58:58 +0800 Subject: [PATCH 034/182] bugfix: fix bugs found in `feature#5165` about sorting problem of multiple interceptor under the spring used environment (#5337) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 2 + .../BusinessActionContextParameterDesc.java | 5 +- .../api/fence/DefaultCommonFenceHandler.java | 5 +- .../tx/api/fence/FenceHandler.java | 1 - .../interceptor/DefaultInvocationWrapper.java | 1 - .../tx/api/interceptor/InvocationWrapper.java | 1 - .../tx/api/interceptor}/SeataInterceptor.java | 8 +- .../SeataInterceptorPosition.java | 2 +- .../AbstractProxyInvocationHandler.java | 13 +- .../handler/DefaultInvocationHandler.java | 1 - ...GlobalTransactionalInterceptorHandler.java | 17 +- .../handler/ProxyInvocationHandler.java | 7 +- .../parser/DefaultInterfaceParser.java | 1 - .../parser/DefaultResourceRegisterParser.java | 1 - .../parser/DefaultTargetClassParser.java | 1 - .../GlobalTransactionalInterceptorParser.java | 1 - .../interceptor/parser/InterfaceParser.java | 1 - .../parser/RegisterResourceParser.java | 1 - .../interceptor/parser/TargetClassParser.java | 1 - .../tx/api/json/DefaultJsonParser.java | 1 - .../integration/tx/api/json/JsonParser.java | 1 - .../integration/tx/api/util/JsonUtil.java | 1 - .../integration/tx/api/util/ProxyUtil.java | 1 - ...balTransactionalInterceptorParserTest.java | 1 - .../ProxyUtilsGlobalTransactionalTest.java | 1 - .../io/seata/rm/fence/SpringFenceConfig.java | 1 - .../seata/spring/SpringTargetClassParser.java | 1 - .../annotation/AdapterInvocationWrapper.java | 62 +++++++ .../AdapterSpringSeataInterceptor.java | 68 +++++++ .../annotation/GlobalTransactionScanner.java | 168 ++++++++++++++++-- .../parser/RemotingFactoryBeanParser.java | 1 - .../TccActionInterceptorHandler.java | 39 ++-- .../parser/TccActionInterceptorParser.java | 1 - .../io/seata/rm/tcc/json/FastJsonParser.java | 1 - .../parser/TccRegisterResourceParser.java | 1 - .../io/seata/rm/tcc/NormalTccActionImpl.java | 1 - .../rm/tcc/interceptor/ProxyUtilsTccTest.java | 1 - .../TccActionInterceptorParserTest.java | 1 - .../parser/TccRegisterResourceParserTest.java | 1 - .../io/seata/tm/api/FailureHandlerHolder.java | 1 - 41 files changed, 356 insertions(+), 69 deletions(-) rename {spring/src/main/java/io/seata/spring/annotation => integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor}/SeataInterceptor.java (87%) rename {spring/src/main/java/io/seata/spring/annotation => integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor}/SeataInterceptorPosition.java (95%) create mode 100644 spring/src/main/java/io/seata/spring/annotation/AdapterInvocationWrapper.java create mode 100644 spring/src/main/java/io/seata/spring/annotation/AdapterSpringSeataInterceptor.java diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 15cae6744ee..d3c945373f7 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -34,6 +34,7 @@ The version is updated as follows: - [[#5310](https://github.com/seata/seata/pull/5310)] fix that keywords don't add escaped characters - [[#5318](https://github.com/seata/seata/pull/5318)] fix G1 jvm parameter in jdk8 - [[#5330](https://github.com/seata/seata/pull/5330)] fix bugs found in unit tests +- [[#5337](https://github.com/seata/seata/pull/5337)] fix bugs found in feature#5165 about sorting problem of multiple interceptor under the spring used environment, by the way fix the BeforeTransaction(AfterTransaction) transaction ordering problem when the order is consistent ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 13744a0f66f..dd82c2a27d9 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -33,6 +33,8 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5310](https://github.com/seata/seata/pull/5310)] 修复生成update前后镜像sql不对关键字转义的bug - [[#5318](https://github.com/seata/seata/pull/5318)] 修复jdk8 中 G1 参数 - [[#5330](https://github.com/seata/seata/pull/5330)] 修复单元测试中发现的bug +- [[#5337](https://github.com/seata/seata/pull/5337)] 修复feature#5165中关于spring使用环境下,多interceptor排序问题,同时修复order一致时无法使用BeforeTransaction(AfterTransaction)事务排序问题 + ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] 优化多次重复获取Throwable#getCause问题 diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java index 693c3807a03..497c91a4541 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/annotation/BusinessActionContextParameterDesc.java @@ -15,14 +15,13 @@ */ package io.seata.integration.tx.api.annotation; +import java.lang.annotation.Annotation; + import io.seata.common.util.StringUtils; import io.seata.rm.tcc.api.BusinessActionContextParameter; -import java.lang.annotation.Annotation; - /** * @author leezongjie - * @date 2022/12/23 */ public class BusinessActionContextParameterDesc { private String paramName; diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java index e853b46c9bb..338dd8f4d80 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/DefaultCommonFenceHandler.java @@ -15,14 +15,13 @@ */ package io.seata.integration.tx.api.fence; -import io.seata.common.executor.Callback; - import java.lang.reflect.Method; import java.util.Date; +import io.seata.common.executor.Callback; + /** * @author leezongjie - * @date 2022/12/17 */ public class DefaultCommonFenceHandler implements FenceHandler { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java index 70a54773b9a..6c15bab23d4 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/FenceHandler.java @@ -22,7 +22,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public interface FenceHandler { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java index a6bef4e6eeb..0381ad194a8 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/DefaultInvocationWrapper.java @@ -19,7 +19,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class DefaultInvocationWrapper implements InvocationWrapper { private Object proxy; diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java index c7ca1a74190..cfbb7a440ec 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/InvocationWrapper.java @@ -19,7 +19,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public interface InvocationWrapper { diff --git a/spring/src/main/java/io/seata/spring/annotation/SeataInterceptor.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/SeataInterceptor.java similarity index 87% rename from spring/src/main/java/io/seata/spring/annotation/SeataInterceptor.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/SeataInterceptor.java index bac6a9c7b51..ec6edcff485 100644 --- a/spring/src/main/java/io/seata/spring/annotation/SeataInterceptor.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/SeataInterceptor.java @@ -13,16 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; - -import org.springframework.core.Ordered; +package io.seata.integration.tx.api.interceptor; /** * The interface Seata interceptor. * * @author wang.liang */ -public interface SeataInterceptor extends Ordered { +public interface SeataInterceptor { /** * Sets order. @@ -31,6 +29,8 @@ public interface SeataInterceptor extends Ordered { */ void setOrder(int order); + int getOrder(); + /** * Get position. * diff --git a/spring/src/main/java/io/seata/spring/annotation/SeataInterceptorPosition.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/SeataInterceptorPosition.java similarity index 95% rename from spring/src/main/java/io/seata/spring/annotation/SeataInterceptorPosition.java rename to integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/SeataInterceptorPosition.java index dacff340aa2..e28046e4ff3 100644 --- a/spring/src/main/java/io/seata/spring/annotation/SeataInterceptorPosition.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/SeataInterceptorPosition.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.seata.spring.annotation; +package io.seata.integration.tx.api.interceptor; /** * The enum Seata interceptor position. diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java index bc2adb4be1f..d18381a1230 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/AbstractProxyInvocationHandler.java @@ -20,12 +20,13 @@ /** * @author leezongjie - * @date 2022/11/26 */ public abstract class AbstractProxyInvocationHandler implements ProxyInvocationHandler { protected abstract Object doInvoke(InvocationWrapper invocation) throws Throwable; + protected int order = Integer.MAX_VALUE; + @Override public Object invoke(InvocationWrapper invocation) throws Throwable { if (CollectionUtils.isNotEmpty(getMethodsToProxy()) && !getMethodsToProxy().contains(invocation.getMethod().getName())) { @@ -34,4 +35,14 @@ public Object invoke(InvocationWrapper invocation) throws Throwable { return doInvoke(invocation); } + @Override + public void setOrder(int order) { + this.order = order; + } + + @Override + public int getOrder() { + return this.order; + } + } diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java index 0784a5be100..a8133da63cb 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/DefaultInvocationHandler.java @@ -23,7 +23,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class DefaultInvocationHandler implements InvocationHandler { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java index 525d4c9392b..08f75027fe3 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/GlobalTransactionalInterceptorHandler.java @@ -38,6 +38,7 @@ import io.seata.integration.tx.api.annotation.AspectTransactional; import io.seata.integration.tx.api.event.DegradeCheckEvent; import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import io.seata.integration.tx.api.interceptor.SeataInterceptorPosition; import io.seata.rm.GlobalLockExecutor; import io.seata.rm.GlobalLockTemplate; import io.seata.spring.annotation.GlobalLock; @@ -134,11 +135,6 @@ public GlobalTransactionalInterceptorHandler(FailureHandler failureHandler, Set< this.aspectTransactional = aspectTransactional; } - @Override - public Set getMethodsToProxy() { - return methodsToProxy; - } - @Override protected Object doInvoke(InvocationWrapper invocation) throws Throwable { Class targetClass = invocation.getTarget().getClass(); @@ -346,4 +342,15 @@ private static void startDegradeCheck() { } }, degradeCheckPeriod, degradeCheckPeriod, TimeUnit.MILLISECONDS); } + + @Override + public Set getMethodsToProxy() { + return methodsToProxy; + } + + @Override + public SeataInterceptorPosition getPosition() { + return SeataInterceptorPosition.BeforeTransaction; + } + } diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java index cda4754d798..78dcd8bd4ef 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/handler/ProxyInvocationHandler.java @@ -18,15 +18,18 @@ import java.util.Set; import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import io.seata.integration.tx.api.interceptor.SeataInterceptor; +import io.seata.integration.tx.api.interceptor.SeataInterceptorPosition; /** * @author leezongjie - * @date 2022/11/26 */ -public interface ProxyInvocationHandler { +public interface ProxyInvocationHandler extends SeataInterceptor { Set getMethodsToProxy(); Object invoke(InvocationWrapper invocation) throws Throwable; + SeataInterceptorPosition getPosition(); + } diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java index c47b361e97b..c083965ed62 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultInterfaceParser.java @@ -24,7 +24,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class DefaultInterfaceParser implements InterfaceParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java index 8e9451c2982..eb6294a0f71 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultResourceRegisterParser.java @@ -23,7 +23,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class DefaultResourceRegisterParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java index 502a39138c8..fb85c247d7f 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/DefaultTargetClassParser.java @@ -23,7 +23,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public class DefaultTargetClassParser implements TargetClassParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java index 7c19e07020b..fd5b6241508 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParser.java @@ -31,7 +31,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class GlobalTransactionalInterceptorParser implements InterfaceParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java index c7f4ce84e1f..13e283936b3 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/InterfaceParser.java @@ -19,7 +19,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public interface InterfaceParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java index 9faf017e6d5..bd749628ead 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/RegisterResourceParser.java @@ -17,7 +17,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public interface RegisterResourceParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java index c011f2a6bcd..3035756e8b9 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/interceptor/parser/TargetClassParser.java @@ -17,7 +17,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public interface TargetClassParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java index cc5a450538a..da3e8fe14b1 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/DefaultJsonParser.java @@ -25,7 +25,6 @@ /** * @author leezongjie - * @date 2023/1/13 */ public class DefaultJsonParser implements JsonParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java index bb812285a11..9ed1cb08747 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/json/JsonParser.java @@ -17,7 +17,6 @@ /** * @author leezongjie - * @date 2023/1/13 */ public interface JsonParser { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java index 11259637ce9..8e89d77d5f9 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/JsonUtil.java @@ -19,7 +19,6 @@ /** * @author leezongjie - * @date 2023/1/13 */ public class JsonUtil { diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java index 86658bd44f0..8c0f6960518 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/util/ProxyUtil.java @@ -28,7 +28,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class ProxyUtil { diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java index afb98feee46..e6807a9fc4a 100644 --- a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/GlobalTransactionalInterceptorParserTest.java @@ -21,7 +21,6 @@ /** * @author leezongjie - * @date 2022/12/15 */ class GlobalTransactionalInterceptorParserTest { diff --git a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java index 1ec608506ca..0e862635d85 100644 --- a/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java +++ b/integration-tx-api/src/test/java/io/seata/integration/tx/api/interceptor/parser/ProxyUtilsGlobalTransactionalTest.java @@ -27,7 +27,6 @@ /** * @author leezongjie - * @date 2022/12/14 */ public class ProxyUtilsGlobalTransactionalTest { diff --git a/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java b/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java index aab8842ef80..ccd9efae49a 100644 --- a/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java +++ b/spring/src/main/java/io/seata/rm/fence/SpringFenceConfig.java @@ -26,7 +26,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public class SpringFenceConfig extends CommonFenceConfig implements InitializingBean { diff --git a/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java b/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java index 47dbb9969da..bd79244ca9c 100644 --- a/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java +++ b/spring/src/main/java/io/seata/spring/SpringTargetClassParser.java @@ -20,7 +20,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public class SpringTargetClassParser implements TargetClassParser { @Override diff --git a/spring/src/main/java/io/seata/spring/annotation/AdapterInvocationWrapper.java b/spring/src/main/java/io/seata/spring/annotation/AdapterInvocationWrapper.java new file mode 100644 index 00000000000..d83fbcd5cf1 --- /dev/null +++ b/spring/src/main/java/io/seata/spring/annotation/AdapterInvocationWrapper.java @@ -0,0 +1,62 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.spring.annotation; + +import java.lang.reflect.Method; + +import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import org.aopalliance.intercept.MethodInvocation; + +/** + * @author leezongjie + */ +public class AdapterInvocationWrapper implements InvocationWrapper { + + private MethodInvocation invocation; + + public AdapterInvocationWrapper(MethodInvocation invocation) { + this.invocation = invocation; + } + + @Override + public Method getMethod() { + return invocation.getMethod(); + } + + @Override + public Object getProxy() { + return null; + } + + @Override + public Object getTarget() { + return invocation.getThis(); + } + + @Override + public Object[] getArguments() { + return invocation.getArguments(); + } + + @Override + public Object proceed() { + try { + return invocation.proceed(); + } catch (Throwable throwable) { + throw new RuntimeException("try to proceed invocation error", throwable); + } + } +} diff --git a/spring/src/main/java/io/seata/spring/annotation/AdapterSpringSeataInterceptor.java b/spring/src/main/java/io/seata/spring/annotation/AdapterSpringSeataInterceptor.java new file mode 100644 index 00000000000..fc7a95eb429 --- /dev/null +++ b/spring/src/main/java/io/seata/spring/annotation/AdapterSpringSeataInterceptor.java @@ -0,0 +1,68 @@ +/* + * Copyright 1999-2019 Seata.io Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.seata.spring.annotation; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import io.seata.integration.tx.api.interceptor.SeataInterceptor; +import io.seata.integration.tx.api.interceptor.SeataInterceptorPosition; +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import org.aopalliance.intercept.MethodInterceptor; +import org.aopalliance.intercept.MethodInvocation; +import org.springframework.core.Ordered; +import org.springframework.util.Assert; + +/** + * @author leezongjie + */ +public class AdapterSpringSeataInterceptor implements MethodInterceptor, SeataInterceptor, Ordered { + + private ProxyInvocationHandler proxyInvocationHandler; + + public AdapterSpringSeataInterceptor(ProxyInvocationHandler proxyInvocationHandler) { + Assert.notNull(proxyInvocationHandler, "proxyInvocationHandler must not be null"); + this.proxyInvocationHandler = proxyInvocationHandler; + } + + @Nullable + @Override + public Object invoke(@Nonnull MethodInvocation invocation) throws Throwable { + AdapterInvocationWrapper adapterInvocationWrapper = new AdapterInvocationWrapper(invocation); + Object result = proxyInvocationHandler.invoke(adapterInvocationWrapper); + return result; + } + + @Override + public int getOrder() { + return proxyInvocationHandler.getOrder(); + } + + @Override + public void setOrder(int order) { + proxyInvocationHandler.setOrder(order); + } + + @Override + public SeataInterceptorPosition getPosition() { + return proxyInvocationHandler.getPosition(); + } + + @Override + public String toString() { + return proxyInvocationHandler.getClass().getName(); + } +} diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java index 423dc9490d7..be1e7533473 100644 --- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java +++ b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java @@ -22,6 +22,7 @@ import java.util.LinkedHashSet; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; +import javax.annotation.Nullable; import io.seata.common.util.CollectionUtils; import io.seata.common.util.StringUtils; @@ -33,18 +34,30 @@ import io.seata.core.rpc.ShutdownHook; import io.seata.core.rpc.netty.RmNettyRemotingClient; import io.seata.core.rpc.netty.TmNettyRemotingClient; -import io.seata.integration.tx.api.util.ProxyUtil; +import io.seata.integration.tx.api.annotation.AspectTransactional; +import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import io.seata.integration.tx.api.interceptor.SeataInterceptor; +import io.seata.integration.tx.api.interceptor.SeataInterceptorPosition; +import io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler; +import io.seata.integration.tx.api.interceptor.handler.ProxyInvocationHandler; +import io.seata.integration.tx.api.interceptor.parser.DefaultInterfaceParser; import io.seata.rm.RMClient; import io.seata.spring.annotation.scannercheckers.PackageScannerChecker; +import io.seata.spring.util.OrderUtil; +import io.seata.spring.util.SpringProxyUtils; import io.seata.tm.TMClient; import io.seata.tm.api.FailureHandler; import io.seata.tm.api.FailureHandlerHolder; +import org.aopalliance.aop.Advice; import org.aopalliance.intercept.MethodInterceptor; import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.aop.Advisor; import org.springframework.aop.TargetSource; +import org.springframework.aop.framework.AdvisedSupport; import org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator; +import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; @@ -53,6 +66,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.Ordered; import static io.seata.common.DefaultValues.DEFAULT_DISABLE_GLOBAL_TRANSACTION; import static io.seata.common.DefaultValues.DEFAULT_TX_GROUP; @@ -76,6 +90,8 @@ public class GlobalTransactionScanner extends AbstractAutoProxyCreator private static final int ORDER_NUM = 1024; private static final int DEFAULT_MODE = AT_MODE + MT_MODE; + private static final String SPRING_TRANSACTION_INTERCEPTOR_CLASS_NAME = "org.springframework.transaction.interceptor.TransactionInterceptor"; + private static final Set PROXYED_SET = new HashSet<>(); private static final Set EXCLUDE_BEAN_NAME_SET = new HashSet<>(); private static final Set SCANNER_CHECKER_SET = new LinkedHashSet<>(); @@ -83,11 +99,9 @@ public class GlobalTransactionScanner extends AbstractAutoProxyCreator private static ConfigurableListableBeanFactory beanFactory; private MethodInterceptor interceptor; - private MethodInterceptor globalTransactionalInterceptor; private final String applicationId; private final String txServiceGroup; - private final int mode; private static String accessKey; private static String secretKey; private volatile boolean disableGlobalTransaction = ConfigurationFactory.getInstance().getBoolean( @@ -164,7 +178,6 @@ public GlobalTransactionScanner(String applicationId, String txServiceGroup, int setProxyTargetClass(true); this.applicationId = applicationId; this.txServiceGroup = txServiceGroup; - this.mode = mode; this.failureHandlerHook = failureHandlerHook; FailureHandlerHolder.setFailureHandler(this.failureHandlerHook); } @@ -236,14 +249,15 @@ private void registerSpringShutdownHook() { * The following will be scanned, and added corresponding interceptor: *

* TM: + * * @see io.seata.spring.annotation.GlobalTransactional // TM annotation - * Corresponding interceptor: - * @see io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler#handleGlobalTransaction(io.seata.integration.tx.api.interceptor.InvocationWrapper, io.seata.integration.tx.api.annotation.AspectTransactional) // TM handler + * Corresponding interceptor:io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler + * @see GlobalTransactionalInterceptorHandler#handleGlobalTransaction(InvocationWrapper, AspectTransactional) // TM handler *

* GlobalLock: * @see io.seata.spring.annotation.GlobalLock // GlobalLock annotation * Corresponding interceptor: - * @see io.seata.integration.tx.api.interceptor.handler.GlobalTransactionalInterceptorHandler#handleGlobalLock(io.seata.integration.tx.api.interceptor.InvocationWrapper, io.seata.spring.annotation.GlobalLock) // GlobalLock handler + * @see GlobalTransactionalInterceptorHandler#handleGlobalLock(InvocationWrapper, GlobalLock) // GlobalLock handler *

* TCC mode: * @see io.seata.rm.tcc.api.LocalTCC // TCC annotation on interface @@ -264,11 +278,29 @@ protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) if (PROXYED_SET.contains(beanName)) { return bean; } - Object resultBean = ProxyUtil.createProxy(bean); - if (bean != resultBean) { - PROXYED_SET.add(beanName); + interceptor = null; + ProxyInvocationHandler proxyInvocationHandler = DefaultInterfaceParser.get().parserInterfaceToProxy(bean); + if (proxyInvocationHandler == null) { + return bean; + } + + interceptor = new AdapterSpringSeataInterceptor(proxyInvocationHandler); + + LOGGER.info("Bean [{}] with name [{}] would use interceptor [{}]", bean.getClass().getName(), beanName, interceptor.toString()); + if (!AopUtils.isAopProxy(bean)) { + bean = super.wrapIfNecessary(bean, beanName, cacheKey); + } else { + AdvisedSupport advised = SpringProxyUtils.getAdvisedSupport(bean); + Advisor[] advisor = buildAdvisors(beanName, getAdvicesAndAdvisorsForBean(null, null, null)); + int pos; + for (Advisor avr : advisor) { + // Find the position based on the advisor's order, and add to advisors by pos + pos = findAddSeataAdvisorPosition(advised, avr); + advised.addAdvisor(pos, avr); + } } - return resultBean; + PROXYED_SET.add(beanName); + return bean; } } catch (Exception exx) { throw new RuntimeException(exx); @@ -298,6 +330,120 @@ private boolean doCheckers(Object bean, String beanName) { return true; } + + //region the methods about findAddSeataAdvisorPosition START + + /** + * Find pos for `advised.addAdvisor(pos, avr);` + * + * @param advised the advised + * @param seataAdvisor the seata advisor + * @return the pos + */ + private int findAddSeataAdvisorPosition(AdvisedSupport advised, Advisor seataAdvisor) { + // Get seataAdvisor's order and interceptorPosition + int seataOrder = OrderUtil.getOrder(seataAdvisor); + SeataInterceptorPosition seataInterceptorPosition = getSeataInterceptorPosition(seataAdvisor); + + // If the interceptorPosition is any, check lowest or highest. + if (SeataInterceptorPosition.Any == seataInterceptorPosition) { + if (seataOrder == Ordered.LOWEST_PRECEDENCE) { + // the last position + return advised.getAdvisors().length; + } else if (seataOrder == Ordered.HIGHEST_PRECEDENCE) { + // the first position + return 0; + } + } else { + // If the interceptorPosition is not any, compute position if has TransactionInterceptor. + Integer position = computePositionIfHasTransactionInterceptor(advised, seataAdvisor, seataInterceptorPosition, seataOrder); + if (position != null) { + // the position before or after TransactionInterceptor + return position; + } + } + + // Find position + return this.findPositionInAdvisors(advised.getAdvisors(), seataAdvisor); + } + + @Nullable + private Integer computePositionIfHasTransactionInterceptor(AdvisedSupport advised, Advisor seataAdvisor, SeataInterceptorPosition seataInterceptorPosition, int seataOrder) { + // Find the TransactionInterceptor's advisor, order and position + Advisor otherAdvisor = null; + Integer transactionInterceptorPosition = null; + Integer transactionInterceptorOrder = null; + for (int i = 0, l = advised.getAdvisors().length; i < l; ++i) { + otherAdvisor = advised.getAdvisors()[i]; + if (isTransactionInterceptor(otherAdvisor)) { + transactionInterceptorPosition = i; + transactionInterceptorOrder = OrderUtil.getOrder(otherAdvisor); + break; + } + } + // If the TransactionInterceptor does not exist, return null + if (transactionInterceptorPosition == null) { + return null; + } + + // Reset seataOrder if the seataOrder is not match the position + Advice seataAdvice = seataAdvisor.getAdvice(); + if (SeataInterceptorPosition.AfterTransaction == seataInterceptorPosition && OrderUtil.higherOrEquals(seataOrder, transactionInterceptorOrder)) { + int newSeataOrder = OrderUtil.lower(transactionInterceptorOrder, 1); + ((SeataInterceptor) seataAdvice).setOrder(newSeataOrder); + if (LOGGER.isWarnEnabled()) { + LOGGER.warn("The {}'s order '{}' is higher or equals than {}'s order '{}' , reset {}'s order to lower order '{}'.", + seataAdvice.getClass().getSimpleName(), seataOrder, + otherAdvisor.getAdvice().getClass().getSimpleName(), transactionInterceptorOrder, + seataAdvice.getClass().getSimpleName(), newSeataOrder); + } + // the position after the TransactionInterceptor's advisor + return transactionInterceptorPosition + 1; + } else if (SeataInterceptorPosition.BeforeTransaction == seataInterceptorPosition && OrderUtil.lowerOrEquals(seataOrder, transactionInterceptorOrder)) { + int newSeataOrder = OrderUtil.higher(transactionInterceptorOrder, 1); + ((SeataInterceptor) seataAdvice).setOrder(newSeataOrder); + if (LOGGER.isWarnEnabled()) { + LOGGER.warn("The {}'s order '{}' is lower or equals than {}'s order '{}' , reset {}'s order to higher order '{}'.", + seataAdvice.getClass().getSimpleName(), seataOrder, + otherAdvisor.getAdvice().getClass().getSimpleName(), transactionInterceptorOrder, + seataAdvice.getClass().getSimpleName(), newSeataOrder); + } + // the position before the TransactionInterceptor's advisor + return transactionInterceptorPosition; + } + + return null; + } + + private int findPositionInAdvisors(Advisor[] advisors, Advisor seataAdvisor) { + Advisor advisor; + for (int i = 0, l = advisors.length; i < l; ++i) { + advisor = advisors[i]; + if (OrderUtil.higherOrEquals(seataAdvisor, advisor)) { + // the position before the current advisor + return i; + } + } + + // the last position, after all the advisors + return advisors.length; + } + + private SeataInterceptorPosition getSeataInterceptorPosition(Advisor seataAdvisor) { + Advice seataAdvice = seataAdvisor.getAdvice(); + if (seataAdvice instanceof SeataInterceptor) { + return ((SeataInterceptor) seataAdvice).getPosition(); + } else { + return SeataInterceptorPosition.Any; + } + } + + private boolean isTransactionInterceptor(Advisor advisor) { + return SPRING_TRANSACTION_INTERCEPTOR_CLASS_NAME.equals(advisor.getAdvice().getClass().getName()); + } + + //endregion the methods about findAddSeataAdvisorPosition END + private MethodDesc makeMethodDesc(GlobalTransactional anno, Method method) { return new MethodDesc(anno, method); } diff --git a/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java b/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java index 457e4006efe..4e5c2ab7cbd 100644 --- a/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java +++ b/spring/src/main/java/io/seata/spring/remoting/parser/RemotingFactoryBeanParser.java @@ -24,7 +24,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class RemotingFactoryBeanParser extends AbstractedRemotingParser { diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java b/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java index 43ce91b237f..203b172cc10 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java +++ b/tcc/src/main/java/io/seata/rm/tcc/interceptor/TccActionInterceptorHandler.java @@ -15,30 +15,37 @@ */ package io.seata.rm.tcc.interceptor; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + import io.seata.common.Constants; +import io.seata.common.DefaultValues; import io.seata.common.util.ReflectionUtil; +import io.seata.config.ConfigurationFactory; import io.seata.core.context.RootContext; import io.seata.core.model.BranchType; import io.seata.integration.tx.api.interceptor.ActionInterceptorHandler; import io.seata.integration.tx.api.interceptor.InvocationWrapper; +import io.seata.integration.tx.api.interceptor.SeataInterceptorPosition; import io.seata.integration.tx.api.interceptor.TwoPhaseBusinessActionParam; import io.seata.integration.tx.api.interceptor.handler.AbstractProxyInvocationHandler; import io.seata.integration.tx.api.remoting.RemotingDesc; import io.seata.rm.tcc.api.TwoPhaseBusinessAction; import org.slf4j.MDC; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; +import static io.seata.common.ConfigurationKeys.TCC_ACTION_INTERCEPTOR_ORDER; /** * @author leezongjie - * @date 2022/11/26 */ public class TccActionInterceptorHandler extends AbstractProxyInvocationHandler { + private static final int ORDER_NUM = ConfigurationFactory.getInstance().getInt(TCC_ACTION_INTERCEPTOR_ORDER, + DefaultValues.TCC_ACTION_INTERCEPTOR_ORDER); + private ActionInterceptorHandler actionInterceptorHandler = new ActionInterceptorHandler(); private Set methodsToProxy; @@ -51,11 +58,6 @@ public TccActionInterceptorHandler(RemotingDesc remotingDesc, Set method this.methodsToProxy = methodsToProxy; } - @Override - public Set getMethodsToProxy() { - return methodsToProxy; - } - @Override protected Object doInvoke(InvocationWrapper invocation) throws Throwable { if (!RootContext.inGlobalTransaction() || RootContext.inSagaBranch()) { @@ -129,4 +131,19 @@ private TwoPhaseBusinessAction parseAnnotation(Method methodKey) throws NoSuchMe return result; } + @Override + public Set getMethodsToProxy() { + return methodsToProxy; + } + + @Override + public int getOrder() { + return ORDER_NUM; + } + + @Override + public SeataInterceptorPosition getPosition() { + return SeataInterceptorPosition.Any; + } + } diff --git a/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java b/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java index 3f3cb5483c8..21434431e90 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java +++ b/tcc/src/main/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParser.java @@ -33,7 +33,6 @@ /** * @author leezongjie - * @date 2022/11/26 */ public class TccActionInterceptorParser implements InterfaceParser { diff --git a/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java b/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java index ed50e15ea52..cdd4d05e033 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java +++ b/tcc/src/main/java/io/seata/rm/tcc/json/FastJsonParser.java @@ -20,7 +20,6 @@ /** * @author leezongjie - * @date 2023/1/13 */ public class FastJsonParser implements JsonParser { diff --git a/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java b/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java index d310f80a599..a6feef3490a 100644 --- a/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java +++ b/tcc/src/main/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParser.java @@ -36,7 +36,6 @@ /** * @author leezongjie - * @date 2022/12/17 */ public class TccRegisterResourceParser implements RegisterResourceParser { diff --git a/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java b/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java index 60cd9cf1334..8d4df2faed7 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java +++ b/tcc/src/test/java/io/seata/rm/tcc/NormalTccActionImpl.java @@ -22,7 +22,6 @@ /** * @author leezongjie - * @date 2022/12/9 */ public class NormalTccActionImpl implements NormalTccAction { diff --git a/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java b/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java index 7187560d6d9..991b78c9727 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java +++ b/tcc/src/test/java/io/seata/rm/tcc/interceptor/ProxyUtilsTccTest.java @@ -36,7 +36,6 @@ /** * @author leezongjie - * @date 2022/12/14 */ public class ProxyUtilsTccTest { diff --git a/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java b/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java index 9fd1b8205e2..e57dfc7c4f6 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java +++ b/tcc/src/test/java/io/seata/rm/tcc/interceptor/parser/TccActionInterceptorParserTest.java @@ -22,7 +22,6 @@ /** * @author leezongjie - * @date 2022/12/8 */ class TccActionInterceptorParserTest { diff --git a/tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java b/tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java index 8b29a2e790b..f96649f7de5 100644 --- a/tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java +++ b/tcc/src/test/java/io/seata/rm/tcc/resource/parser/TccRegisterResourceParserTest.java @@ -24,7 +24,6 @@ /** * @author leezongjie - * @date 2022/12/23 */ class TccRegisterResourceParserTest { diff --git a/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java b/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java index effbc93fec9..048f5ddaa1f 100644 --- a/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java +++ b/tm/src/main/java/io/seata/tm/api/FailureHandlerHolder.java @@ -17,7 +17,6 @@ /** * @author leezongjie - * @date 2023/1/13 */ public class FailureHandlerHolder { From 48ad08e086bdab18fb5a44fd2cec4fb26f9d1bfb Mon Sep 17 00:00:00 2001 From: jimin Date: Tue, 14 Feb 2023 12:18:20 +0800 Subject: [PATCH 035/182] optimize: optimize gRPC Interceptor for TCC mode (#5341) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../grpc/interceptor/GrpcHeaderKey.java | 6 ++-- .../client/ClientTransactionInterceptor.java | 3 +- .../server/ServerListenerProxy.java | 32 +++++++++++++------ .../server/ServerTransactionInterceptor.java | 19 +++++++++-- .../grpc/interceptor/GrpcTest.java | 28 +++++++++------- 7 files changed, 63 insertions(+), 27 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index d3c945373f7..083ff86c9bd 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -52,6 +52,7 @@ The version is updated as follows: - [[#5322](https://github.com/seata/seata/pull/5322)] optimize the log of SPI - [[#5323](https://github.com/seata/seata/pull/5323)] add time info for global transaction timeout log - [[#5328](https://github.com/seata/seata/pull/5333)] add corresponding lua implementation for Redis mode of global transaction and transaction storage +- [[#5341](https://github.com/seata/seata/pull/5341)] optimize gRPC Interceptor for TCC mode ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index dd82c2a27d9..a7dfffc35cf 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -52,6 +52,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5322](https://github.com/seata/seata/pull/5322)] 优化SPI加载日志 - [[#5323](https://github.com/seata/seata/pull/5323)] 为全局事务超时日志添加时间信息 - [[#5328](https://github.com/seata/seata/pull/5333)] 为全局事务和事务存储的Redis模式,增加对应的lua实现 +- [[#5341](https://github.com/seata/seata/pull/5341)] 优化 gRPC TCC模式 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 diff --git a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/GrpcHeaderKey.java b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/GrpcHeaderKey.java index 0bbf4d5af53..4e84cd4ffc2 100644 --- a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/GrpcHeaderKey.java +++ b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/GrpcHeaderKey.java @@ -23,7 +23,9 @@ */ public interface GrpcHeaderKey { - Metadata.Key HEADER_KEY = Metadata.Key.of(RootContext.KEY_XID, Metadata.ASCII_STRING_MARSHALLER); + Metadata.Key XID_HEADER_KEY = Metadata.Key.of(RootContext.KEY_XID, Metadata.ASCII_STRING_MARSHALLER); - Metadata.Key HEADER_KEY_LOWERCASE = Metadata.Key.of(RootContext.KEY_XID.toLowerCase(), Metadata.ASCII_STRING_MARSHALLER); + Metadata.Key XID_HEADER_KEY_LOWERCASE = Metadata.Key.of(RootContext.KEY_XID.toLowerCase(), Metadata.ASCII_STRING_MARSHALLER); + + Metadata.Key BRANCH_HEADER_KEY = Metadata.Key.of(RootContext.KEY_BRANCH_TYPE, Metadata.ASCII_STRING_MARSHALLER); } diff --git a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/client/ClientTransactionInterceptor.java b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/client/ClientTransactionInterceptor.java index 2cdbf82e44e..9b0b5e35bb2 100644 --- a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/client/ClientTransactionInterceptor.java +++ b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/client/ClientTransactionInterceptor.java @@ -43,7 +43,8 @@ public ClientCall interceptCall( @Override public void start(Listener responseListener, Metadata headers) { if (xid != null) { - headers.put(GrpcHeaderKey.HEADER_KEY, xid); + headers.put(GrpcHeaderKey.XID_HEADER_KEY, xid); + headers.put(GrpcHeaderKey.BRANCH_HEADER_KEY, RootContext.getBranchType().name()); } super.start(new ForwardingClientCallListener.SimpleForwardingClientCallListener(responseListener) { @Override diff --git a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java index 03d838487f6..a8df4ab6a4c 100644 --- a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java +++ b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java @@ -15,11 +15,13 @@ */ package io.seata.integration.grpc.interceptor.server; +import java.util.Map; +import java.util.Objects; + import io.grpc.ServerCall; import io.seata.common.util.StringUtils; import io.seata.core.context.RootContext; - -import java.util.Objects; +import io.seata.core.model.BranchType; /** * @author eddyxu1213@126.com @@ -27,13 +29,16 @@ public class ServerListenerProxy extends ServerCall.Listener { private ServerCall.Listener target; - private String xid; + private final String xid; - public ServerListenerProxy(String xid, ServerCall.Listener target) { + private final Map context; + + public ServerListenerProxy(String xid, Map context, ServerCall.Listener target) { super(); Objects.requireNonNull(target); this.target = target; this.xid = xid; + this.context = context; } @Override @@ -45,23 +50,23 @@ public void onMessage(ReqT message) { public void onHalfClose() { if (StringUtils.isNotBlank(xid)) { RootContext.bind(xid); + String branchType = context.get(RootContext.KEY_BRANCH_TYPE); + if (StringUtils.equals(BranchType.TCC.name(), branchType)) { + RootContext.bindBranchType(BranchType.TCC); + } } target.onHalfClose(); } @Override public void onCancel() { - if (StringUtils.isNotBlank(xid) && RootContext.inGlobalTransaction()) { - RootContext.unbind(); - } + cleanContext(); target.onCancel(); } @Override public void onComplete() { - if (StringUtils.isNotBlank(xid) && RootContext.inGlobalTransaction()) { - RootContext.unbind(); - } + cleanContext(); target.onComplete(); } @@ -69,4 +74,11 @@ public void onComplete() { public void onReady() { target.onReady(); } + + private void cleanContext() { + if (StringUtils.isNotBlank(xid) && RootContext.inGlobalTransaction()) { + RootContext.unbind(); + RootContext.unbindBranchType(); + } + } } diff --git a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerTransactionInterceptor.java b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerTransactionInterceptor.java index 3c786582813..3c50fcc55b7 100644 --- a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerTransactionInterceptor.java +++ b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerTransactionInterceptor.java @@ -15,10 +15,15 @@ */ package io.seata.integration.grpc.interceptor.server; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + import io.grpc.Metadata; import io.grpc.ServerCall; import io.grpc.ServerCallHandler; import io.grpc.ServerInterceptor; +import io.seata.core.context.RootContext; import io.seata.integration.grpc.interceptor.GrpcHeaderKey; /** @@ -32,7 +37,11 @@ public ServerCall.Listener interceptCall( Metadata metadata, ServerCallHandler serverCallHandler) { String xid = getRpcXid(metadata); - return new ServerListenerProxy<>(xid, serverCallHandler.startCall(serverCall, metadata)); + String branchName = getBranchName(metadata); + Map context = new HashMap<>(); + context.put(RootContext.KEY_BRANCH_TYPE, branchName); + return new ServerListenerProxy<>(xid, Collections.unmodifiableMap(context), + serverCallHandler.startCall(serverCall, metadata)); } /** @@ -41,11 +50,15 @@ public ServerCall.Listener interceptCall( * @return */ private String getRpcXid(Metadata metadata) { - String rpcXid = metadata.get(GrpcHeaderKey.HEADER_KEY); + String rpcXid = metadata.get(GrpcHeaderKey.XID_HEADER_KEY); if (rpcXid == null) { - rpcXid = metadata.get(GrpcHeaderKey.HEADER_KEY_LOWERCASE); + rpcXid = metadata.get(GrpcHeaderKey.XID_HEADER_KEY_LOWERCASE); } return rpcXid; } + private String getBranchName(Metadata metadata) { + return metadata.get(GrpcHeaderKey.BRANCH_HEADER_KEY); + } + } diff --git a/integration/grpc/src/test/java/io/seata/integration/grpc/interceptor/GrpcTest.java b/integration/grpc/src/test/java/io/seata/integration/grpc/interceptor/GrpcTest.java index 4a3fb7f8f82..b300e22b5e1 100644 --- a/integration/grpc/src/test/java/io/seata/integration/grpc/interceptor/GrpcTest.java +++ b/integration/grpc/src/test/java/io/seata/integration/grpc/interceptor/GrpcTest.java @@ -15,6 +15,13 @@ */ package io.seata.integration.grpc.interceptor; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executor; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import com.google.common.util.concurrent.ListenableFuture; import io.grpc.ClientInterceptors; import io.grpc.ManagedChannel; @@ -26,6 +33,7 @@ import io.grpc.stub.StreamObserver; import io.grpc.testing.GrpcCleanupRule; import io.seata.core.context.RootContext; +import io.seata.core.model.BranchType; import io.seata.integration.grpc.interceptor.client.ClientTransactionInterceptor; import io.seata.integration.grpc.interceptor.proto.ContextRpcGrpc; import io.seata.integration.grpc.interceptor.proto.Request; @@ -36,13 +44,6 @@ import org.mockito.ArgumentCaptor; import org.mockito.ArgumentMatchers; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.Executor; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - import static org.junit.Assert.assertEquals; import static org.mockito.AdditionalAnswers.delegatesTo; import static org.mockito.Mockito.mock; @@ -56,6 +57,7 @@ public class GrpcTest { @Rule public final GrpcCleanupRule grpcCleanup = new GrpcCleanupRule(); private final ServerInterceptor mockServerInterceptor = mock(ServerInterceptor.class, delegatesTo(new ServerTransactionInterceptor())); + private final String XID="192.168.0.1:8091:10086"; @Test @@ -63,7 +65,7 @@ public void clientHeaderDeliveredToServer() throws Exception { String serverName = InProcessServerBuilder.generateName(); CountDownLatch countDownLatch = new CountDownLatch(1); - String[] context = {null}; + String[] context = new String[]{null,null}; //executor Executor executorService = new ThreadPoolExecutor(2, 2, 1, TimeUnit.HOURS, new LinkedBlockingQueue<>(), new ThreadFactory() { @@ -79,6 +81,7 @@ public Thread newThread(Runnable r) { @Override public void contextRpc(Request request, StreamObserver responseObserver) { context[0] = RootContext.getXID(); + context[1] = RootContext.getBranchType().name(); countDownLatch.countDown(); responseObserver.onNext(Response.newBuilder().setGreet("hello! " + request.getName()).build()); responseObserver.onCompleted(); @@ -90,15 +93,18 @@ public void contextRpc(Request request, StreamObserver responseObserve ManagedChannel channel = grpcCleanup.register(InProcessChannelBuilder.forName(serverName).executor(executorService).build()); ContextRpcGrpc.ContextRpcFutureStub stub = ContextRpcGrpc.newFutureStub( ClientInterceptors.intercept(channel, new ClientTransactionInterceptor())); - RootContext.bind("test_context"); + RootContext.bind(XID); + RootContext.bindBranchType(BranchType.TCC); ListenableFuture future = stub.contextRpc(Request.newBuilder().setName("seata").build()); assertEquals("hello! seata", future.get().getGreet()); ArgumentCaptor metadataCaptor = ArgumentCaptor.forClass(Metadata.class); verify(mockServerInterceptor).interceptCall(ArgumentMatchers.any(), metadataCaptor.capture(), ArgumentMatchers.any()); - assertEquals("test_context", metadataCaptor.getValue().get(GrpcHeaderKey.HEADER_KEY)); + assertEquals(XID, metadataCaptor.getValue().get(GrpcHeaderKey.XID_HEADER_KEY)); + assertEquals(BranchType.TCC.name(), metadataCaptor.getValue().get(GrpcHeaderKey.BRANCH_HEADER_KEY)); countDownLatch.await(); - assertEquals("test_context", context[0]); + assertEquals(XID, context[0]); + assertEquals(BranchType.TCC.name(), context[1]); } } From a20ad422897040084e9bbd63fc48ec3cbd1b5658 Mon Sep 17 00:00:00 2001 From: Dmego Date: Tue, 14 Feb 2023 23:41:11 +0800 Subject: [PATCH 036/182] optimize: add tcc fence log clean task delay check(2.x) (#5342) --- changes/en-us/2.0.0.md | 2 ++ changes/zh-cn/2.0.0.md | 2 ++ .../integration/tx/api/fence/config/CommonFenceConfig.java | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 083ff86c9bd..f5368aa5c3b 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -53,6 +53,7 @@ The version is updated as follows: - [[#5323](https://github.com/seata/seata/pull/5323)] add time info for global transaction timeout log - [[#5328](https://github.com/seata/seata/pull/5333)] add corresponding lua implementation for Redis mode of global transaction and transaction storage - [[#5341](https://github.com/seata/seata/pull/5341)] optimize gRPC Interceptor for TCC mode +- [[#5342](https://github.com/seata/seata/pull/5342)] optimize the check of the delay value of the TCC fence log clean task ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] @@ -80,6 +81,7 @@ Thanks to these contributors for their code commits. Please report an unintended - [mxsm](https://github.com/mxsm) - [liuqiufeng](https://github.com/liuqiufeng) - [l81893521](https://github.com/l81893521) +- [dmego](https://github.com/dmego) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index a7dfffc35cf..b84b32e316f 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -53,6 +53,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5323](https://github.com/seata/seata/pull/5323)] 为全局事务超时日志添加时间信息 - [[#5328](https://github.com/seata/seata/pull/5333)] 为全局事务和事务存储的Redis模式,增加对应的lua实现 - [[#5341](https://github.com/seata/seata/pull/5341)] 优化 gRPC TCC模式 +- [[#5342](https://github.com/seata/seata/pull/5342)] 优化 TCC fence log 清理定时任务的 delay 参数值检查 ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 @@ -83,6 +84,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [mxsm](https://github.com/mxsm) - [liuqiufeng](https://github.com/liuqiufeng) - [l81893521](https://github.com/l81893521) +- [dmego](https://github.com/dmego) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java index 1023fa16916..8d7c27c04b5 100644 --- a/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java +++ b/integration-tx-api/src/main/java/io/seata/integration/tx/api/fence/config/CommonFenceConfig.java @@ -81,6 +81,11 @@ public void setLogTableName(String logTableName) { */ public void initCleanTask() { try { + // disable clear task when cleanPeriod <= 0 + if (cleanPeriod.isZero() || cleanPeriod.isNegative()) { + LOGGER.info("TCC fence log clean task is not started, cleanPeriod is:{}", cleanPeriod); + return; + } // convert to second level. maximum interval is 68 years long periodSeconds = cleanPeriod.compareTo(MAX_PERIOD) >= 0 ? Integer.MAX_VALUE : cleanPeriod.toMillis() / 1000; // start tcc fence clean schedule From d2fc989aaef845b1f165dfdb9c8cccaace206f5e Mon Sep 17 00:00:00 2001 From: jimin Date: Fri, 17 Feb 2023 13:29:08 +0800 Subject: [PATCH 037/182] optimize: optimize RPC filter for TCC mode (#5351) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + ...ansactionPropagationClientInterceptor.java | 12 ++++--- ...ansactionPropagationServerInterceptor.java | 10 ++++-- ...babaDubboTransactionPropagationFilter.java | 2 +- .../server/ServerListenerProxy.java | 18 +++++++++-- .../motan/MotanTransactionFilter.java | 31 +++++++++++++++--- .../rpc/TransactionContextConsumerFilter.java | 29 ++++++++++++++--- .../rpc/TransactionContextProviderFilter.java | 32 +++++++++++++++---- 9 files changed, 110 insertions(+), 26 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index f5368aa5c3b..305825ce5df 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -54,6 +54,7 @@ The version is updated as follows: - [[#5328](https://github.com/seata/seata/pull/5333)] add corresponding lua implementation for Redis mode of global transaction and transaction storage - [[#5341](https://github.com/seata/seata/pull/5341)] optimize gRPC Interceptor for TCC mode - [[#5342](https://github.com/seata/seata/pull/5342)] optimize the check of the delay value of the TCC fence log clean task +- [[#5351](https://github.com/seata/seata/pull/5351)] optimize RPC filter for TCC mode ### test: - [[#5308](https://github.com/seata/seata/pull/5308)] add unit test [FileLoader, ObjectHolder, StringUtils] diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index b84b32e316f..953557cc3ba 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -54,6 +54,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5328](https://github.com/seata/seata/pull/5333)] 为全局事务和事务存储的Redis模式,增加对应的lua实现 - [[#5341](https://github.com/seata/seata/pull/5341)] 优化 gRPC TCC模式 - [[#5342](https://github.com/seata/seata/pull/5342)] 优化 TCC fence log 清理定时任务的 delay 参数值检查 +- [[#5351](https://github.com/seata/seata/pull/5351)] 优化 TCC 模式下的 RPC filter ### security: - [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本 diff --git a/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationClientInterceptor.java b/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationClientInterceptor.java index 3f3368aeade..70624147233 100644 --- a/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationClientInterceptor.java +++ b/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationClientInterceptor.java @@ -15,6 +15,9 @@ */ package io.seata.integration.brpc; +import java.util.HashMap; +import java.util.Map; + import com.baidu.brpc.RpcContext; import com.baidu.brpc.interceptor.AbstractInterceptor; import com.baidu.brpc.interceptor.InterceptorChain; @@ -24,9 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; -import java.util.Map; - /** * load SEATA xid for brpc request * @@ -74,6 +74,10 @@ private String getRpcXid() { if (null == requestKvAttachmentMap) { return null; } - return (String) requestKvAttachmentMap.get(RootContext.KEY_XID); + String xid = (String)requestKvAttachmentMap.get(RootContext.KEY_XID); + if (null != xid) { + return xid; + } + return (String)requestKvAttachmentMap.get(RootContext.KEY_XID.toLowerCase()); } } diff --git a/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationServerInterceptor.java b/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationServerInterceptor.java index 987d18c6420..a5baac0160d 100644 --- a/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationServerInterceptor.java +++ b/integration/brpc/src/main/java/io/seata/integration/brpc/TransactionPropagationServerInterceptor.java @@ -15,6 +15,8 @@ */ package io.seata.integration.brpc; +import java.util.Map; + import com.baidu.brpc.interceptor.AbstractInterceptor; import com.baidu.brpc.interceptor.InterceptorChain; import com.baidu.brpc.protocol.Request; @@ -24,8 +26,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Map; - /** *

1. load SEATA xid from brpc request in handleRequest

*

2. clear SEATA xid when brpc request done in aroundProcess

@@ -89,7 +89,11 @@ private String getRpcXid(Request brpcRequest) { if (null == kvAttachment) { return null; } - return (String) kvAttachment.get(RootContext.KEY_XID); + String xid = (String)kvAttachment.get(RootContext.KEY_XID); + if (null != xid) { + return xid; + } + return (String)kvAttachment.get(RootContext.KEY_XID.toLowerCase()); } private String getRpcBranchType(Request brpcRequest) { diff --git a/integration/dubbo-alibaba/src/main/java/io/seata/integration/dubbo/alibaba/AlibabaDubboTransactionPropagationFilter.java b/integration/dubbo-alibaba/src/main/java/io/seata/integration/dubbo/alibaba/AlibabaDubboTransactionPropagationFilter.java index 3f7eb64d595..f00d79933a3 100644 --- a/integration/dubbo-alibaba/src/main/java/io/seata/integration/dubbo/alibaba/AlibabaDubboTransactionPropagationFilter.java +++ b/integration/dubbo-alibaba/src/main/java/io/seata/integration/dubbo/alibaba/AlibabaDubboTransactionPropagationFilter.java @@ -82,7 +82,7 @@ public Result invoke(Invoker invoker, Invocation invocation) throws RpcExcept } if (!rpcXid.equalsIgnoreCase(unbindXid)) { LOGGER.warn("xid in change during RPC from {} to {},branchType from {} to {}", rpcXid, unbindXid, - rpcBranchType != null ? rpcBranchType : "AT", previousBranchType); + rpcBranchType != null ? rpcBranchType : BranchType.AT,previousBranchType); if (unbindXid != null) { RootContext.bind(unbindXid); LOGGER.warn("bind xid [{}] back to RootContext", unbindXid); diff --git a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java index a8df4ab6a4c..946d7deabbe 100644 --- a/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java +++ b/integration/grpc/src/main/java/io/seata/integration/grpc/interceptor/server/ServerListenerProxy.java @@ -22,11 +22,14 @@ import io.seata.common.util.StringUtils; import io.seata.core.context.RootContext; import io.seata.core.model.BranchType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author eddyxu1213@126.com */ public class ServerListenerProxy extends ServerCall.Listener { + private static final Logger LOGGER = LoggerFactory.getLogger(ServerListenerProxy.class); private ServerCall.Listener target; private final String xid; @@ -77,8 +80,19 @@ public void onReady() { private void cleanContext() { if (StringUtils.isNotBlank(xid) && RootContext.inGlobalTransaction()) { - RootContext.unbind(); - RootContext.unbindBranchType(); + String unbindXid = RootContext.unbind(); + BranchType previousBranchType = RootContext.getBranchType(); + if (BranchType.TCC == previousBranchType) { + RootContext.unbindBranchType(); + } + if (!xid.equalsIgnoreCase(unbindXid)) { + RootContext.bind(unbindXid); + LOGGER.warn("bind xid [{}] back to RootContext", unbindXid); + if (BranchType.TCC == previousBranchType) { + RootContext.bindBranchType(previousBranchType); + LOGGER.warn("bind branchType [{}] back to RootContext", previousBranchType); + } + } } } } diff --git a/integration/motan/src/main/java/io/seata/integration/motan/MotanTransactionFilter.java b/integration/motan/src/main/java/io/seata/integration/motan/MotanTransactionFilter.java index d4a76033277..7736c6e381e 100644 --- a/integration/motan/src/main/java/io/seata/integration/motan/MotanTransactionFilter.java +++ b/integration/motan/src/main/java/io/seata/integration/motan/MotanTransactionFilter.java @@ -23,7 +23,9 @@ import com.weibo.api.motan.rpc.Caller; import com.weibo.api.motan.rpc.Request; import com.weibo.api.motan.rpc.Response; +import io.seata.common.util.StringUtils; import io.seata.core.context.RootContext; +import io.seata.core.model.BranchType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,18 +41,25 @@ public MotanTransactionFilter(){} @Override public Response filter(final Caller caller, final Request request) { String currentXid = RootContext.getXID(); + BranchType branchType = RootContext.getBranchType(); String requestXid = getRpcXid(request); + String rpcBranchType = getBranchType(request); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("xid in RootContext [" + currentXid + "] xid in Request [" + requestXid + "]"); + LOGGER.debug("context in RootContext[{},{}], context in RpcContext[{},{}]", currentXid, branchType, requestXid, rpcBranchType); } boolean bind = false; if (currentXid != null) { request.getAttachments().put(RootContext.KEY_XID, currentXid); + request.getAttachments().put(RootContext.KEY_BRANCH_TYPE, branchType.name()); + } else if (requestXid != null) { RootContext.bind(requestXid); + if (StringUtils.equals(BranchType.TCC.name(), rpcBranchType)) { + RootContext.bindBranchType(BranchType.TCC); + } bind = true; if (LOGGER.isDebugEnabled()) { - LOGGER.debug("bind [" + requestXid + "] to RootContext"); + LOGGER.debug("bind [{}] to RootContext", requestXid); } } @@ -58,15 +67,23 @@ public Response filter(final Caller caller, final Request request) { return caller.call(request); } finally { if (bind) { + BranchType previousBranchType = RootContext.getBranchType(); String unbindXid = RootContext.unbind(); + if (BranchType.TCC == previousBranchType) { + RootContext.unbindBranchType(); + } if (LOGGER.isDebugEnabled()) { - LOGGER.debug("unbind [" + unbindXid + "] from RootContext"); + LOGGER.debug("unbind xid [{}] branchType [{}] from RootContext", unbindXid, previousBranchType); } if (!requestXid.equalsIgnoreCase(unbindXid)) { - LOGGER.warn("xid has changed, during RPC from " + requestXid + " to " + unbindXid); + LOGGER.warn("xid has changed, during RPC from [{}] to [{}]", requestXid, unbindXid); if (unbindXid != null) { RootContext.bind(unbindXid); - LOGGER.warn("bind [" + unbindXid + "] back to RootContext"); + LOGGER.warn("bind [{}}] back to RootContext",unbindXid); + if (BranchType.TCC == previousBranchType) { + RootContext.bindBranchType(BranchType.TCC); + LOGGER.warn("bind branchType [{}] back to RootContext", previousBranchType); + } } } } @@ -86,4 +103,8 @@ private String getRpcXid(Request request) { return rpcXid; } + private String getBranchType(Request request) { + return request.getAttachments().get(RootContext.KEY_BRANCH_TYPE); + } + } diff --git a/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextConsumerFilter.java b/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextConsumerFilter.java index 14631243bd1..71cb0fa78d5 100644 --- a/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextConsumerFilter.java +++ b/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextConsumerFilter.java @@ -23,7 +23,9 @@ import com.alipay.sofa.rpc.filter.AutoActive; import com.alipay.sofa.rpc.filter.Filter; import com.alipay.sofa.rpc.filter.FilterInvoker; +import io.seata.common.util.StringUtils; import io.seata.core.context.RootContext; +import io.seata.core.model.BranchType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,18 +48,24 @@ public class TransactionContextConsumerFilter extends Filter { public SofaResponse invoke(FilterInvoker filterInvoker, SofaRequest sofaRequest) throws SofaRpcException { String xid = RootContext.getXID(); String rpcXid = getRpcXid(); + BranchType branchType = RootContext.getBranchType(); + String rpcBranchType = getBranchType(); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("xid in RootContext[" + xid + "] xid in RpcContext[" + rpcXid + "]"); + LOGGER.debug("context in RootContext[{},{}], context in RpcContext[{},{}]", xid, branchType, rpcXid, rpcBranchType); } boolean bind = false; if (xid != null) { sofaRequest.addRequestProp(RootContext.KEY_XID, xid); + sofaRequest.addRequestProp(RootContext.KEY_BRANCH_TYPE, branchType.name()); } else { if (rpcXid != null) { RootContext.bind(rpcXid); + if (StringUtils.equals(BranchType.TCC.name(), rpcBranchType)) { + RootContext.bindBranchType(BranchType.TCC); + } bind = true; if (LOGGER.isDebugEnabled()) { - LOGGER.debug("bind[" + rpcXid + "] to RootContext"); + LOGGER.debug("bind[{}] to RootContext",rpcXid); } } } @@ -67,16 +75,24 @@ public SofaResponse invoke(FilterInvoker filterInvoker, SofaRequest sofaRequest) if (bind) { String unbindXid = RootContext.unbind(); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("unbind[" + unbindXid + "] from RootContext"); + LOGGER.debug("unbind[{}] from RootContext", unbindXid); + } + BranchType previousBranchType = RootContext.getBranchType(); + if (BranchType.TCC == previousBranchType) { + RootContext.unbindBranchType(); } if (!rpcXid.equalsIgnoreCase(unbindXid)) { if (LOGGER.isWarnEnabled()) { - LOGGER.warn("xid in change during RPC from " + rpcXid + " to " + unbindXid); + LOGGER.warn("xid in change during RPC from [{}] to [{}]", rpcXid,unbindXid); } if (unbindXid != null) { RootContext.bind(unbindXid); if (LOGGER.isWarnEnabled()) { - LOGGER.warn("bind [" + unbindXid + "] back to RootContext"); + LOGGER.warn("bind [{}] back to RootContext", unbindXid); + } + if (BranchType.TCC == previousBranchType) { + RootContext.bindBranchType(BranchType.TCC); + LOGGER.warn("bind branchType [{}] back to RootContext", previousBranchType); } } } @@ -95,5 +111,8 @@ private String getRpcXid() { } return rpcXid; } + private String getBranchType() { + return (String) RpcInternalContext.getContext().getAttachment(RootContext.KEY_BRANCH_TYPE); + } } diff --git a/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextProviderFilter.java b/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextProviderFilter.java index 15bbed97c9c..5e3e74047dc 100644 --- a/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextProviderFilter.java +++ b/integration/sofa-rpc/src/main/java/io/seata/integration/sofa/rpc/TransactionContextProviderFilter.java @@ -23,7 +23,9 @@ import com.alipay.sofa.rpc.filter.AutoActive; import com.alipay.sofa.rpc.filter.Filter; import com.alipay.sofa.rpc.filter.FilterInvoker; +import io.seata.common.util.StringUtils; import io.seata.core.context.RootContext; +import io.seata.core.model.BranchType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,18 +48,24 @@ public class TransactionContextProviderFilter extends Filter { public SofaResponse invoke(FilterInvoker filterInvoker, SofaRequest sofaRequest) throws SofaRpcException { String xid = RootContext.getXID(); String rpcXid = getRpcXid(sofaRequest); + BranchType branchType = RootContext.getBranchType(); + String rpcBranchType = getBranchType(sofaRequest); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("xid in RootContext[" + xid + "] xid in RpcContext[" + rpcXid + "]"); + LOGGER.debug("context in RootContext[{},{}], context in RpcContext[{},{}]", xid, branchType, rpcXid, rpcBranchType); } boolean bind = false; if (xid != null) { RpcInternalContext.getContext().setAttachment(RootContext.KEY_XID, xid); + RpcInternalContext.getContext().setAttachment(RootContext.KEY_BRANCH_TYPE, branchType.name()); } else { - if (rpcXid != null) { + if (null != rpcXid) { RootContext.bind(rpcXid); + if (StringUtils.equals(BranchType.TCC.name(), rpcBranchType)) { + RootContext.bindBranchType(BranchType.TCC); + } bind = true; if (LOGGER.isDebugEnabled()) { - LOGGER.debug("bind[" + rpcXid + "] to RootContext"); + LOGGER.debug("bind[{}] to RootContext",rpcXid); } } } @@ -67,16 +75,24 @@ public SofaResponse invoke(FilterInvoker filterInvoker, SofaRequest sofaRequest) if (bind) { String unbindXid = RootContext.unbind(); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("unbind[" + unbindXid + "] from RootContext"); + LOGGER.debug("unbind[{}] from RootContext",unbindXid); + } + BranchType previousBranchType = RootContext.getBranchType(); + if (BranchType.TCC == previousBranchType) { + RootContext.unbindBranchType(); } if (!rpcXid.equalsIgnoreCase(unbindXid)) { if (LOGGER.isWarnEnabled()) { - LOGGER.warn("xid in change during RPC from " + rpcXid + " to " + unbindXid); + LOGGER.warn("xid in change during RPC from [{}] to [{}]", rpcXid,unbindXid); } if (unbindXid != null) { RootContext.bind(unbindXid); if (LOGGER.isWarnEnabled()) { - LOGGER.warn("bind [" + unbindXid + "] back to RootContext"); + LOGGER.warn("bind [{}] back to RootContext",unbindXid); + } + if (BranchType.TCC == previousBranchType) { + RootContext.bindBranchType(BranchType.TCC); + LOGGER.warn("bind branchType [{}] back to RootContext", previousBranchType); } } } @@ -96,4 +112,8 @@ private String getRpcXid(SofaRequest sofaRequest) { return rpcXid; } + private String getBranchType(SofaRequest sofaRequest) { + return (String) sofaRequest.getRequestProp(RootContext.KEY_BRANCH_TYPE); + } + } From 87a7b58e97c04c2179ca41961cd3aabf6e856340 Mon Sep 17 00:00:00 2001 From: renliangyu857 <2918490262@qq.com> Date: Fri, 17 Feb 2023 19:19:37 +0800 Subject: [PATCH 038/182] optimize: add config type,registry type,store mode log (#5344) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../src/main/java/io/seata/config/ConfigurationFactory.java | 2 +- .../io/seata/discovery/registry/MultiRegistryFactory.java | 5 +++++ .../java/io/seata/discovery/registry/RegistryFactory.java | 5 +++++ .../io/seata/server/coordinator/DefaultCoordinator.java | 6 +++++- .../java/io/seata/server/lock/LockerManagerFactory.java | 4 ++++ .../main/java/io/seata/server/session/SessionHolder.java | 1 + 8 files changed, 23 insertions(+), 2 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index 305825ce5df..abe69d8e994 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -54,6 +54,7 @@ The version is updated as follows: - [[#5328](https://github.com/seata/seata/pull/5333)] add corresponding lua implementation for Redis mode of global transaction and transaction storage - [[#5341](https://github.com/seata/seata/pull/5341)] optimize gRPC Interceptor for TCC mode - [[#5342](https://github.com/seata/seata/pull/5342)] optimize the check of the delay value of the TCC fence log clean task +- [[#5325](https://github.com/seata/seata/pull/5325)] add store mode,config type and registry type log info - [[#5351](https://github.com/seata/seata/pull/5351)] optimize RPC filter for TCC mode ### test: diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 953557cc3ba..6b1e6536af7 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -54,6 +54,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5328](https://github.com/seata/seata/pull/5333)] 为全局事务和事务存储的Redis模式,增加对应的lua实现 - [[#5341](https://github.com/seata/seata/pull/5341)] 优化 gRPC TCC模式 - [[#5342](https://github.com/seata/seata/pull/5342)] 优化 TCC fence log 清理定时任务的 delay 参数值检查 +- [[#5325](https://github.com/seata/seata/pull/5325)] 添加配置中心、注册中心类型以及存储模式日志信息 - [[#5351](https://github.com/seata/seata/pull/5351)] 优化 TCC 模式下的 RPC filter ### security: diff --git a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java index 55eb54d3fbc..38edf0c7ec4 100644 --- a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java +++ b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationFactory.java @@ -104,7 +104,7 @@ private static Configuration buildConfiguration() { String configTypeName = CURRENT_FILE_INSTANCE.getConfig( ConfigurationKeys.FILE_ROOT_CONFIG + ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR + ConfigurationKeys.FILE_ROOT_TYPE); - + LOGGER.info("use configuration center type: {}", configTypeName); if (StringUtils.isBlank(configTypeName)) { throw new NotSupportYetException("config type can not be null"); } diff --git a/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/MultiRegistryFactory.java b/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/MultiRegistryFactory.java index 2ded7a176ad..cbb4a98dc09 100644 --- a/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/MultiRegistryFactory.java +++ b/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/MultiRegistryFactory.java @@ -25,6 +25,8 @@ import io.seata.common.loader.EnhancedServiceLoader; import io.seata.common.util.StringUtils; import io.seata.config.ConfigurationFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The type multiple Registry factory. @@ -33,6 +35,8 @@ */ public class MultiRegistryFactory { + private static final Logger LOGGER = LoggerFactory.getLogger(MultiRegistryFactory.class); + /** * Gets instances. * @@ -50,6 +54,7 @@ private static List buildRegistryServices() { if (StringUtils.isBlank(registryTypeNamesStr)) { registryTypeNamesStr = RegistryType.File.name(); } + LOGGER.info("use multi registry center type: {}", registryTypeNamesStr); String[] registryTypeNames = registryTypeNamesStr.split(Constants.REGISTRY_TYPE_SPLIT_CHAR); for (String registryTypeName : registryTypeNames) { RegistryType registryType; diff --git a/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/RegistryFactory.java b/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/RegistryFactory.java index d1084ec19ef..9f8cd2e4f4a 100644 --- a/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/RegistryFactory.java +++ b/discovery/seata-discovery-core/src/main/java/io/seata/discovery/registry/RegistryFactory.java @@ -21,6 +21,8 @@ import io.seata.common.loader.EnhancedServiceLoader; import io.seata.config.ConfigurationFactory; import io.seata.config.ConfigurationKeys; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The type Registry factory. @@ -29,6 +31,8 @@ */ public class RegistryFactory { + private static final Logger LOGGER = LoggerFactory.getLogger(RegistryFactory.class); + /** * Gets instance. * @@ -43,6 +47,7 @@ private static RegistryService buildRegistryService() { String registryTypeName = ConfigurationFactory.CURRENT_FILE_INSTANCE.getConfig( ConfigurationKeys.FILE_ROOT_REGISTRY + ConfigurationKeys.FILE_CONFIG_SPLIT_CHAR + ConfigurationKeys.FILE_ROOT_TYPE); + LOGGER.info("use registry center type: {}", registryTypeName); try { registryType = RegistryType.getType(registryTypeName); } catch (Exception exx) { diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index a76af52400d..252434092d3 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -65,6 +65,7 @@ import io.seata.server.session.SessionHelper; import io.seata.server.session.SessionHolder; import io.seata.server.store.StoreConfig; +import org.apache.commons.lang.time.DateFormatUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -93,6 +94,8 @@ public class DefaultCoordinator extends AbstractTCInboundHandler implements Tran private static final int TIMED_TASK_SHUTDOWN_MAX_WAIT_MILLS = 5000; + private static final String TIME_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS"; + /** * The constant COMMITTING_RETRY_PERIOD. */ @@ -337,7 +340,8 @@ protected void timeoutCheck() { return false; } - LOGGER.warn("Global transaction[{}] is timeout and will be rollback,transaction begin time:{} and now:{}", globalSession.getXid(), globalSession.getBeginTime(), System.currentTimeMillis()); + LOGGER.warn("Global transaction[{}] is timeout and will be rollback,transaction begin time:{} and now:{}", globalSession.getXid(), + DateFormatUtils.format(globalSession.getBeginTime(), TIME_FORMAT_PATTERN), DateFormatUtils.format(System.currentTimeMillis(), TIME_FORMAT_PATTERN)); globalSession.close(); globalSession.changeGlobalStatus(GlobalStatus.TimeoutRollbacking); diff --git a/server/src/main/java/io/seata/server/lock/LockerManagerFactory.java b/server/src/main/java/io/seata/server/lock/LockerManagerFactory.java index cec4f0daf53..b4aef8478b6 100644 --- a/server/src/main/java/io/seata/server/lock/LockerManagerFactory.java +++ b/server/src/main/java/io/seata/server/lock/LockerManagerFactory.java @@ -20,6 +20,8 @@ import io.seata.config.ConfigurationFactory; import io.seata.server.store.StoreConfig; import io.seata.server.store.StoreConfig.LockMode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The type Lock manager factory. @@ -28,6 +30,7 @@ */ public class LockerManagerFactory { + private static final Logger LOGGER = LoggerFactory.getLogger(LockerManagerFactory.class); private static final Configuration CONFIG = ConfigurationFactory.getInstance(); /** @@ -58,6 +61,7 @@ public static void init(LockMode lockMode) { if (null == lockMode) { lockMode = StoreConfig.getLockMode(); } + LOGGER.info("use lock store mode: {}", lockMode.getName()); //if not exist the lock mode, throw exception if (null != StoreConfig.StoreMode.get(lockMode.name())) { LOCK_MANAGER = EnhancedServiceLoader.load(LockManager.class, lockMode.getName()); diff --git a/server/src/main/java/io/seata/server/session/SessionHolder.java b/server/src/main/java/io/seata/server/session/SessionHolder.java index 5d51335d926..7491f2664a0 100644 --- a/server/src/main/java/io/seata/server/session/SessionHolder.java +++ b/server/src/main/java/io/seata/server/session/SessionHolder.java @@ -99,6 +99,7 @@ public static void init(SessionMode sessionMode) { if (null == sessionMode) { sessionMode = StoreConfig.getSessionMode(); } + LOGGER.info("use session store mode: {}", sessionMode.getName()); if (SessionMode.DB.equals(sessionMode)) { ROOT_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, SessionMode.DB.getName()); From cb03b79bbcddd3bcd12fca24a53a336397e8526a Mon Sep 17 00:00:00 2001 From: leon2LF Date: Fri, 17 Feb 2023 19:21:07 +0800 Subject: [PATCH 039/182] docs: optimize the contribution guide to avoid the obscurity of literal translation (#5314) --- CONTRIBUTING_CN.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING_CN.md b/CONTRIBUTING_CN.md index 2b63b60a753..7e5503edac6 100644 --- a/CONTRIBUTING_CN.md +++ b/CONTRIBUTING_CN.md @@ -15,17 +15,17 @@ ## 报告安全问题 -安全问题总是得到认真对待。作为我们通常的原则,我们不鼓励任何人传播安全问题。如果您发现Seata的安全问题,请不要公开讨论,甚至不要公开问题。相反,我们鼓励您向 [dev-seata@googlegroups.com](mailto:dev-seata@googlegroups.com) 发送私人电子邮件 以报告此情况。 +安全问题总会认真对待。通常,我们不鼓励任何人传播安全问题。如果您发现Seata的安全问题,请不要公开讨论,甚至不要公开问题。相反,我们鼓励您向 [dev-seata@googlegroups.com](mailto:dev-seata@googlegroups.com) 发送私人电子邮件 以报告此情况。 ## 报告一般问题 -老实说,我们把每一个 Seata 用户都视为非常善良的贡献者。在体验了 Seata 之后,您可能会对项目有一些反馈。然后随时通过 [NEW ISSUE](https://github.com/seata/seata/issues/new/choose)打开一个问题。 +老实说,我们认为每一个 Seata 用户都是非常好的贡献者。在体验了 Seata 之后,您可能会对项目有一些反馈。那么随时可以通过 [NEW ISSUE](https://github.com/seata/seata/issues/new/choose) 来提交。 -因为我们在一个分布式的方式合作项目Seata,我们欣赏写得很好的,详细的,准确的问题报告。为了让沟通更高效,我们希望每个人都可以搜索您的问题是否在搜索列表中。如果您发现它存在,请在现有问题下的评论中添加您的详细信息,而不是打开一个全新的问题。 +由于我们通过分布式方式协作Seata,我们欣赏高质量,详细的,准确的问题报告。为了让沟通更高效,我们希望每个人都可以搜索下您的问题是否在搜索列表中。如果您发现它存在,请在现有问题评论中添加您的详细信息,而不是打开一个全新的问题。 -为了使问题细节尽可能标准,我们为问题报告者设置了一个[问题模板](./.github/ISSUE_TEMPLATE) 请务必按照说明填写模板中的字段。 +为了使问题细节尽可能标准,我们为问题报告者提供了一个[问题模板](./.github/ISSUE_TEMPLATE) 请务必按照说明填写模板中的字段。 -有很多情况你可以打开一个问题: +遇到以下情况你可以新建一个问题: * 错误报告 * 功能要求 @@ -38,15 +38,15 @@ * 关于项目的任何问题 * 等等 -另外我们必须提醒的是,在填写新问题时,请记住从您的帖子中删除敏感数据。敏感数据可能是密码、密钥、网络位置、私人业务数据等。 +另外我们必须提醒的是,在填写新问题时,请记得从您的帖子中删除敏感数据。敏感数据可能是密码、密钥、网络位置、私人业务数据等。 ## 代码和文档贡献 -鼓励采取一切措施使 Seata 项目变得更好。在 GitHub 上,Seata 的每项改进都可以通过 PR(Pull Request的缩写)实现。 +鼓励采取一切使 Seata 项目变得更好的行动。在 GitHub 上,Seata 的每项改进都可以通过 PR(Pull Request的缩写)实现。 * 如果您发现错别字,请尝试修复它! -* 如果您发现错误,请尝试修复它! -* 如果您发现一些多余的代码,请尝试删除它们! +* 如果您发现bug,请尝试修复它! +* 如果您发现一些冗余的代码,请尝试删除它们! * 如果您发现缺少一些测试用例,请尝试添加它们! * 如果您可以增强功能,请**不要**犹豫! * 如果您发现代码晦涩难懂,请尝试添加注释以使其更加易读! @@ -55,11 +55,11 @@ * 如果您发现文档不正确,只需执行并修复它! * ... -实际上不可能完整地列出它们。记住一个原则: +实际上不可能完全罗列所有场景。但记住一个原则: > 我们期待您的任何PR。 -由于您已准备好通过 PR 改进 Seata,我们建议您可以在此处查看 PR 规则。 +现在您已准备好通过 PR 改进 Seata,我们建议您可以看看这里罗列的 PR 规则。 * [工作区准备](#工作区准备) * [分支定义](#分支定义) @@ -70,9 +70,9 @@ 为了提出 PR,我们假设你已经注册了一个 GitHub ID。然后您可以通过以下步骤完成准备工作: -1. **FORK** Seata 到您的存储库。要完成这项工作,您只需单击 [seata/seata](https://github.com/seata/seata) 主页右侧的 Fork 按钮。然后你将在 中得到你的存储库`https://github.com//seata`,其中your-username是你的 GitHub 用户名。 +1. **FORK** Seata 到您的仓库。要完成这项工作,您只需单击 [seata/seata](https://github.com/seata/seata) 主页右侧的 Fork 按钮。然后你将得到以你的仓库为路径的项目地址:`https://github.com//seata`,其中your-username是你的 GitHub 用户名。 -2. **克隆** 您自己的存储库以在本地开发. 用于 `git clone git@github.com:/seata.git` 将存储库克隆到本地计算机。 然后您可以创建新分支来完成您希望进行的更改。 +2. **克隆** 您自己的存储库以在本地开发. 使用 `git clone git@github.com:/seata.git` 将存储库克隆到本地计算机。 然后您可以创建新分支来完成您希望进行的更改。 3. **设置远程** 将上游设置为 `git@github.com:seata/seata.git` 使用以下两个命令: From 1400743ba1a6d4b92274052d0400d34a324b7390 Mon Sep 17 00:00:00 2001 From: liuqiufeng <775038282@qq.com> Date: Sat, 18 Feb 2023 11:16:19 +0800 Subject: [PATCH 040/182] bugfix: fix bug when customizing context-path (#5355) --- changes/en-us/2.0.0.md | 1 + changes/zh-cn/2.0.0.md | 1 + .../static/console-fe/src/utils/request.ts | 2 +- .../src/main/resources/static/css/main.css | 2 +- console/src/main/resources/static/js/main.js | 41 ++++++++++--------- 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/changes/en-us/2.0.0.md b/changes/en-us/2.0.0.md index abe69d8e994..ac658f320f8 100644 --- a/changes/en-us/2.0.0.md +++ b/changes/en-us/2.0.0.md @@ -35,6 +35,7 @@ The version is updated as follows: - [[#5318](https://github.com/seata/seata/pull/5318)] fix G1 jvm parameter in jdk8 - [[#5330](https://github.com/seata/seata/pull/5330)] fix bugs found in unit tests - [[#5337](https://github.com/seata/seata/pull/5337)] fix bugs found in feature#5165 about sorting problem of multiple interceptor under the spring used environment, by the way fix the BeforeTransaction(AfterTransaction) transaction ordering problem when the order is consistent +- [[#5355](https://github.com/seata/seata/pull/5355)] fix bug when customizing context-path ### optimize: - [[#5208](https://github.com/seata/seata/pull/5208)] optimize throwable getCause once more diff --git a/changes/zh-cn/2.0.0.md b/changes/zh-cn/2.0.0.md index 6b1e6536af7..6468c646ee3 100644 --- a/changes/zh-cn/2.0.0.md +++ b/changes/zh-cn/2.0.0.md @@ -34,6 +34,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#5318](https://github.com/seata/seata/pull/5318)] 修复jdk8 中 G1 参数 - [[#5330](https://github.com/seata/seata/pull/5330)] 修复单元测试中发现的bug - [[#5337](https://github.com/seata/seata/pull/5337)] 修复feature#5165中关于spring使用环境下,多interceptor排序问题,同时修复order一致时无法使用BeforeTransaction(AfterTransaction)事务排序问题 +- [[#5355](https://github.com/seata/seata/pull/5355)] 修复自定义context-path时的问题 ### optimize: diff --git a/console/src/main/resources/static/console-fe/src/utils/request.ts b/console/src/main/resources/static/console-fe/src/utils/request.ts index f0e08e50f8c..f74b7a5204d 100644 --- a/console/src/main/resources/static/console-fe/src/utils/request.ts +++ b/console/src/main/resources/static/console-fe/src/utils/request.ts @@ -43,7 +43,7 @@ const codeMessage = { const request = () => { const instance: AxiosInstance = axios.create({ - baseURL: '/api/v1', + baseURL: 'api/v1', method: 'get', }); diff --git a/console/src/main/resources/static/css/main.css b/console/src/main/resources/static/css/main.css index d730c0c068e..9ac738388b6 100644 --- a/console/src/main/resources/static/css/main.css +++ b/console/src/main/resources/static/css/main.css @@ -7,4 +7,4 @@ * @alifd/next@1.24.18 (https://fusion.design) * Copyright 2018-present Alibaba Group, * Licensed under MIT (https://github.com/alibaba-fusion/next/blob/master/LICENSE) - */.next-sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;top:0;margin:-1px}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}ol,ul{list-style:none;margin:0;padding:0}li{margin-left:0}hr{border:solid #c0c6cc;border-width:1px 0 0;border:0 var(--line-solid,solid) var(--color-line1-2,#c0c6cc);border-top:var(--line-1,1px) var(--line-solid,solid) var(--color-line1-2,#c0c6cc)}a{text-decoration:none}a:link{color:#0064c8;color:var(--color-link-1,#0064c8)}a:visited{color:#0064c8;color:var(--color-link-2,#0064c8)}a:active,a:hover{color:#0064c8;color:var(--color-link-3,#0064c8)}a:active{text-decoration:underline}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.ttf) format("truetype");font-weight:200}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.ttf) format("truetype");font-weight:300}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.ttf) format("truetype");font-weight:400}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.ttf) format("truetype");font-weight:500}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.ttf) format("truetype");font-weight:700}html{font-size:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571;color:#111;color:var(--color-text1-4,#111)}button,input,optgroup,select,textarea{font-family:inherit}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{margin-bottom:10px;margin-bottom:calc(var(--font-size-headline, 20px)*0.5);font-size:20px;font-size:var(--font-size-headline,20px);line-height:36px}h1,h2{font-weight:500;font-weight:var(--font-weight-medium,500)}h2{margin-bottom:8px;margin-bottom:calc(var(--font-size-title, 16px)*0.5);font-size:16px;font-size:var(--font-size-title,16px);line-height:30px}h3,h4{margin-bottom:7px;margin-bottom:calc(var(--font-size-subhead, 14px)*0.5);font-size:14px;font-size:var(--font-size-subhead,14px)}h3,h4,h5{font-weight:400;font-weight:var(--font-weight-2,normal);line-height:24px}h5{margin-bottom:6px;margin-bottom:calc(var(--font-size-body-1, 12px)*0.5);font-size:14px;font-size:var(--font-size-body-2,14px)}h6{margin-bottom:7px;margin-bottom:calc(var(--font-size-body-2, 14px)*0.5);font-weight:500;font-weight:var(--font-weight-medium,500)}h6,p{font-size:12px;font-size:var(--font-size-body-1,12px);line-height:20px}p{margin-bottom:6px;margin-bottom:calc(var(--font-size-body-1, 12px)*0.5);font-weight:400;font-weight:var(--font-weight-2,normal)}strong{font-weight:500}small{font-size:75%}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100px);-ms-transform:translateY(-100px);transform:translateY(-100px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100px);-ms-transform:translateY(-100px);transform:translateY(-100px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDownSmall{0%{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDownSmall{0%{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-24px);-ms-transform:translateY(-24px);transform:translateY(-24px)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-24px);-ms-transform:translateY(-24px);transform:translateY(-24px)}}@-webkit-keyframes fadeOutUpSmall{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}}@keyframes fadeOutUpSmall{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInUp{0%{opacity:0;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{opacity:0;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@-webkit-keyframes zoomInBig{0%{opacity:0;-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}to{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes zoomInBig{0%{opacity:0;-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}to{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOutBig{0%{opacity:1}to{opacity:0;-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOutBig{0%{opacity:1}to{opacity:0;-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes expandInDown{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@keyframes expandInDown{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@-webkit-keyframes expandInUp{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@keyframes expandInUp{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@-webkit-keyframes expandInWithFade{0%{opacity:0}40%{opacity:.1}50%{opacity:.9}to{opacity:1}}@keyframes expandInWithFade{0%{opacity:0}40%{opacity:.1}50%{opacity:.9}to{opacity:1}}@-webkit-keyframes expandOutUp{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@keyframes expandOutUp{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@-webkit-keyframes expandOutDown{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@keyframes expandOutDown{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@-webkit-keyframes expandOutWithFade{0%{opacity:1}70%{opacity:0}to{opacity:0}}@keyframes expandOutWithFade{0%{opacity:1}70%{opacity:0}to{opacity:0}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}20%{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}20%{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInDown,.fadeInLeft{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInRight,.fadeInUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOut,.fadeOutDown{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOutLeft,.fadeOutRight{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideInDown,.slideInUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideInLeft,.slideInRight{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutRight,.slideOutUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutDown,.slideOutLeft{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomIn,.zoomOut{-webkit-backface-visibility:hidden;backface-visibility:hidden}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInDown{-webkit-animation-name:expandInDown;animation-name:expandInDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInDown,.expandOutUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.expandOutUp{-webkit-animation-name:expandOutUp;animation-name:expandOutUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInUp{-webkit-animation-name:expandInUp;animation-name:expandInUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInUp,.expandOutDown{-webkit-backface-visibility:hidden;backface-visibility:hidden}.expandOutDown{-webkit-animation-name:expandOutDown;animation-name:expandOutDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInDownSmall{-webkit-animation-name:fadeInDownSmall;animation-name:fadeInDownSmall;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInDownSmall,.fadeOutUpSmall{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeOutUpSmall{-webkit-animation-name:fadeOutUpSmall;animation-name:fadeOutUpSmall;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomInBig{-webkit-animation-name:zoomInBig;animation-name:zoomInBig;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomInBig,.zoomOutBig{-webkit-backface-visibility:hidden;backface-visibility:hidden}.zoomOutBig{-webkit-animation-name:zoomOutBig;animation-name:zoomOutBig;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-backface-visibility:hidden;backface-visibility:hidden}.expand-enter{overflow:hidden}.expand-enter-active{-webkit-transition:all .3s ease-out;transition:all .3s ease-out}.expand-enter-active>*{-webkit-animation-name:expandInWithFade;animation-name:expandInWithFade;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden}.expand-leave{overflow:hidden}.expand-leave-active{-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.expand-leave-active>*{-webkit-animation-name:expandOutWithFade;animation-name:expandOutWithFade;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden}.next-icon[dir=rtl]:before{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}@font-face{font-family:NextIcon;src:url(//at.alicdn.com/t/font_1899989_lqawitevtzp.eot);src:url(//at.alicdn.com/t/font_1899989_lqawitevtzp.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.woff2) format("woff2"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.woff) format("woff"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.ttf) format("truetype"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.svg#NextIcon) format("svg")}.next-icon{display:inline-block;font-style:normal;font-weight:400;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.next-icon:before{display:inline-block;vertical-align:middle;text-align:center}.next-icon-smile:before{content:"\e65f";content:var(--icon-content-smile,"")}.next-icon-cry:before{content:"\e65d";content:var(--icon-content-cry,"")}.next-icon-success:before{content:"\e60a";content:var(--icon-content-success,"")}.next-icon-warning:before{content:"\e60b";content:var(--icon-content-warning,"")}.next-icon-prompt:before{content:"\e60c";content:var(--icon-content-prompt,"")}.next-icon-error:before{content:"\e60d";content:var(--icon-content-error,"")}.next-icon-help:before{content:"\e673";content:var(--icon-content-help,"")}.next-icon-clock:before{content:"\e621";content:var(--icon-content-clock,"")}.next-icon-success-filling:before{content:"\e63a";content:var(--icon-content-success-filling,"")}.next-icon-delete-filling:before{content:"\e623";content:var(--icon-content-delete-filling,"")}.next-icon-favorites-filling:before{content:"\e60e";content:var(--icon-content-favorites-filling,"")}.next-icon-add:before{content:"\e655";content:var(--icon-content-add,"")}.next-icon-minus:before{content:"\e601";content:var(--icon-content-minus,"")}.next-icon-arrow-up:before{content:"\e625";content:var(--icon-content-arrow-up,"")}.next-icon-arrow-down:before{content:"\e63d";content:var(--icon-content-arrow-down,"")}.next-icon-arrow-left:before{content:"\e61d";content:var(--icon-content-arrow-left,"")}.next-icon-arrow-right:before{content:"\e619";content:var(--icon-content-arrow-right,"")}.next-icon-arrow-double-left:before{content:"\e659";content:var(--icon-content-arrow-double-left,"")}.next-icon-arrow-double-right:before{content:"\e65e";content:var(--icon-content-arrow-double-right,"")}.next-icon-switch:before{content:"\e6b3";content:var(--icon-content-switch,"")}.next-icon-sorting:before{content:"\e634";content:var(--icon-content-sorting,"")}.next-icon-descending:before{content:"\e61f";content:var(--icon-content-descending,"")}.next-icon-ascending:before{content:"\e61e";content:var(--icon-content-ascending,"")}.next-icon-select:before{content:"\e632";content:var(--icon-content-select,"")}.next-icon-semi-select:before{content:"\e633";content:var(--icon-content-semi-select,"")}.next-icon-search:before{content:"\e656";content:var(--icon-content-search,"")}.next-icon-close:before{content:"\e626";content:var(--icon-content-close,"")}.next-icon-ellipsis:before{content:"\e654";content:var(--icon-content-ellipsis,"")}.next-icon-picture:before{content:"\e631";content:var(--icon-content-picture,"")}.next-icon-calendar:before{content:"\e607";content:var(--icon-content-calendar,"")}.next-icon-ashbin:before{content:"\e639";content:var(--icon-content-ashbin,"")}.next-icon-upload:before{content:"\e7ee";content:var(--icon-content-upload,"")}.next-icon-download:before{content:"\e628";content:var(--icon-content-download,"")}.next-icon-set:before{content:"\e683";content:var(--icon-content-set,"")}.next-icon-edit:before{content:"\e63b";content:var(--icon-content-edit,"")}.next-icon-refresh:before{content:"\e677";content:var(--icon-content-refresh,"")}.next-icon-filter:before{content:"\e627";content:var(--icon-content-filter,"")}.next-icon-attachment:before{content:"\e665";content:var(--icon-content-attachment,"")}.next-icon-account:before{content:"\e608";content:var(--icon-content-account,"")}.next-icon-email:before{content:"\e605";content:var(--icon-content-email,"")}.next-icon-atm:before{content:"\e606";content:var(--icon-content-atm,"")}.next-icon-loading:before{content:"\e646";content:var(--icon-content-loading,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-icon-eye:before{content:"\e7ed";content:var(--icon-content-eye,"")}.next-icon-copy:before{content:"\e80a";content:var(--icon-content-copy,"")}.next-icon-toggle-left:before{content:"\e602";content:var(--icon-content-toggle-left,"")}.next-icon-toggle-right:before{content:"\e60f";content:var(--icon-content-toggle-right,"")}.next-icon-eye-close:before{content:"\e610";content:var(--icon-content-eye-close,"")}.next-icon-unlock:before{content:"\e7fb";content:var(--icon-content-unlock,"")}.next-icon-lock:before{content:"\e7fc";content:var(--icon-content-lock,"")}.next-icon-exit:before{content:"\e616";content:var(--icon-content-exit,"")}.next-icon-chart-bar:before{content:"\e791";content:var(--icon-content-chart-bar,"")}.next-icon-chart-pie:before{content:"\e613";content:var(--icon-content-chart-pie,"")}.next-icon-form:before{content:"\e869";content:var(--icon-content-form,"")}.next-icon-detail:before{content:"\e852";content:var(--icon-content-detail,"")}.next-icon-list:before{content:"\e859";content:var(--icon-content-list,"")}.next-icon-dashboard:before{content:"\e868";content:var(--icon-content-dashboard,"")}@-webkit-keyframes loadingCircle{0%{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.next-icon.next-xxs .next-icon-remote,.next-icon.next-xxs:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-icon.next-xxs{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-icon.next-xxs:before{width:16px;font-size:16px}}.next-icon.next-xs .next-icon-remote,.next-icon.next-xs:before{width:12px;font-size:12px;line-height:inherit}.next-icon.next-small .next-icon-remote,.next-icon.next-small:before{width:16px;font-size:16px;line-height:inherit}.next-icon.next-medium .next-icon-remote,.next-icon.next-medium:before{width:20px;font-size:20px;line-height:inherit}.next-icon.next-large .next-icon-remote,.next-icon.next-large:before{width:24px;font-size:24px;line-height:inherit}.next-icon.next-xl .next-icon-remote,.next-icon.next-xl:before{width:32px;font-size:32px;line-height:inherit}.next-icon.next-xxl .next-icon-remote,.next-icon.next-xxl:before{width:48px;font-size:48px;line-height:inherit}.next-icon.next-xxxl .next-icon-remote,.next-icon.next-xxxl:before{width:64px;font-size:64px;line-height:inherit}.next-icon.next-inherit .next-icon-remote,.next-icon.next-inherit:before{width:inherit;font-size:inherit;line-height:inherit}.next-icon .next-icon-remote,.next-icon.next-inherit .next-icon-remote{width:1em;height:1em;vertical-align:middle;fill:currentColor}.next-overlay-wrapper .next-overlay-inner{z-index:1001}.next-overlay-wrapper .next-overlay-backdrop{position:fixed;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.45);-webkit-transition:opacity .3s cubic-bezier(.4,0,.2,1);transition:opacity .3s cubic-bezier(.4,0,.2,1);opacity:0}.next-overlay-wrapper.opened .next-overlay-backdrop{opacity:1}.next-loading-fusion-reactor[dir=rtl]{-webkit-animation-name:nextVectorRouteRTL;animation-name:nextVectorRouteRTL}@-webkit-keyframes nextVectorRouteRTL{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}25%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}30%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}50%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}55%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}75%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}80%{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}to{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes nextVectorRouteRTL{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}25%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}30%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}50%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}55%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}75%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}80%{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}to{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}}.next-loading{position:relative}.next-loading.next-open{pointer-events:none}.next-loading .next-loading-component{opacity:.7;-webkit-filter:blur(1px);filter:blur(1px);-webkit-filter:"progid:DXImageTransform.Microsoft.Blur(PixelRadius=1, MakeShadow=false)";filter:"progid:DXImageTransform.Microsoft.Blur(PixelRadius=1, MakeShadow=false)";position:relative;pointer-events:none}.next-loading-masker{position:absolute;top:0;bottom:0;left:0;right:0;z-index:99;opacity:.2;background:#fff}.next-loading-inline{display:inline-block}.next-loading-tip{display:block;position:absolute;top:50%;left:50%;z-index:4;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center}.next-loading-tip-fullscreen{top:inherit;left:inherit;-webkit-transform:inherit;-ms-transform:inherit;transform:inherit}.next-loading-tip-placeholder{display:none}.next-loading-right-tip .next-loading-indicator{display:inline-block}.next-loading-right-tip .next-loading-tip-content{position:absolute;display:block;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-loading-right-tip .next-loading-tip-placeholder{display:inline-block;visibility:hidden;margin-left:1em}.next-loading-fusion-reactor{display:inline-block;width:48px;width:var(--loading-large-size,48px);height:48px;height:var(--loading-large-size,48px);position:relative;margin:0;-webkit-animation-duration:5.6s;animation-duration:5.6s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-name:nextVectorRoute;animation-name:nextVectorRoute}.next-loading-fusion-reactor .next-loading-dot{position:absolute;margin:auto;width:12px;width:var(--loading-large-dot-size,12px);height:12px;height:var(--loading-large-dot-size,12px);border-radius:50%;background:#0064c8;background:var(--loading-dot-color,#0064c8);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-duration:1.4s;animation-duration:1.4s}.next-loading-fusion-reactor .next-loading-dot:first-child{top:0;bottom:0;left:0;-webkit-animation-name:nextVectorDotsX;animation-name:nextVectorDotsX}.next-loading-fusion-reactor .next-loading-dot:nth-child(2){left:0;right:0;top:0;opacity:.8;-webkit-animation-name:nextVectorDotsY;animation-name:nextVectorDotsY}.next-loading-fusion-reactor .next-loading-dot:nth-child(3){top:0;bottom:0;right:0;opacity:.6;-webkit-animation-name:nextVectorDotsXR;animation-name:nextVectorDotsXR}.next-loading-fusion-reactor .next-loading-dot:nth-child(4){left:0;right:0;bottom:0;opacity:.2;-webkit-animation-name:nextVectorDotsYR;animation-name:nextVectorDotsYR}.next-loading-medium-fusion-reactor{width:32px;width:var(--loading-medium-size,32px);height:32px;height:var(--loading-medium-size,32px)}.next-loading-medium-fusion-reactor .next-loading-dot{width:8px;width:var(--loading-medium-dot-size,8px);height:8px;height:var(--loading-medium-dot-size,8px)}.next-loading-medium-fusion-reactor .next-loading-dot:first-child{-webkit-animation-name:nextVectorDotsX-medium;animation-name:nextVectorDotsX-medium}.next-loading-medium-fusion-reactor .next-loading-dot:nth-child(2){-webkit-animation-name:nextVectorDotsY-medium;animation-name:nextVectorDotsY-medium}.next-loading-medium-fusion-reactor .next-loading-dot:nth-child(3){-webkit-animation-name:nextVectorDotsXR-medium;animation-name:nextVectorDotsXR-medium}.next-loading-medium-fusion-reactor .next-loading-dot:nth-child(4){-webkit-animation-name:nextVectorDotsYR-medium;animation-name:nextVectorDotsYR-medium}@-webkit-keyframes nextVectorRoute{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}25%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}30%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}55%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}75%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}80%{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}to{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nextVectorRoute{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}25%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}30%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}55%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}75%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}80%{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}to{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes nextVectorDotsYR{25%{bottom:0}45%,50%{bottom:16.8px;bottom:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{bottom:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsYR{25%{bottom:0}45%,50%{bottom:16.8px;bottom:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{bottom:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsY{25%{top:0}45%,50%{top:16.8px;top:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{top:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsY{25%{top:0}45%,50%{top:16.8px;top:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{top:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsX{25%{left:0}45%,50%{left:16.8px;left:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{left:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsX{25%{left:0}45%,50%{left:16.8px;left:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{left:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsXR{25%{right:0}45%,50%{right:16.8px;right:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{right:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsXR{25%{right:0}45%,50%{right:16.8px;right:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{right:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsYR-medium{25%{bottom:0}45%,50%{bottom:11.2px;bottom:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{bottom:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsYR-medium{25%{bottom:0}45%,50%{bottom:11.2px;bottom:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{bottom:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@-webkit-keyframes nextVectorDotsY-medium{25%{top:0}45%,50%{top:11.2px;top:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{top:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsY-medium{25%{top:0}45%,50%{top:11.2px;top:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{top:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@-webkit-keyframes nextVectorDotsX-medium{25%{left:0}45%,50%{left:11.2px;left:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{left:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsX-medium{25%{left:0}45%,50%{left:11.2px;left:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{left:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@-webkit-keyframes nextVectorDotsXR-medium{25%{right:0}45%,50%{right:11.2px;right:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{right:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsXR-medium{25%{right:0}45%,50%{right:11.2px;right:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{right:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}.next-radio-button-large[dir=rtl]>label:first-child{margin-left:-1px;border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-large,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-large,2px);border-top-left-radius:0;border-bottom-left-radius:0}.next-radio-button-large[dir=rtl]>label:last-child{margin-left:0;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-large,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-large,2px)}.next-radio-button-large[dir=rtl] .next-radio-label{height:34px;height:calc(var(--radio-button-height-large, 36px) - 2px);line-height:34px;line-height:calc(var(--radio-button-height-large, 36px) - 2px);font-size:14px;font-size:var(--radio-button-font-size-large,14px)}.next-radio-button-medium[dir=rtl]>label:first-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-medium,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-medium[dir=rtl]>label:last-child{margin-left:0;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-medium,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-small[dir=rtl]>label:first-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-small,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-small,2px)}.next-radio-button-small[dir=rtl]>label:last-child{margin-left:0;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-small,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-small,2px)}.next-radio-wrapper[dir=rtl] .next-radio-label{margin-left:0;margin-right:4px}.next-radio-group[dir=rtl] .next-radio-label{margin-right:4px;margin-left:16px}.next-radio-button[dir=rtl]>label .next-radio-label{margin:0}.next-radio-wrapper{outline:0}.next-radio-wrapper .next-radio{display:inline-block;vertical-align:middle;position:relative;line-height:1}.next-radio-wrapper .next-radio,.next-radio-wrapper .next-radio *,.next-radio-wrapper .next-radio :after,.next-radio-wrapper .next-radio :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-radio-wrapper .next-radio input[type=radio]{opacity:0;position:absolute;vertical-align:middle;top:0;left:0;width:16px;width:var(--radio-width,16px);height:16px;height:var(--radio-width,16px);margin:0;cursor:pointer}.next-radio-wrapper .next-radio-inner{display:block;width:16px;width:var(--radio-width,16px);height:16px;height:var(--radio-width,16px);background:#fff;background:var(--radio-bg-color,#fff);border-radius:50%;border-radius:var(--radio-radius-size,50%);border:1px solid #577899;border:var(--radio-circle-border-width,1px) solid var(--radio-border-color,#577899);-webkit-transition:all .1s linear;transition:all .1s linear;-webkit-box-shadow:none;-webkit-box-shadow:var(--radio-shadow,none);box-shadow:none;box-shadow:var(--radio-shadow,none)}.next-radio-wrapper .next-radio-inner:after{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);position:absolute;border-radius:50%;border-radius:var(--radio-radius-size,50%);top:50%;margin-top:-4px;margin-top:calc(0px - var(--radio-circle-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--radio-circle-size, 8px)/2);background:#fff;content:"";-webkit-transition:all .1s linear;transition:all .1s linear}.next-radio-wrapper.checked .next-radio-inner{border-color:#004080;border-color:var(--radio-checked-border-color,#004080);background:#fff;background:var(--radio-checked-bg-color,#fff)}.next-radio-wrapper.checked .next-radio-inner:after{width:8px;width:var(--radio-circle-size,8px);height:8px;height:var(--radio-circle-size,8px);font-weight:700;background:#0064c8;background:var(--radio-checked-circle-color,#0064c8);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-radio-wrapper.checked.hovered .next-radio-inner,.next-radio-wrapper.checked:hover .next-radio-inner{border-color:#004080;border-color:var(--radio-checked-hovered-border-color,#004080)}.next-radio-wrapper.disabled input[type=radio]{cursor:not-allowed}.next-radio-wrapper.disabled .next-radio-inner{border-color:#c0c6cc;border-color:var(--radio-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--radio-disabled-bg-color,#f7f9fa)}.next-radio-wrapper.disabled .next-radio-inner:after{background:#b3b3b3;background:var(--radio-disabled-circle-color,#b3b3b3)}.next-radio-wrapper.disabled .next-radio-inner.hovered,.next-radio-wrapper.disabled .next-radio-inner:hover{border-color:#c0c6cc;border-color:var(--radio-disabled-border-color,#c0c6cc)}.next-radio-wrapper.disabled.checked .next-radio-inner{border-color:#c0c6cc;border-color:var(--radio-checked-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--radio-checked-disabled-bg-color,#f7f9fa)}.next-radio-wrapper.disabled.checked .next-radio-inner:after{background:#b3b3b3;background:var(--radio-checked-disabled-circle-color,#b3b3b3)}.next-radio-wrapper.disabled .next-radio-label{color:#b3b3b3;color:var(--radio-normal-font-color-disabled,#b3b3b3)}.next-radio-wrapper:not(.disabled).hovered .next-radio-inner,.next-radio-wrapper:not(.disabled):hover .next-radio-inner{border-color:#004080;border-color:var(--radio-hovered-border-color,#004080);background-color:transparent;background-color:var(--radio-hovered-bg-color,transparent)}.next-radio-wrapper:not(.disabled).hovered .next-radio-label,.next-radio-wrapper:not(.disabled):hover .next-radio-label{cursor:pointer}.next-radio-wrapper.checked:not(.disabled).hovered .next-radio-inner,.next-radio-wrapper.checked:not(.disabled):hover .next-radio-inner{border-color:#004080;border-color:var(--radio-checked-hovered-border-color,#004080);background:#fff;background:var(--radio-checked-hovered-bg-color,#fff)}.next-radio-wrapper.checked:not(.disabled).hovered .next-radio-inner:after,.next-radio-wrapper.checked:not(.disabled):hover .next-radio-inner:after{background:#0064c8;background:var(--radio-checked-hovered-circle-color,#0064c8)}.next-radio-button .next-radio,.next-radio-button input[type=radio]{width:0;height:0}.next-radio-button>label{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;z-index:1;margin:0 0 0 -1px;border:1px solid #c0c6cc;border:1px solid var(--radio-button-border-color,#c0c6cc);background-color:#fff;background-color:var(--radio-button-bg-color,#fff);-webkit-transition:all .1s linear;transition:all .1s linear;vertical-align:middle}.next-radio-button>label .next-radio-label{display:block;color:#555;color:var(--radio-button-font-color,#555);margin:0;-webkit-transition:all .1s linear;transition:all .1s linear}.next-radio-button>label.hovered,.next-radio-button>label:hover{z-index:10;border-color:#d1d5d9;border-color:var(--radio-button-border-color-hovered,#d1d5d9);background-color:#fff;background-color:var(--radio-button-bg-color-hovered,#fff)}.next-radio-button>label.hovered .next-radio-label,.next-radio-button>label:hover .next-radio-label{color:#111;color:var(--radio-button-font-color-hovered,#111)}.next-radio-button>label.checked{z-index:11;border-color:#0064c8;border-color:var(--radio-button-border-color-checked,#0064c8);background-color:#fff;background-color:var(--radio-button-bg-color-checked,#fff)}.next-radio-button>label.checked .next-radio-label{color:#0064c8;color:var(--radio-button-font-color-checked,#0064c8)}.next-radio-button>label.disabled{z-index:0;cursor:not-allowed;border-color:#e3e4e6;border-color:var(--radio-button-border-color-disabled,#e3e4e6);background-color:#f8f8f9;background-color:var(--radio-button-bg-color-disabled,#f8f8f9)}.next-radio-button>label.disabled .next-radio-label{color:#c1c1c1;color:var(--radio-button-font-color-disabled,#c1c1c1)}.next-radio-button>label.checked.disabled{z-index:0;border-color:#e3e4e6;border-color:var(--radio-button-border-color-checked-disabled,#e3e4e6);background-color:#004080;background-color:var(--radio-button-bg-color-checked-disabled,#004080)}.next-radio-button>label.checked.disabled .next-radio-label{color:#c1c1c1;color:var(--radio-button-font-color-checked-disabled,#c1c1c1)}.next-radio-button-large>label{padding:0 8px;padding:0 var(--radio-button-padding-large,8px);height:36px;height:var(--radio-button-height-large,36px);line-height:36px;line-height:var(--radio-button-height-large,36px)}.next-radio-button-large>label:first-child{margin-left:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-large,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-large,2px)}.next-radio-button-large>label:last-child{border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-large,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-large,2px)}.next-radio-button-large .next-radio-label{height:34px;height:calc(var(--radio-button-height-large, 36px) - 2px);line-height:34px;line-height:calc(var(--radio-button-height-large, 36px) - 2px);font-size:14px;font-size:var(--radio-button-font-size-large,14px)}.next-radio-button-medium>label{padding:0 8px;padding:0 var(--radio-button-padding-medium,8px);height:32px;height:var(--radio-button-height-medium,32px);line-height:32px;line-height:var(--radio-button-height-medium,32px)}.next-radio-button-medium>label:first-child{margin-left:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-medium,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-medium>label:last-child{border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-medium,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-medium .next-radio-label{height:30px;height:calc(var(--radio-button-height-medium, 32px) - 2px);line-height:30px;line-height:calc(var(--radio-button-height-medium, 32px) - 2px);font-size:12px;font-size:var(--radio-button-font-size-medium,12px)}.next-radio-button-small>label{padding:0 8px;padding:0 var(--radio-button-padding-small,8px);height:24px;height:var(--radio-button-height-small,24px);line-height:24px;line-height:var(--radio-button-height-small,24px)}.next-radio-button-small>label:first-child{margin-left:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-small,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-small,2px)}.next-radio-button-small>label:last-child{border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-small,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-small,2px)}.next-radio-button-small .next-radio-label{height:22px;height:calc(var(--radio-button-height-small, 24px) - 2px);line-height:22px;line-height:calc(var(--radio-button-height-small, 24px) - 2px);font-size:12px;font-size:var(--radio-button-font-size-small,12px)}.next-radio-single-input input[type=radio]{opacity:0;position:absolute;top:0;left:0;margin:0}.next-radio-group{display:inline-block}.next-radio-group .next-radio-wrapper{margin-right:12px}.next-radio-group .next-radio-wrapper:last-child{margin-right:0}.next-radio-group .next-radio-label{color:#333;color:var(--radio-normal-font-color,#333)}.next-radio-group.disabled .next-radio-label{color:#b3b3b3;color:var(--radio-normal-font-color-disabled,#b3b3b3)}.next-radio-group.next-radio-button .next-radio-wrapper{margin-right:0}.next-radio-group-ver .next-radio-wrapper{display:block;margin-bottom:8px}.next-radio-label{margin:0 0 0 8px;margin-left:var(--radio-font-margin-left,8px);margin-right:8px;margin-right:var(--radio-font-margin-left,8px);font-size:12px;font-size:var(--radio-font-size,12px);vertical-align:middle;line-height:1;color:#333;color:var(--radio-normal-font-color,#333)}@-moz-document url-prefix(){.next-radio{margin-top:-1px}@supports (-webkit-animation:calc(0s)) or (animation:calc(0s)){.next-radio{margin-top:-3px}}}.next-badge{position:relative;display:inline-block;vertical-align:middle;line-height:1}.next-badge,.next-badge *,.next-badge :after,.next-badge :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-badge .next-badge-count{color:#fff;background:#c80000;background:var(--badge-color-bg,#c80000);text-align:center;white-space:nowrap;border-radius:16px;border-radius:var(--badge-size-count-border-radius,16px);position:absolute;width:auto;height:18px;height:var(--badge-size-count-config-height,18px);min-width:18px;min-width:var(--badge-size-count-config-height,18px);padding:0 4px;padding:0 var(--badge-size-count-padding-lr,4px) 0 var(--badge-size-count-padding-lr,4px);font-size:12px;font-size:var(--badge-size-count-font,12px);line-height:18px;line-height:var(--badge-size-count-config-height,18px);-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);top:-.5em}.next-badge .next-badge-count a,.next-badge .next-badge-count a:hover{color:#fff}.next-badge .next-badge-dot{color:#fff;background:#c80000;background:var(--badge-dot-color-bg,#c80000);text-align:center;white-space:nowrap;border-radius:8px;border-radius:var(--badge-size-dot-border-radius,8px);position:absolute;width:8px;width:var(--badge-size-dot-width,8px);height:8px;height:var(--badge-size-dot-width,8px);min-width:8px;min-width:var(--badge-size-dot-width,8px);padding:0;font-size:1px;line-height:1;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);top:-.5em}.next-badge .next-badge-dot a,.next-badge .next-badge-dot a:hover{color:#fff}.next-badge .next-badge-custom{line-height:1.166667;white-space:nowrap;font-size:12px;font-size:var(--font-size-caption,12px);padding-left:4px;padding-left:var(--badge-size-custom-padding-lr,4px);padding-right:4px;padding-right:var(--badge-size-custom-padding-lr,4px);border-radius:2px;border-radius:var(--badge-size-custom-border-radius,2px);-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.next-badge .next-badge-custom>*{line-height:1}.next-badge .next-badge-custom>.next-icon:before,.next-badge .next-badge-custom>i:before{font-size:inherit;width:auto;vertical-align:top}.next-badge .next-badge-scroll-number{position:absolute;top:-4px;z-index:10;overflow:hidden;-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}.next-badge-scroll-number-only{position:relative;display:inline-block;transition:transform .1s linear,-webkit-transform .1s linear;min-width:8px;min-width:var(--badge-size-dot-width,8px)}.next-badge-scroll-number-only span{display:block;height:18px;height:var(--badge-size-count-config-height,18px);line-height:18px;line-height:var(--badge-size-count-config-height,18px);font-size:12px;font-size:var(--badge-size-count-font,12px)}.next-badge-not-a-wrapper .next-badge-count,.next-badge-not-a-wrapper .next-badge-custom,.next-badge-not-a-wrapper .next-badge-dot{position:relative;display:block;top:auto;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.next-badge-list-wrapper{margin-left:0}.next-badge-list-wrapper li{margin-bottom:0;margin-bottom:var(--badge-size-list-margin,0);list-style:none}.next-badge[dir=rtl] .next-badge-custom{padding-right:4px;padding-right:var(--badge-size-custom-padding-lr,4px);padding-left:4px;padding-left:var(--badge-size-custom-padding-lr,4px)}.next-badge[dir=rtl] .next-badge-scroll-number{left:0;-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}.next-balloon{position:absolute;top:0;max-width:400px;max-width:var(--balloon-size-max-width,400px);border-style:solid;border-style:var(--balloon-border-style,solid);border-radius:2px;border-radius:var(--balloon-corner,2px);font-size:12px;font-size:var(--balloon-content-font-size,12px);font-weight:400;font-weight:var(--balloon-content-font-weight,normal);word-wrap:break-all;word-wrap:break-word;z-index:0}.next-balloon,.next-balloon *,.next-balloon :after,.next-balloon :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-balloon:focus,.next-balloon :focus{outline:0}.next-balloon-title{margin-bottom:8px;margin-bottom:var(--balloon-size-header-margin-bottom,8px);font-size:14px;font-size:var(--balloon-title-font-size,14px);font-weight:700;font-weight:var(--balloon-title-font-weight,bold)}.next-balloon-title.next-balloon-closable{padding:0 24px 0 0;padding:0 var(--balloon-size-padding-closable-right,24px) 0 0}.next-balloon-title.next-balloon-closable .next-balloon-close{top:-1px;-webkit-transform:translateY(13px);-webkit-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-title-font-size, 14px)/2 - var(--balloon-size-close, 12px)/2));-ms-transform:translateY(13px);-ms-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-title-font-size, 14px)/2 - var(--balloon-size-close, 12px)/2));transform:translateY(13px);transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-title-font-size, 14px)/2 - var(--balloon-size-close, 12px)/2));right:12px;right:var(--balloon-size-padding-right,12px)}.next-balloon-primary{color:#333;color:var(--balloon-primary-color,#333);border-color:#c0c6cc;border-color:var(--balloon-primary-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-primary-color-bg,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--balloon-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--balloon-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16));border-width:1px;border-width:var(--balloon-primary-border-width,1px)}.next-balloon-primary .next-balloon-close{position:absolute;top:-1px;-webkit-transform:translateY(12px);-webkit-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));-ms-transform:translateY(12px);-ms-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));transform:translateY(12px);transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));right:12px;right:var(--balloon-size-close-margin-right,12px);font-size:12px;font-size:var(--balloon-size-close,12px);cursor:pointer;color:#333;color:var(--balloon-primary-color-close,#333)}.next-balloon-primary .next-balloon-close .next-icon,.next-balloon-primary .next-balloon-close .next-icon:before{width:12px;width:var(--balloon-size-close,12px);height:12px;height:var(--balloon-size-close,12px);line-height:1em}.next-balloon-primary .next-balloon-close .next-icon:before{font-size:12px;font-size:var(--balloon-size-close,12px)}.next-balloon-primary .next-balloon-close :hover{color:#333;color:var(--balloon-primary-color-close-hover,#333)}.next-balloon-primary:after{position:absolute;width:8px;width:var(--balloon-size-arrow-size,8px);height:8px;height:var(--balloon-size-arrow-size,8px);content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-sizing:content-box!important;box-sizing:content-box!important;border:1px solid #c0c6cc;border:var(--balloon-primary-border-width,1px) var(--balloon-border-style,solid) var(--balloon-primary-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-primary-color-bg,#fff);z-index:-1}.next-balloon-primary.next-balloon-top:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-primary.next-balloon-right:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-left:none;border-bottom:none}.next-balloon-primary.next-balloon-bottom:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-left:none}.next-balloon-primary.next-balloon-left:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px))}.next-balloon-primary.next-balloon-left-top:after,.next-balloon-primary.next-balloon-left:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-right:none}.next-balloon-primary.next-balloon-left-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-left-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px);left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-right:none}.next-balloon-primary.next-balloon-right-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-right-bottom:after,.next-balloon-primary.next-balloon-right-top:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-bottom:none;border-left:none}.next-balloon-primary.next-balloon-right-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-top-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-top-left:after,.next-balloon-primary.next-balloon-top-right:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-primary.next-balloon-top-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-bottom-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-bottom-left:after,.next-balloon-primary.next-balloon-bottom-right:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-left:none}.next-balloon-primary.next-balloon-bottom-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal{color:#333;color:var(--balloon-normal-color,#333);border-color:#c0c6cc;border-color:var(--balloon-normal-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-normal-color-bg,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--balloon-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--balloon-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16));border-width:1px;border-width:var(--balloon-normal-border-width,1px)}.next-balloon-normal .next-balloon-close{position:absolute;top:-1px;-webkit-transform:translateY(12px);-webkit-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));-ms-transform:translateY(12px);-ms-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));transform:translateY(12px);transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));right:12px;right:var(--balloon-size-close-margin-right,12px);font-size:12px;font-size:var(--balloon-size-close,12px);cursor:pointer;color:#333;color:var(--balloon-normal-color-close,#333)}.next-balloon-normal .next-balloon-close .next-icon,.next-balloon-normal .next-balloon-close .next-icon:before{width:12px;width:var(--balloon-size-close,12px);height:12px;height:var(--balloon-size-close,12px);line-height:1em}.next-balloon-normal .next-balloon-close .next-icon:before{font-size:12px;font-size:var(--balloon-size-close,12px)}.next-balloon-normal .next-balloon-close :hover{color:#333;color:var(--balloon-normal-color-close-hover,#333)}.next-balloon-normal:after{position:absolute;width:8px;width:var(--balloon-size-arrow-size,8px);height:8px;height:var(--balloon-size-arrow-size,8px);content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-sizing:content-box!important;box-sizing:content-box!important;border:1px solid #c0c6cc;border:var(--balloon-normal-border-width,1px) var(--balloon-border-style,solid) var(--balloon-normal-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-normal-color-bg,#fff);z-index:-1}.next-balloon-normal.next-balloon-top:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-normal.next-balloon-right:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-left:none;border-bottom:none}.next-balloon-normal.next-balloon-bottom:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-left:none}.next-balloon-normal.next-balloon-left:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px))}.next-balloon-normal.next-balloon-left-top:after,.next-balloon-normal.next-balloon-left:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-right:none}.next-balloon-normal.next-balloon-left-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-left-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px);left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-right:none}.next-balloon-normal.next-balloon-right-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-right-bottom:after,.next-balloon-normal.next-balloon-right-top:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-bottom:none;border-left:none}.next-balloon-normal.next-balloon-right-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-top-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-top-left:after,.next-balloon-normal.next-balloon-top-right:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-normal.next-balloon-top-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-bottom-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-bottom-left:after,.next-balloon-normal.next-balloon-bottom-right:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-left:none}.next-balloon-normal.next-balloon-bottom-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon.visible{display:block}.next-balloon.hidden{display:none}.next-balloon-medium{padding:12px;padding:var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px) var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px)}.next-balloon-closable{padding:12px 24px 12px 12px;padding:var(--balloon-size-padding-top,12px) var(--balloon-size-padding-closable-right,24px) var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px)}.next-balloon-tooltip{position:absolute;top:0;max-width:400px;max-width:var(--balloon-size-max-width,400px);border-radius:2px;border-radius:var(--balloon-corner,2px);font-size:12px;font-size:var(--balloon-tooltip-content-font-size,12px);font-weight:400;font-weight:var(--balloon-tooltip-content-font-weight,normal);z-index:0;word-wrap:break-all;word-wrap:break-word;color:#333;color:var(--balloon-tooltip-color,#333);background-color:#fff;background-color:var(--balloon-tooltip-color-bg,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--balloon-tooltip-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--balloon-tooltip-shadow,0 4px 8px 0 rgba(0,0,0,.16));border:1px solid #c0c6cc;border:var(--balloon-tooltip-border-width,1px) var(--balloon-tooltip-border-style,solid) var(--balloon-tooltip-color-border,#c0c6cc)}.next-balloon-tooltip,.next-balloon-tooltip *,.next-balloon-tooltip :after,.next-balloon-tooltip :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-balloon-tooltip .next-balloon-arrow{position:absolute;display:block;width:16px;width:calc(var(--balloon-size-arrow-size, 8px)*2);height:16px;height:calc(var(--balloon-size-arrow-size, 8px)*2);overflow:hidden;background:0 0;pointer-events:none}.next-balloon-tooltip .next-balloon-arrow .next-balloon-arrow-content{content:"";position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:8px;width:var(--balloon-size-arrow-size,8px);height:8px;height:var(--balloon-size-arrow-size,8px);margin:auto;background-color:#fff;background-color:var(--balloon-tooltip-color-bg,#fff);border:1px solid #c0c6cc;border:var(--balloon-tooltip-border-width,1px) var(--balloon-tooltip-border-style,solid) var(--balloon-tooltip-color-border,#c0c6cc);pointer-events:auto}.next-balloon-tooltip-top .next-balloon-arrow{top:-16px;top:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:calc(50% - 8px);left:calc(50% - var(--balloon-size-arrow-size, 8px))}.next-balloon-tooltip-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(8px) rotate(45deg);-webkit-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateY(8px) rotate(45deg);-ms-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateY(8px) rotate(45deg);transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-right .next-balloon-arrow{top:calc(50% - 8px);top:calc(50% - var(--balloon-size-arrow-size, 8px));right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-webkit-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateX(-8px) rotate(45deg);transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-bottom .next-balloon-arrow{left:calc(50% - 8px);left:calc(50% - var(--balloon-size-arrow-size, 8px));bottom:-16px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(-8px) rotate(45deg);-webkit-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateY(-8px) rotate(45deg);-ms-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateY(-8px) rotate(45deg);transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-left .next-balloon-arrow{top:calc(50% - 8px);top:calc(50% - var(--balloon-size-arrow-size, 8px));left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-left-top .next-balloon-arrow{top:8px;top:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-left-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-left-bottom .next-balloon-arrow{bottom:8px;bottom:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-left-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-right-top .next-balloon-arrow{top:8px;top:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-right-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-webkit-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateX(-8px) rotate(45deg);transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-right-bottom .next-balloon-arrow{bottom:8px;bottom:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-right-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-webkit-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateX(-8px) rotate(45deg);transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-top-left .next-balloon-arrow{left:8px;left:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);top:-16px;top:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-top-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(8px) rotate(45deg);-webkit-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateY(8px) rotate(45deg);-ms-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateY(8px) rotate(45deg);transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-top-right .next-balloon-arrow{right:8px;right:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);top:-16px;top:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-top-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(8px) rotate(45deg);-webkit-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateY(8px) rotate(45deg);-ms-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateY(8px) rotate(45deg);transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-bottom-left .next-balloon-arrow{left:8px;left:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);bottom:-16px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-bottom-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(-8px) rotate(45deg);-webkit-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateY(-8px) rotate(45deg);-ms-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateY(-8px) rotate(45deg);transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-bottom-right .next-balloon-arrow{right:8px;right:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);bottom:-16px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-bottom-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(-8px) rotate(45deg);-webkit-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateY(-8px) rotate(45deg);-ms-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateY(-8px) rotate(45deg);transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip.visible{display:block}.next-balloon-tooltip.hidden{display:none}.next-balloon-tooltip-medium{padding:12px;padding:var(--balloon-tooltip-size-padding-top,12px) var(--balloon-tooltip-size-padding-right,12px) var(--balloon-tooltip-size-padding-bottom,12px) var(--balloon-tooltip-size-padding-left,12px)}.next-balloon[dir=rtl].next-balloon-primary .next-balloon-close{left:12px;left:var(--balloon-size-close-margin-right,12px);right:auto}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-right:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));right:auto;border-right:none;border-top:none;border-left:inherit;border-bottom:inherit}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-left-bottom:after,.next-balloon[dir=rtl].next-balloon-primary.next-balloon-left-top:after,.next-balloon[dir=rtl].next-balloon-primary.next-balloon-left:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));left:auto;border-left:none;border-bottom:none;border-right:inherit;border-top:inherit}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-right-bottom:after,.next-balloon[dir=rtl].next-balloon-primary.next-balloon-right-top:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));right:auto;border-right:none;border-top:none;border-bottom:inherit;border-left:inherit}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-top-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-top-right:after{right:auto;left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-bottom-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-bottom-right:after{left:12px;left:var(--balloon-size-arrow-margin,12px);right:auto}.next-balloon[dir=rtl].next-balloon-normal .next-balloon-close{left:12px;left:var(--balloon-size-close-margin-right,12px);right:auto}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-right:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));right:auto;border-right:none;border-top:none;border-left:inherit;border-bottom:inherit}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-left-bottom:after,.next-balloon[dir=rtl].next-balloon-normal.next-balloon-left-top:after,.next-balloon[dir=rtl].next-balloon-normal.next-balloon-left:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));left:auto;border-left:none;border-bottom:none;border-right:inherit;border-top:inherit}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-right-bottom:after,.next-balloon[dir=rtl].next-balloon-normal.next-balloon-right-top:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));right:auto;border-right:none;border-top:none;border-bottom:inherit;border-left:inherit}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-top-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-top-right:after{right:auto;left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-bottom-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-bottom-right:after{left:12px;left:var(--balloon-size-arrow-margin,12px);right:auto}.next-balloon[dir=rtl].next-balloon-closable{padding:12px 12px 12px 24px;padding:var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px) var(--balloon-size-padding-top,12px) var(--balloon-size-padding-closable-right,24px)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right .next-balloon-arrow{left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left .next-balloon-arrow{right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);transform:translateX(-8px) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-top .next-balloon-arrow{right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);transform:translateX(-8px) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-bottom .next-balloon-arrow{right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);transform:translateX(-8px) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-top .next-balloon-arrow{left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-bottom .next-balloon-arrow{left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-top-left .next-balloon-arrow{right:10px;right:calc(var(--balloon-size-arrow-margin, 12px) - 2px);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-top-right .next-balloon-arrow{left:10px;left:calc(var(--balloon-size-arrow-margin, 12px) - 2px);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-bottom-left .next-balloon-arrow{right:10px;right:calc(var(--balloon-size-arrow-margin, 12px) - 2px);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-bottom-right .next-balloon-arrow{left:10px;left:calc(var(--balloon-size-arrow-margin, 12px) - 2px);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-medium{padding:12px;padding:var(--balloon-tooltip-size-padding-top,12px) var(--balloon-tooltip-size-padding-left,12px) var(--balloon-tooltip-size-padding-bottom,12px) var(--balloon-tooltip-size-padding-right,12px)}.next-menu[dir=rtl] .next-menu-item-helper{float:left}.next-menu[dir=rtl] .next-menu-item .next-checkbox,.next-menu[dir=rtl] .next-menu-item .next-radio{margin-left:4px;margin-right:0}.next-menu[dir=rtl] .next-menu-hoz-right{float:left}.next-menu[dir=rtl] .next-menu-hoz-icon-arrow.next-icon{left:6px;right:auto}.next-menu[dir=rtl] .next-menu-icon-selected.next-icon{margin-left:0;margin-right:-14px;margin-right:calc(-6px - var(--menu-padding-horizontal, 16px)/2)}.next-menu[dir=rtl] .next-menu-icon-selected.next-icon .next-icon-remote,.next-menu[dir=rtl] .next-menu-icon-selected.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu[dir=rtl] .next-menu-icon-selected.next-icon.next-menu-icon-right{right:auto;left:8px}.next-menu[dir=rtl] .next-menu-icon-arrow.next-icon{left:10px;right:auto}.next-menu{position:relative;min-width:100px;margin:0;list-style:none;border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));background:#fff;background:var(--menu-background,#fff);line-height:32px;line-height:var(--menu-line-height,32px);font-size:12px;font-size:var(--menu-font-size,12px);-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-menu,.next-menu *,.next-menu :after,.next-menu :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-menu:focus,.next-menu :focus{outline:0}.next-menu-spacing-lr{padding:0;padding:0 var(--popup-spacing-lr,0)}.next-menu-spacing-lr.next-menu-outside>.next-menu{height:100%;overflow-y:auto}.next-menu-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-menu.next-ver{padding:4px;padding:var(--menu-padding-ver-padding-tb,4px) var(--menu-padding-ver-padding-lr,4px)}.next-menu.next-ver .next-menu-item{padding:0 16px;padding:0 var(--menu-item-padding-ver-padding-r,16px) 0 var(--menu-item-padding-ver-padding-l,16px)}.next-menu.next-hoz{padding:8px 0;padding:var(--menu-padding-hoz-padding-tb,8px) var(--menu-padding-hoz-padding-lr,0)}.next-menu.next-hoz .next-menu-item{padding:0 16px;padding:0 var(--menu-item-padding-hoz-padding-lr,16px)}.next-menu-embeddable,.next-menu-embeddable .next-menu-item.next-disabled,.next-menu-embeddable .next-menu-item.next-disabled .next-menu-item-text>a{background:transparent;border:none}.next-menu-embeddable{-webkit-box-shadow:none;box-shadow:none}.next-menu-embeddable .next-menu-item-inner{height:100%}.next-menu-content{position:relative}.next-menu-content,.next-menu-sub-menu{padding:0;margin:0;list-style:none}.next-menu-sub-menu.next-expand-enter{overflow:hidden}.next-menu-sub-menu.next-expand-enter-active{-webkit-transition:height .3s ease;transition:height .3s ease}.next-menu-sub-menu.next-expand-leave{overflow:hidden}.next-menu-sub-menu.next-expand-leave-active{-webkit-transition:height .3s ease;transition:height .3s ease}.next-menu-item{position:relative;-webkit-transition:background .1s linear;transition:background .1s linear;color:#333;color:var(--menu-color,#333);cursor:pointer}.next-menu-item-helper{float:right;color:#888;color:var(--color-text1-2,#888);font-style:normal;font-size:12px;font-size:var(--menu-font-size,12px)}.next-menu-item .next-checkbox,.next-menu-item .next-radio{margin-right:4px}.next-menu-item.next-selected{color:#333;color:var(--menu-color-selected,#333);background-color:#fff;background-color:var(--menu-background-selected,#fff)}.next-menu-item.next-selected .next-menu-icon-arrow{color:#333;color:var(--menu-arrow-color,#333)}.next-menu-item.next-selected .next-menu-icon-selected{color:#333}.next-menu-item.next-disabled,.next-menu-item.next-disabled .next-menu-item-text>a{color:#b3b3b3;color:var(--menu-color-disabled,#b3b3b3);background-color:#fff;background-color:var(--menu-background,#fff);cursor:not-allowed}.next-menu-item.next-disabled .next-menu-icon-arrow,.next-menu-item.next-disabled .next-menu-icon-selected,.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#b3b3b3;color:var(--menu-color-disabled,#b3b3b3)}.next-menu-item:not(.next-disabled).next-focused,.next-menu-item:not(.next-disabled).next-selected.next-focused,.next-menu-item:not(.next-disabled).next-selected.next-focused:hover,.next-menu-item:not(.next-disabled).next-selected:focus,.next-menu-item:not(.next-disabled).next-selected:focus:hover,.next-menu-item:not(.next-disabled).next-selected:hover,.next-menu-item:not(.next-disabled):hover{color:#333;color:var(--menu-color-hover,#333);background-color:#f7f9fa;background-color:var(--menu-background-hover,#f7f9fa)}.next-menu-item:not(.next-disabled).next-focused .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected.next-focused .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected.next-focused:hover .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected:focus .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected:focus:hover .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected:hover .next-menu-icon-arrow,.next-menu-item:not(.next-disabled):hover .next-menu-icon-arrow{color:#333;color:var(--menu-arrow-color-hover,#333)}.next-menu-item:not(.next-disabled).next-focused .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected.next-focused .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected.next-focused:hover .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected:focus .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected:focus:hover .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected:hover .next-menu-icon-selected,.next-menu-item:not(.next-disabled):hover .next-menu-icon-selected{color:#333}.next-menu-item-inner{height:32px;height:var(--menu-line-height,32px);font-size:12px;font-size:var(--menu-font-size,12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.next-menu-item .next-menu-item-text{vertical-align:middle}.next-menu-item .next-menu-item-text>a{display:inline-block;text-decoration:none;color:#333;color:var(--menu-color,#333)}.next-menu-item .next-menu-item-text>a:before{position:absolute;background-color:transparent;top:0;left:0;bottom:0;right:0;content:""}.next-menu.next-hoz{padding:0}.next-menu.next-hoz.next-menu-nowrap{overflow:hidden;white-space:nowrap}.next-menu.next-hoz.next-menu-nowrap .next-menu-more{text-align:center}.next-menu.next-hoz .next-menu-content>.next-menu-item,.next-menu.next-hoz>.next-menu-item,.next-menu.next-hoz>.next-menu-sub-menu-wrapper{display:inline-block;vertical-align:top}.next-menu.next-hoz .next-menu-content,.next-menu.next-hoz .next-menu-footer,.next-menu.next-hoz .next-menu-header{display:inline-block}.next-menu-hoz-right{float:right}.next-menu-group-label{padding:0 12px;padding:0 var(--menu-padding-title-horizontal,12px);color:#888;color:var(--color-text1-2,#888)}.next-menu-divider{margin:8px 12px;margin:var(--menu-divider-margin-ver,8px) var(--menu-divider-margin-hoz,12px);border-bottom:1px solid #e3e4e6;border-bottom:var(--menu-divider-width,1px) var(--menu-divider-style,solid) var(--menu-divider-color,#e3e4e6)}.next-menu .next-menu-icon-selected.next-icon{position:absolute;top:0;margin-left:-8px;margin-left:calc(8px - var(--menu-item-padding-ver-padding-l, 16px))}.next-menu .next-menu-icon-selected.next-icon .next-icon-remote,.next-menu .next-menu-icon-selected.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-icon-selected.next-icon.next-menu-icon-right{right:8px}.next-menu .next-menu-symbol-icon-selected.next-menu-icon-selected:before{content:"\e9a0";content:var(--menu-select-icon-content,"")}.next-menu .next-menu-icon-arrow.next-icon{position:absolute;top:0;right:10px;color:#333;color:var(--menu-arrow-color,#333);-webkit-transition:all .1s linear;transition:all .1s linear}.next-menu .next-menu-icon-arrow.next-icon .next-icon-remote,.next-menu .next-menu-icon-arrow.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-icon-arrow-down:before{content:"\ea1f";content:var(--menu-fold-icon-content,"")}.next-menu .next-menu-icon-arrow-down.next-open{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-menu .next-menu-icon-arrow-down.next-open .next-icon-remote,.next-menu .next-menu-icon-arrow-down.next-open:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-symbol-popupfold:before{content:"\e98e";content:var(--menu-popupfold-icon-content,"")}.next-menu .next-menu-icon-arrow-right.next-open{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.next-menu .next-menu-icon-arrow-right.next-open .next-icon-remote,.next-menu .next-menu-icon-arrow-right.next-open:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-hoz-icon-arrow.next-icon{position:absolute;top:0;right:6px;color:#333;color:var(--menu-arrow-color,#333);-webkit-transition:all .1s linear;transition:all .1s linear}.next-menu .next-menu-hoz-icon-arrow.next-icon .next-icon-remote,.next-menu .next-menu-hoz-icon-arrow.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-hoz-icon-arrow.next-icon:before{content:"\ea1f";content:var(--menu-fold-icon-content,"")}.next-menu-unfold-icon:before{content:"";content:var(--menu-unfold-icon-content,"")}.next-menu .next-menu-hoz-icon-arrow.next-open{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-menu .next-menu-hoz-icon-arrow.next-open .next-icon-remote,.next-menu .next-menu-hoz-icon-arrow.next-open:before{width:12px;font-size:12px;line-height:inherit}.next-menu.next-context{line-height:24px}.next-menu.next-context .next-menu-item-inner{height:24px}.next-breadcrumb{display:block;margin:0;padding:0;white-space:nowrap;height:16px;line-height:16px}.next-breadcrumb .next-breadcrumb-item{display:inline-block}.next-breadcrumb .next-breadcrumb-item .next-breadcrumb-text{display:inline-block;text-decoration:none;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:all .1s linear;transition:all .1s linear}.next-breadcrumb .next-breadcrumb-item .next-breadcrumb-text>b{font-weight:400}.next-breadcrumb .next-breadcrumb-item .next-breadcrumb-separator{display:inline-block;vertical-align:top}.next-breadcrumb .next-breadcrumb-text{height:16px;min-width:16px;font-size:12px;font-size:var(--breadcrumb-size-m-font-size,12px);line-height:16px}.next-breadcrumb .next-breadcrumb-separator{height:16px;margin:0 8px;font-size:12px;line-height:16px}.next-breadcrumb .next-breadcrumb-separator .next-icon:before{display:block}.next-breadcrumb .next-breadcrumb-separator .next-icon .next-icon-remote,.next-breadcrumb .next-breadcrumb-separator .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-breadcrumb .next-breadcrumb-text-ellipsis{font-size:12px;font-size:var(--breadcrumb-size-ellipsis-font-size,12px)}.next-breadcrumb .next-breadcrumb-text{color:#666;color:var(--breadcrumb-text-color,#666)}.next-breadcrumb .next-breadcrumb-text>b{color:#0064c8;color:var(--breadcrumb-text-keyword-color,#0064c8)}.next-breadcrumb .next-breadcrumb-text>a{color:#666;color:var(--breadcrumb-text-color,#666);text-decoration:none;text-align:center}.next-breadcrumb .next-breadcrumb-text.activated,.next-breadcrumb .next-breadcrumb-text.activated>a{color:#b3b3b3;color:var(--breadcrumb-text-current-color,#b3b3b3);font-weight:400;font-weight:var(--breadcrumb-text-current-weight,normal)}.next-breadcrumb .next-breadcrumb-text-ellipsis{color:#555;color:var(--breadcrumb-text-ellipsis-color,#555);cursor:default}.next-breadcrumb .next-breadcrumb-text-ellipsis-clickable{color:#555;color:var(--breadcrumb-text-ellipsis-color,#555);cursor:pointer}.next-breadcrumb .next-breadcrumb-separator{color:#e3e4e6;color:var(--breadcrumb-icon-color,#e3e4e6)}.next-breadcrumb .next-breadcrumb-text:not(.next-breadcrumb-text-ellipsis):hover>a{color:#333;color:var(--breadcrumb-text-color-hover,#333)}.next-breadcrumb a.next-breadcrumb-text.activated:hover>a{color:#b3b3b3;color:var(--breadcrumb-text-current-color-hover,#b3b3b3)}.next-breadcrumb a.next-breadcrumb-text:not(.next-breadcrumb-text-ellipsis):hover{color:#333;color:var(--breadcrumb-text-color-hover,#333)}.next-breadcrumb a.next-breadcrumb-text:not(.next-breadcrumb-text-ellipsis):hover>b{color:#0064c8;color:var(--breadcrumb-text-keyword-color-hover,#0064c8)}.next-breadcrumb a.next-breadcrumb-text.activated:hover{color:#b3b3b3;color:var(--breadcrumb-text-current-color-hover,#b3b3b3);font-weight:400;font-weight:var(--breadcrumb-text-current-weight,normal)}.next-breadcrumb-icon-sep:before{content:"\e617"}.next-breadcrumb-dropdown-wrapper{padding:4px 0}.next-btn,.next-btn *,.next-btn :after,.next-btn :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-btn::-moz-focus-inner{border:0;padding:0}.next-btn,.next-btn:active,.next-btn:focus,.next-btn:hover{outline:0}@keyframes loadingCircle{0%{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.next-btn{position:relative;display:inline-block;-webkit-box-shadow:none;-webkit-box-shadow:var(--btn-shadow,none);box-shadow:none;box-shadow:var(--btn-shadow,none);text-decoration:none;text-align:center;text-transform:none;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;transition:all .1s linear;line-height:1;cursor:pointer}.next-btn:after{text-align:center;position:absolute;opacity:0;visibility:hidden;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.next-btn:before{content:"";height:100%;width:0}.next-btn .next-icon,.next-btn:before{display:inline-block;vertical-align:middle}.next-btn .next-icon{font-size:0}.next-btn>.next-btn-helper,.next-btn>div,.next-btn>span{display:inline-block;vertical-align:middle}.next-btn>.next-btn-helper{text-decoration:inherit}.next-btn.hover,.next-btn:hover{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}.next-btn.next-small{border-radius:2px;border-radius:var(--btn-size-s-corner,2px);padding:0 8px;padding:0 var(--btn-size-s-padding,8px);height:24px;height:var(--btn-size-s-height,24px);font-size:12px;font-size:var(--btn-size-s-font,12px);border-width:1px;border-width:var(--btn-size-s-border-width,1px)}.next-btn.next-small>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:8px}.next-btn.next-small>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-small>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:8px;margin-right:0}.next-btn.next-small>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-small>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn.next-small>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn.next-small>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:8px;left:var(--btn-size-s-padding,8px);top:50%;text-align:center;margin-right:8px}.next-btn.next-small.next-btn-loading>.next-icon{display:none}.next-btn.next-small>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn.next-small>.next-btn-custom-loading-icon.show{width:12px;margin-right:8px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn.next-medium{border-radius:2px;border-radius:var(--btn-size-m-corner,2px);padding:0 16px;padding:0 var(--btn-size-m-padding,16px);height:32px;height:var(--btn-size-m-height,32px);font-size:12px;font-size:var(--btn-size-m-font,12px);border-width:1px;border-width:var(--btn-size-m-border-width,1px)}.next-btn.next-medium>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:8px}.next-btn.next-medium>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-medium>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:8px;margin-right:0}.next-btn.next-medium>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-medium>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn.next-medium>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn.next-medium>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:16px;left:var(--btn-size-m-padding,16px);top:50%;text-align:center;margin-right:8px}.next-btn.next-medium.next-btn-loading>.next-icon{display:none}.next-btn.next-medium>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn.next-medium>.next-btn-custom-loading-icon.show{width:12px;margin-right:8px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn.next-large{border-radius:2px;border-radius:var(--btn-size-l-corner,2px);padding:0 16px;padding:0 var(--btn-size-l-padding,16px);height:36px;height:var(--btn-size-l-height,36px);font-size:14px;font-size:var(--btn-size-l-font,14px);border-width:1px;border-width:var(--btn-size-l-border-width,1px)}.next-btn.next-large>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:8px}.next-btn.next-large>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-large>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:8px;margin-right:0}.next-btn.next-large>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-large>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn.next-large>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn.next-large>.next-btn-icon.next-icon-alone:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large.next-btn-loading:before{width:16px;height:16px;font-size:16px;line-height:16px;left:16px;left:var(--btn-size-l-padding,16px);top:50%;text-align:center;margin-right:8px}.next-btn.next-large.next-btn-loading>.next-icon{display:none}.next-btn.next-large>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn.next-large>.next-btn-custom-loading-icon.show{width:16px;margin-right:8px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn.next-btn-normal{border-style:solid;border-style:var(--btn-pure-normal-border-style,solid);background:#fff;background:var(--btn-pure-normal-bg,#fff);border-color:#c0c6cc;border-color:var(--btn-pure-normal-border-color,#c0c6cc)}.next-btn.next-btn-normal,.next-btn.next-btn-normal.visited,.next-btn.next-btn-normal:link,.next-btn.next-btn-normal:visited{color:#333;color:var(--btn-pure-normal-color,#333)}.next-btn.next-btn-normal.hover,.next-btn.next-btn-normal:focus,.next-btn.next-btn-normal:hover{color:#333;color:var(--btn-pure-normal-color-hover,#333);background:#f7f9fa;background:var(--btn-pure-normal-bg-hover,#f7f9fa);border-color:#c0c6cc;border-color:var(--btn-pure-normal-border-color-hover,#c0c6cc);text-decoration:none}.next-btn.next-btn-normal.active,.next-btn.next-btn-normal:active{color:#333;color:var(--btn-pure-normal-color-active,#333);background:#eff3f8;background:var(--btn-pure-normal-bg-active,#eff3f8);border-color:#c0c6cc;border-color:var(--btn-pure-normal-border-color-active,#c0c6cc);text-decoration:none}.next-btn.next-btn-primary{border-style:solid;border-style:var(--btn-pure-primary-border-style,solid);background:#0064c8;background:var(--btn-pure-primary-bg,#0064c8);border-color:transparent;border-color:var(--btn-pure-primary-border-color,transparent)}.next-btn.next-btn-primary,.next-btn.next-btn-primary.visited,.next-btn.next-btn-primary:link,.next-btn.next-btn-primary:visited{color:#fff;color:var(--btn-pure-primary-color,#fff)}.next-btn.next-btn-primary.hover,.next-btn.next-btn-primary:focus,.next-btn.next-btn-primary:hover{color:#fff;color:var(--btn-pure-primary-color-hover,#fff);background:#0064c8;background:var(--btn-pure-primary-bg-hover,#0064c8);border-color:transparent;border-color:var(--btn-pure-primary-border-color-hover,transparent);text-decoration:none}.next-btn.next-btn-primary.active,.next-btn.next-btn-primary:active{color:#fff;color:var(--btn-pure-primary-color-active,#fff);background:#003c78;background:var(--btn-pure-primary-bg-active,#003c78);border-color:transparent;border-color:var(--btn-pure-primary-border-color-active,transparent);text-decoration:none}.next-btn.next-btn-secondary{border-style:solid;border-style:var(--btn-pure-secondary-border-style,solid);background:transparent;background:var(--btn-pure-secondary-bg,transparent);border-color:#c0c6cc;border-color:var(--btn-pure-secondary-border-color,#c0c6cc)}.next-btn.next-btn-secondary,.next-btn.next-btn-secondary.visited,.next-btn.next-btn-secondary:link,.next-btn.next-btn-secondary:visited{color:#333;color:var(--btn-pure-secondary-color,#333)}.next-btn.next-btn-secondary.hover,.next-btn.next-btn-secondary:focus,.next-btn.next-btn-secondary:hover{color:#333;color:var(--btn-pure-secondary-color-hover,#333);background:#f7f9fa;background:var(--btn-pure-secondary-bg-hover,#f7f9fa);border-color:#c0c6cc;border-color:var(--btn-pure-secondary-border-color-hover,#c0c6cc);text-decoration:none}.next-btn.next-btn-secondary.active,.next-btn.next-btn-secondary:active{color:#333;color:var(--btn-pure-secondary-color-active,#333);background:#eff3f8;background:var(--btn-pure-secondary-bg-active,#eff3f8);border-color:#c0c6cc;border-color:var(--btn-pure-secondary-border-color-active,#c0c6cc);text-decoration:none}.next-btn.disabled,.next-btn[disabled]{cursor:not-allowed}.next-btn.disabled.next-btn-normal,.next-btn[disabled].next-btn-normal{background:#fff;background:var(--btn-pure-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-normal-border-color-disabled,#d1d5d9)}.next-btn.disabled.next-btn-normal,.next-btn.disabled.next-btn-normal.visited,.next-btn.disabled.next-btn-normal:link,.next-btn.disabled.next-btn-normal:visited,.next-btn[disabled].next-btn-normal,.next-btn[disabled].next-btn-normal.visited,.next-btn[disabled].next-btn-normal:link,.next-btn[disabled].next-btn-normal:visited{color:#b3b3b3;color:var(--btn-pure-normal-color-disabled,#b3b3b3)}.next-btn.disabled.next-btn-normal.active,.next-btn.disabled.next-btn-normal.hover,.next-btn.disabled.next-btn-normal:active,.next-btn.disabled.next-btn-normal:focus,.next-btn.disabled.next-btn-normal:hover,.next-btn[disabled].next-btn-normal.active,.next-btn[disabled].next-btn-normal.hover,.next-btn[disabled].next-btn-normal:active,.next-btn[disabled].next-btn-normal:focus,.next-btn[disabled].next-btn-normal:hover{color:#b3b3b3;color:var(--btn-pure-normal-color-disabled,#b3b3b3);background:#fff;background:var(--btn-pure-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-normal-border-color-disabled,#d1d5d9);text-decoration:none}.next-btn.disabled.next-btn-primary,.next-btn[disabled].next-btn-primary{background:#d1d5d9;background:var(--btn-pure-primary-bg-disabled,#d1d5d9);border-color:transparent;border-color:var(--btn-pure-primary-border-color-disabled,transparent)}.next-btn.disabled.next-btn-primary,.next-btn.disabled.next-btn-primary.visited,.next-btn.disabled.next-btn-primary:link,.next-btn.disabled.next-btn-primary:visited,.next-btn[disabled].next-btn-primary,.next-btn[disabled].next-btn-primary.visited,.next-btn[disabled].next-btn-primary:link,.next-btn[disabled].next-btn-primary:visited{color:#fff;color:var(--btn-pure-primary-color-disabled,#fff)}.next-btn.disabled.next-btn-primary.active,.next-btn.disabled.next-btn-primary.hover,.next-btn.disabled.next-btn-primary:active,.next-btn.disabled.next-btn-primary:focus,.next-btn.disabled.next-btn-primary:hover,.next-btn[disabled].next-btn-primary.active,.next-btn[disabled].next-btn-primary.hover,.next-btn[disabled].next-btn-primary:active,.next-btn[disabled].next-btn-primary:focus,.next-btn[disabled].next-btn-primary:hover{color:#fff;color:var(--btn-pure-primary-color-disabled,#fff);background:#d1d5d9;background:var(--btn-pure-primary-bg-disabled,#d1d5d9);border-color:transparent;border-color:var(--btn-pure-primary-border-color-disabled,transparent);text-decoration:none}.next-btn.disabled.next-btn-secondary,.next-btn[disabled].next-btn-secondary{background:#fff;background:var(--btn-pure-secondary-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-secondary-border-color-disabled,#d1d5d9)}.next-btn.disabled.next-btn-secondary,.next-btn.disabled.next-btn-secondary.visited,.next-btn.disabled.next-btn-secondary:link,.next-btn.disabled.next-btn-secondary:visited,.next-btn[disabled].next-btn-secondary,.next-btn[disabled].next-btn-secondary.visited,.next-btn[disabled].next-btn-secondary:link,.next-btn[disabled].next-btn-secondary:visited{color:#b3b3b3;color:var(--btn-pure-secondary-color-disabled,#b3b3b3)}.next-btn.disabled.next-btn-secondary.active,.next-btn.disabled.next-btn-secondary.hover,.next-btn.disabled.next-btn-secondary:active,.next-btn.disabled.next-btn-secondary:focus,.next-btn.disabled.next-btn-secondary:hover,.next-btn[disabled].next-btn-secondary.active,.next-btn[disabled].next-btn-secondary.hover,.next-btn[disabled].next-btn-secondary:active,.next-btn[disabled].next-btn-secondary:focus,.next-btn[disabled].next-btn-secondary:hover{color:#b3b3b3;color:var(--btn-pure-secondary-color-disabled,#b3b3b3);background:#fff;background:var(--btn-pure-secondary-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-secondary-border-color-disabled,#d1d5d9);text-decoration:none}.next-btn-warning{border-style:solid;border-style:var(--btn-warning-border-style,solid)}.next-btn-warning.next-btn-primary{background:#c80000;background:var(--btn-warning-primary-bg,#c80000);border-color:#f8efef;border-color:var(--btn-warning-primary-border-color,#f8efef)}.next-btn-warning.next-btn-primary,.next-btn-warning.next-btn-primary.visited,.next-btn-warning.next-btn-primary:link,.next-btn-warning.next-btn-primary:visited{color:#fff;color:var(--btn-warning-primary-color,#fff)}.next-btn-warning.next-btn-primary.hover,.next-btn-warning.next-btn-primary:focus,.next-btn-warning.next-btn-primary:hover{color:#fff;color:var(--btn-warning-primary-color-hover,#fff);background:#c80000;background:var(--btn-warning-primary-bg-hover,#c80000);border-color:#f5e6e6;border-color:var(--btn-warning-primary-border-color-hover,#f5e6e6);text-decoration:none}.next-btn-warning.next-btn-primary.active,.next-btn-warning.next-btn-primary:active{color:#fff;color:var(--btn-warning-primary-color-active,#fff);background:#c80000;background:var(--btn-warning-primary-bg-active,#c80000);border-color:#f5e6e6;border-color:var(--btn-warning-primary-border-color-active,#f5e6e6);text-decoration:none}.next-btn-warning.next-btn-primary.disabled,.next-btn-warning.next-btn-primary[disabled]{background:#d1d5d9;background:var(--btn-warning-primary-bg-disabled,#d1d5d9);border-color:#fff;border-color:var(--btn-warning-primary-border-color-disabled,#fff)}.next-btn-warning.next-btn-primary.disabled,.next-btn-warning.next-btn-primary.disabled.visited,.next-btn-warning.next-btn-primary.disabled:link,.next-btn-warning.next-btn-primary.disabled:visited,.next-btn-warning.next-btn-primary[disabled],.next-btn-warning.next-btn-primary[disabled].visited,.next-btn-warning.next-btn-primary[disabled]:link,.next-btn-warning.next-btn-primary[disabled]:visited{color:#fff;color:var(--btn-warning-primary-color-disabled,#fff)}.next-btn-warning.next-btn-primary.disabled.active,.next-btn-warning.next-btn-primary.disabled.hover,.next-btn-warning.next-btn-primary.disabled:active,.next-btn-warning.next-btn-primary.disabled:focus,.next-btn-warning.next-btn-primary.disabled:hover,.next-btn-warning.next-btn-primary[disabled].active,.next-btn-warning.next-btn-primary[disabled].hover,.next-btn-warning.next-btn-primary[disabled]:active,.next-btn-warning.next-btn-primary[disabled]:focus,.next-btn-warning.next-btn-primary[disabled]:hover{color:#fff;color:var(--btn-warning-primary-color-disabled,#fff);background:#d1d5d9;background:var(--btn-warning-primary-bg-disabled,#d1d5d9);border-color:#fff;border-color:var(--btn-warning-primary-border-color-disabled,#fff);text-decoration:none}.next-btn-warning.next-btn-normal{background:#fff;background:var(--btn-warning-normal-bg,#fff);border-color:#c80000;border-color:var(--btn-warning-normal-border-color,#c80000)}.next-btn-warning.next-btn-normal,.next-btn-warning.next-btn-normal.visited,.next-btn-warning.next-btn-normal:link,.next-btn-warning.next-btn-normal:visited{color:#c80000;color:var(--btn-warning-normal-color,#c80000)}.next-btn-warning.next-btn-normal.hover,.next-btn-warning.next-btn-normal:focus,.next-btn-warning.next-btn-normal:hover{color:#c80000;color:var(--btn-warning-normal-color-hover,#c80000);background:#faf7f7;background:var(--btn-warning-normal-bg-hover,#faf7f7);border-color:#c80000;border-color:var(--btn-warning-normal-border-color-hover,#c80000);text-decoration:none}.next-btn-warning.next-btn-normal.active,.next-btn-warning.next-btn-normal:active{color:#c80000;color:var(--btn-warning-normal-color-active,#c80000);background:#faf7f7;background:var(--btn-warning-normal-bg-active,#faf7f7);border-color:#c80000;border-color:var(--btn-warning-normal-border-color-active,#c80000);text-decoration:none}.next-btn-warning.next-btn-normal.disabled,.next-btn-warning.next-btn-normal[disabled]{background:#fff;background:var(--btn-warning-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-warning-normal-border-color-disabled,#d1d5d9)}.next-btn-warning.next-btn-normal.disabled,.next-btn-warning.next-btn-normal.disabled.visited,.next-btn-warning.next-btn-normal.disabled:link,.next-btn-warning.next-btn-normal.disabled:visited,.next-btn-warning.next-btn-normal[disabled],.next-btn-warning.next-btn-normal[disabled].visited,.next-btn-warning.next-btn-normal[disabled]:link,.next-btn-warning.next-btn-normal[disabled]:visited{color:#b3b3b3;color:var(--btn-warning-normal-color-disabled,#b3b3b3)}.next-btn-warning.next-btn-normal.disabled.active,.next-btn-warning.next-btn-normal.disabled.hover,.next-btn-warning.next-btn-normal.disabled:active,.next-btn-warning.next-btn-normal.disabled:focus,.next-btn-warning.next-btn-normal.disabled:hover,.next-btn-warning.next-btn-normal[disabled].active,.next-btn-warning.next-btn-normal[disabled].hover,.next-btn-warning.next-btn-normal[disabled]:active,.next-btn-warning.next-btn-normal[disabled]:focus,.next-btn-warning.next-btn-normal[disabled]:hover{color:#b3b3b3;color:var(--btn-warning-normal-color-disabled,#b3b3b3);background:#fff;background:var(--btn-warning-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-warning-normal-border-color-disabled,#d1d5d9);text-decoration:none}.next-btn-text{border-radius:0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.next-btn-text,.next-btn-text.hover,.next-btn-text:hover{-webkit-box-shadow:none;box-shadow:none}.next-btn-text.next-btn-primary{background:transparent;border-color:transparent}.next-btn-text.next-btn-primary,.next-btn-text.next-btn-primary.visited,.next-btn-text.next-btn-primary:link,.next-btn-text.next-btn-primary:visited{color:#0064c8;color:var(--btn-text-primary-color,#0064c8)}.next-btn-text.next-btn-primary.active,.next-btn-text.next-btn-primary.hover,.next-btn-text.next-btn-primary:active,.next-btn-text.next-btn-primary:focus,.next-btn-text.next-btn-primary:hover{color:#0064c8;color:var(--btn-text-primary-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-primary.disabled,.next-btn-text.next-btn-primary[disabled]{background:transparent;border-color:transparent}.next-btn-text.next-btn-primary.disabled,.next-btn-text.next-btn-primary.disabled.visited,.next-btn-text.next-btn-primary.disabled:link,.next-btn-text.next-btn-primary.disabled:visited,.next-btn-text.next-btn-primary[disabled],.next-btn-text.next-btn-primary[disabled].visited,.next-btn-text.next-btn-primary[disabled]:link,.next-btn-text.next-btn-primary[disabled]:visited{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3)}.next-btn-text.next-btn-primary.disabled.active,.next-btn-text.next-btn-primary.disabled.hover,.next-btn-text.next-btn-primary.disabled:active,.next-btn-text.next-btn-primary.disabled:focus,.next-btn-text.next-btn-primary.disabled:hover,.next-btn-text.next-btn-primary[disabled].active,.next-btn-text.next-btn-primary[disabled].hover,.next-btn-text.next-btn-primary[disabled]:active,.next-btn-text.next-btn-primary[disabled]:focus,.next-btn-text.next-btn-primary[disabled]:hover{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-secondary{background:transparent;border-color:transparent}.next-btn-text.next-btn-secondary,.next-btn-text.next-btn-secondary.visited,.next-btn-text.next-btn-secondary:link,.next-btn-text.next-btn-secondary:visited{color:#333;color:var(--btn-text-secondary-color,#333)}.next-btn-text.next-btn-secondary.active,.next-btn-text.next-btn-secondary.hover,.next-btn-text.next-btn-secondary:active,.next-btn-text.next-btn-secondary:focus,.next-btn-text.next-btn-secondary:hover{color:#333;color:var(--btn-text-secondary-color-hover,#333);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-secondary.disabled,.next-btn-text.next-btn-secondary[disabled]{background:transparent;border-color:transparent}.next-btn-text.next-btn-secondary.disabled,.next-btn-text.next-btn-secondary.disabled.visited,.next-btn-text.next-btn-secondary.disabled:link,.next-btn-text.next-btn-secondary.disabled:visited,.next-btn-text.next-btn-secondary[disabled],.next-btn-text.next-btn-secondary[disabled].visited,.next-btn-text.next-btn-secondary[disabled]:link,.next-btn-text.next-btn-secondary[disabled]:visited{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3)}.next-btn-text.next-btn-secondary.disabled.active,.next-btn-text.next-btn-secondary.disabled.hover,.next-btn-text.next-btn-secondary.disabled:active,.next-btn-text.next-btn-secondary.disabled:focus,.next-btn-text.next-btn-secondary.disabled:hover,.next-btn-text.next-btn-secondary[disabled].active,.next-btn-text.next-btn-secondary[disabled].hover,.next-btn-text.next-btn-secondary[disabled]:active,.next-btn-text.next-btn-secondary[disabled]:focus,.next-btn-text.next-btn-secondary[disabled]:hover{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-normal{background:transparent;border-color:transparent}.next-btn-text.next-btn-normal,.next-btn-text.next-btn-normal.visited,.next-btn-text.next-btn-normal:link,.next-btn-text.next-btn-normal:visited{color:#333;color:var(--btn-text-normal-color,#333)}.next-btn-text.next-btn-normal.active,.next-btn-text.next-btn-normal.hover,.next-btn-text.next-btn-normal:active,.next-btn-text.next-btn-normal:focus,.next-btn-text.next-btn-normal:hover{color:#0064c8;color:var(--btn-text-normal-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-normal.disabled,.next-btn-text.next-btn-normal[disabled]{background:transparent;border-color:transparent}.next-btn-text.next-btn-normal.disabled,.next-btn-text.next-btn-normal.disabled.visited,.next-btn-text.next-btn-normal.disabled:link,.next-btn-text.next-btn-normal.disabled:visited,.next-btn-text.next-btn-normal[disabled],.next-btn-text.next-btn-normal[disabled].visited,.next-btn-text.next-btn-normal[disabled]:link,.next-btn-text.next-btn-normal[disabled]:visited{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3)}.next-btn-text.next-btn-normal.disabled.active,.next-btn-text.next-btn-normal.disabled.hover,.next-btn-text.next-btn-normal.disabled:active,.next-btn-text.next-btn-normal.disabled:focus,.next-btn-text.next-btn-normal.disabled:hover,.next-btn-text.next-btn-normal[disabled].active,.next-btn-text.next-btn-normal[disabled].hover,.next-btn-text.next-btn-normal[disabled]:active,.next-btn-text.next-btn-normal[disabled]:focus,.next-btn-text.next-btn-normal[disabled]:hover{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-large{border-radius:0;padding:0;height:24px;height:var(--btn-text-size-l-height,24px);font-size:14px;font-size:var(--btn-text-size-l-font,14px);border-width:0}.next-btn-text.next-large>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:4px}.next-btn-text.next-large>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text.next-large>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text.next-large>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:4px;margin-right:0}.next-btn-text.next-large>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text.next-large>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text.next-large>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn-text.next-large>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn-text.next-large>.next-btn-icon.next-icon-alone:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text.next-large.next-btn-loading:before{width:16px;height:16px;font-size:16px;line-height:16px;left:0;top:50%;text-align:center;margin-right:4px}.next-btn-text.next-large.next-btn-loading>.next-icon{display:none}.next-btn-text.next-large>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn-text.next-large>.next-btn-custom-loading-icon.show{width:16px;margin-right:4px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn-text.next-medium{border-radius:0;padding:0;height:20px;height:var(--btn-text-size-m-height,20px);font-size:12px;font-size:var(--btn-text-size-m-font,12px);border-width:0}.next-btn-text.next-medium>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:4px}.next-btn-text.next-medium>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text.next-medium>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-medium>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:4px;margin-right:0}.next-btn-text.next-medium>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text.next-medium>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-medium>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn-text.next-medium>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn-text.next-medium>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-medium.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:0;top:50%;text-align:center;margin-right:4px}.next-btn-text.next-medium.next-btn-loading>.next-icon{display:none}.next-btn-text.next-medium>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn-text.next-medium>.next-btn-custom-loading-icon.show{width:12px;margin-right:4px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn-text.next-small{border-radius:0;padding:0;height:16px;height:var(--btn-text-size-s-height,16px);font-size:12px;font-size:var(--btn-text-size-s-font,12px);border-width:0}.next-btn-text.next-small>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:4px}.next-btn-text.next-small>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text.next-small>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-small>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:4px;margin-right:0}.next-btn-text.next-small>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text.next-small>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-small>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn-text.next-small>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn-text.next-small>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-small.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:0;top:50%;text-align:center;margin-right:4px}.next-btn-text.next-small.next-btn-loading>.next-icon{display:none}.next-btn-text.next-small>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn-text.next-small>.next-btn-custom-loading-icon.show{width:12px;margin-right:4px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn-text.next-btn-loading{background:transparent;border-color:transparent}.next-btn-text.next-btn-loading,.next-btn-text.next-btn-loading.visited,.next-btn-text.next-btn-loading:link,.next-btn-text.next-btn-loading:visited{color:#111;color:var(--btn-text-loading-color,#111)}.next-btn-text.next-btn-loading.active,.next-btn-text.next-btn-loading.hover,.next-btn-text.next-btn-loading:active,.next-btn-text.next-btn-loading:focus,.next-btn-text.next-btn-loading:hover{color:#111;color:var(--btn-text-loading-color,#111);background:transparent;border-color:transparent;text-decoration:none}.next-btn-loading{pointer-events:none}.next-btn-loading:before{font-family:NextIcon;content:"\e646";content:var(--icon-content-loading,"");opacity:1;visibility:visible;-webkit-animation:loadingCircle 2s linear infinite;animation:loadingCircle 2s linear infinite}.next-btn-loading:after{content:"";display:inline-block;position:static;height:100%;width:0;vertical-align:middle}.next-btn-custom-loading{pointer-events:none}.next-btn-ghost{-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--btn-ghost-border-style,solid)}.next-btn-ghost.next-btn-dark{background:transparent;background:rgba(var(--btn-ghost-dark-bg,transparent),0);border-color:#fff;border-color:var(--btn-ghost-dark-border-color,#fff)}.next-btn-ghost.next-btn-dark,.next-btn-ghost.next-btn-dark.visited,.next-btn-ghost.next-btn-dark:link,.next-btn-ghost.next-btn-dark:visited{color:#fff;color:var(--btn-ghost-dark-color,#fff)}.next-btn-ghost.next-btn-dark.active,.next-btn-ghost.next-btn-dark.hover,.next-btn-ghost.next-btn-dark:active,.next-btn-ghost.next-btn-dark:focus,.next-btn-ghost.next-btn-dark:hover{color:#fff;color:var(--btn-ghost-dark-color-hover,#fff);background:hsla(0,0%,100%,.29);background:rgba(var(--btn-ghost-dark-bg-hover-rgb,#fff),var(--btn-ghost-dark-bg-hover-opacity,.29));border-color:#fff;border-color:var(--btn-ghost-dark-border-color-hover,#fff);text-decoration:none}.next-btn-ghost.next-btn-dark.disabled,.next-btn-ghost.next-btn-dark[disabled]{background:transparent;background:var(--btn-ghost-dark-bg-disabled,transparent);border-color:hsla(0,0%,100%,.15);border-color:rgba(var(--btn-ghost-dark-border-color-disabled-rgb,#fff),var(--btn-ghost-dark-border-color-disabled-opacity,.15))}.next-btn-ghost.next-btn-dark.disabled,.next-btn-ghost.next-btn-dark.disabled.visited,.next-btn-ghost.next-btn-dark.disabled:link,.next-btn-ghost.next-btn-dark.disabled:visited,.next-btn-ghost.next-btn-dark[disabled],.next-btn-ghost.next-btn-dark[disabled].visited,.next-btn-ghost.next-btn-dark[disabled]:link,.next-btn-ghost.next-btn-dark[disabled]:visited{color:hsla(0,0%,100%,.25);color:rgba(var(--btn-ghost-dark-color-disabled-rgb,#fff),var(--btn-ghost-dark-color-disabled-opacity,.25))}.next-btn-ghost.next-btn-dark.disabled.active,.next-btn-ghost.next-btn-dark.disabled.hover,.next-btn-ghost.next-btn-dark.disabled:active,.next-btn-ghost.next-btn-dark.disabled:focus,.next-btn-ghost.next-btn-dark.disabled:hover,.next-btn-ghost.next-btn-dark[disabled].active,.next-btn-ghost.next-btn-dark[disabled].hover,.next-btn-ghost.next-btn-dark[disabled]:active,.next-btn-ghost.next-btn-dark[disabled]:focus,.next-btn-ghost.next-btn-dark[disabled]:hover{color:hsla(0,0%,100%,.25);color:rgba(var(--btn-ghost-dark-color-disabled-rgb,#fff),var(--btn-ghost-dark-color-disabled-opacity,.25));background:transparent;background:var(--btn-ghost-dark-bg-disabled,transparent);border-color:hsla(0,0%,100%,.15);border-color:rgba(var(--btn-ghost-dark-border-color-disabled-rgb,#fff),var(--btn-ghost-dark-border-color-disabled-opacity,.15));text-decoration:none}.next-btn-ghost.next-btn-light{background:#fff;background:rgba(var(--btn-ghost-light-bg,#fff),var(--btn-ghost-light-bg-opacity,1));border-color:#0064c8;border-color:var(--btn-ghost-light-border-color,#0064c8)}.next-btn-ghost.next-btn-light,.next-btn-ghost.next-btn-light.visited,.next-btn-ghost.next-btn-light:link,.next-btn-ghost.next-btn-light:visited{color:#0064c8;color:var(--btn-ghost-light-color,#0064c8)}.next-btn-ghost.next-btn-light.active,.next-btn-ghost.next-btn-light.hover,.next-btn-ghost.next-btn-light:active,.next-btn-ghost.next-btn-light:focus,.next-btn-ghost.next-btn-light:hover{color:#fff;color:var(--btn-ghost-light-color-hover,#fff);background:#0050a0;background:rgba(var(--btn-ghost-light-bg-hover-rgb,#0050A0),var(--btn-ghost-light-bg-hover-opacity,1));border-color:transparent;border-color:var(--btn-ghost-light-border-color-hover,transparent);text-decoration:none}.next-btn-ghost.next-btn-light.disabled,.next-btn-ghost.next-btn-light[disabled]{background:#f7f9fa;background:var(--btn-ghost-light-bg-disabled,#f7f9fa);border-color:#fff;border-color:rgba(var(--btn-ghost-light-border-color-disabled-rgb,#fff),var(--btn-ghost-light-border-color-disabled-opacity,1))}.next-btn-ghost.next-btn-light.disabled,.next-btn-ghost.next-btn-light.disabled.visited,.next-btn-ghost.next-btn-light.disabled:link,.next-btn-ghost.next-btn-light.disabled:visited,.next-btn-ghost.next-btn-light[disabled],.next-btn-ghost.next-btn-light[disabled].visited,.next-btn-ghost.next-btn-light[disabled]:link,.next-btn-ghost.next-btn-light[disabled]:visited{color:#c1c1c1;color:rgba(var(--btn-ghost-light-color-disabled-rgb,#C1C1C1),var(--btn-ghost-light-color-disabled-opacity,1))}.next-btn-ghost.next-btn-light.disabled.active,.next-btn-ghost.next-btn-light.disabled.hover,.next-btn-ghost.next-btn-light.disabled:active,.next-btn-ghost.next-btn-light.disabled:focus,.next-btn-ghost.next-btn-light.disabled:hover,.next-btn-ghost.next-btn-light[disabled].active,.next-btn-ghost.next-btn-light[disabled].hover,.next-btn-ghost.next-btn-light[disabled]:active,.next-btn-ghost.next-btn-light[disabled]:focus,.next-btn-ghost.next-btn-light[disabled]:hover{color:#c1c1c1;color:rgba(var(--btn-ghost-light-color-disabled-rgb,#C1C1C1),var(--btn-ghost-light-color-disabled-opacity,1));background:#f7f9fa;background:var(--btn-ghost-light-bg-disabled,#f7f9fa);border-color:#fff;border-color:rgba(var(--btn-ghost-light-border-color-disabled-rgb,#fff),var(--btn-ghost-light-border-color-disabled-opacity,1));text-decoration:none}.next-btn-group{position:relative;display:inline-block;vertical-align:middle}.next-btn-group>.next-btn{position:relative;float:left;-webkit-box-shadow:none;box-shadow:none}.next-btn-group>.next-btn.active,.next-btn-group>.next-btn:active,.next-btn-group>.next-btn:focus,.next-btn-group>.next-btn:hover{z-index:1}.next-btn-group>.next-btn.disabled,.next-btn-group>.next-btn[disabled]{z-index:0}.next-btn-group .next-btn.next-btn{margin:0 0 0 -1px}.next-btn-group .next-btn:not(:first-child):not(:last-child){border-radius:0}.next-btn-group>.next-btn:first-child{margin:0}.next-btn-group>.next-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.next-btn-group>.next-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.next-btn-group>.next-btn-primary:not(:first-child){border-left-color:hsla(0,0%,100%,.2)}.next-btn-group>.next-btn-primary:not(:first-child):hover{border-left-color:transparent}.next-btn-group>.next-btn-primary:not(:first-child).disabled,.next-btn-group>.next-btn-primary:not(:first-child)[disabled]{border-left-color:#e3e4e6;border-left-color:var(--color-line1-1,#e3e4e6)}.next-btn-group[dir=rtl]>.next-btn{float:right}.next-btn-group[dir=rtl] .next-btn.next-btn{margin:0 -1px 0 0}.next-btn-group[dir=rtl]>.next-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.next-btn-group[dir=rtl]>.next-btn:last-child:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0}.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child){border-right-color:hsla(0,0%,100%,.2)}.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child):hover{border-right-color:transparent}.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child).disabled,.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child)[disabled]{border-right-color:#e3e4e6;border-right-color:var(--color-line1-1,#e3e4e6)}.next-btn.next-small[dir=rtl]{border-radius:2px;border-radius:var(--btn-size-s-corner,2px)}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-first{margin-left:8px;margin-right:0}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-last{margin-left:0;margin-right:8px}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small[dir=rtl].next-btn-loading{padding-left:8px;padding-left:var(--btn-size-s-padding,8px);padding-right:28px;padding-right:calc(var(--btn-size-s-padding, 8px) + 20px)}.next-btn.next-small[dir=rtl].next-btn-loading:after{right:8px;right:var(--btn-size-s-padding,8px);top:50%;margin-right:0;margin-left:8px}.next-btn.next-medium[dir=rtl]{border-radius:2px;border-radius:var(--btn-size-m-corner,2px)}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-first{margin-left:8px;margin-right:0}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-last{margin-left:0;margin-right:8px}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium[dir=rtl].next-btn-loading{padding-left:16px;padding-left:var(--btn-size-m-padding,16px);padding-right:36px;padding-right:calc(var(--btn-size-m-padding, 16px) + 20px)}.next-btn.next-medium[dir=rtl].next-btn-loading:after{right:16px;right:var(--btn-size-m-padding,16px);top:50%;margin-right:0;margin-left:8px}.next-btn.next-large[dir=rtl]{border-radius:2px;border-radius:var(--btn-size-l-corner,2px)}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-first{margin-left:8px;margin-right:0}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-last{margin-left:0;margin-right:8px}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large[dir=rtl].next-btn-loading{padding-left:16px;padding-left:var(--btn-size-l-padding,16px);padding-right:40px;padding-right:calc(var(--btn-size-l-padding, 16px) + 24px)}.next-btn.next-large[dir=rtl].next-btn-loading:after{right:16px;right:var(--btn-size-l-padding,16px);top:50%;margin-right:0;margin-left:8px}.next-btn-text[dir=rtl].next-large{border-radius:0}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-first{margin-left:4px;margin-right:0}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-last{margin-left:0;margin-right:4px}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text[dir=rtl].next-large.next-btn-loading{padding-left:0;padding-right:20px}.next-btn-text[dir=rtl].next-large.next-btn-loading:after{right:0;top:50%;margin-right:0;margin-left:4px}.next-btn-text[dir=rtl].next-medium{border-radius:0}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-first{margin-left:4px;margin-right:0}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-last{margin-left:0;margin-right:4px}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-medium.next-btn-loading{padding-left:0;padding-right:16px}.next-btn-text[dir=rtl].next-medium.next-btn-loading:after{right:0;top:50%;margin-right:0;margin-left:4px}.next-btn-text[dir=rtl].next-small{border-radius:0}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-first{margin-left:4px;margin-right:0}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-last{margin-left:0;margin-right:4px}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-small.next-btn-loading{padding-left:0;padding-right:16px}.next-btn-text[dir=rtl].next-small.next-btn-loading:after{right:0;top:50%;margin-right:0;margin-left:4px}.next-input{vertical-align:middle;display:inline-table;border-collapse:separate;font-size:0;line-height:1;width:200px;border-spacing:0;-webkit-transition:all .1s linear;transition:all .1s linear;border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-bg-color,#fff)}.next-input,.next-input *,.next-input :after,.next-input :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-input input{height:100%}.next-input input[type=reset],.next-input input[type=submit]{-webkit-appearance:button;cursor:pointer}.next-input input::-moz-focus-inner{border:0;padding:0}.next-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset;-webkit-box-shadow:0 0 0 1000px var(--input-bg-color,#fff) inset;border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-input input[type=password]::-ms-reveal{display:none}.next-input textarea{resize:none}.next-input input,.next-input textarea{width:100%;border:none;outline:none;padding:0;margin:0;font-weight:400;vertical-align:middle;background-color:transparent;color:#333;color:var(--input-text-color,#333)}.next-input input::-ms-clear,.next-input textarea::-ms-clear{display:none}.next-input.next-small{height:24px;height:var(--form-element-small-height,24px);border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-input.next-small .next-input-label{padding-left:8px;padding-left:var(--input-s-label-padding-left,8px)}.next-input.next-small .next-input-inner,.next-input.next-small .next-input-label{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small .next-input-control,.next-input.next-small .next-input-inner-text{padding-right:4px;padding-right:var(--input-s-icon-padding-right,4px)}.next-input.next-small input{height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px \0;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::-moz-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small .next-input-text-field{padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px);height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2)}.next-input.next-small .next-icon .next-icon-remote,.next-input.next-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-input.next-small .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-small-corner,2px) var(--form-element-small-corner,2px) 0}.next-input.next-medium{height:32px;height:var(--form-element-medium-height,32px);border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-input.next-medium .next-input-label{padding-left:16px;padding-left:var(--input-m-label-padding-left,16px)}.next-input.next-medium .next-input-inner,.next-input.next-medium .next-input-label{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium .next-input-control,.next-input.next-medium .next-input-inner-text{padding-right:8px;padding-right:var(--input-m-icon-padding-right,8px)}.next-input.next-medium input{height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px \0;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::-moz-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium .next-input-text-field{padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px);height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2)}.next-input.next-medium .next-icon .next-icon-remote,.next-input.next-medium .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-input.next-medium .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-medium-corner,2px) var(--form-element-medium-corner,2px) 0}.next-input.next-large{height:36px;height:var(--form-element-large-height,36px);border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-input.next-large .next-input-label{padding-left:16px;padding-left:var(--input-l-label-padding-left,16px)}.next-input.next-large .next-input-inner,.next-input.next-large .next-input-label{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large .next-input-control,.next-input.next-large .next-input-inner-text{padding-right:12px;padding-right:var(--input-l-icon-padding-right,12px)}.next-input.next-large input{height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px \0;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::-webkit-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::-moz-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::-ms-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large .next-input-text-field{padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px);height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2)}.next-input.next-large .next-icon .next-icon-remote,.next-input.next-large .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-input.next-large .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-large-corner,2px) var(--form-element-large-corner,2px) 0}.next-input.next-input-textarea{height:auto;border-radius:2px;border-radius:var(--input-multiple-corner,2px);font-size:0}.next-input.next-input-textarea textarea{color:#333;color:var(--input-text-color,#333);padding:12px 16px;padding:var(--input-multiple-padding-tb,12px) var(--input-multiple-padding-lr,16px);font-size:12px;font-size:var(--input-multiple-font-size,12px);border-radius:2px;border-radius:var(--input-multiple-corner,2px)}.next-input.next-input-textarea.next-small textarea{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-input-textarea.next-large textarea{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-input-textarea .next-input-control{display:block;width:auto;border-radius:2px;border-radius:var(--input-multiple-corner,2px)}.next-input.next-input-textarea .next-input-len{padding:0 12px 4px;padding:0 var(--input-l-icon-padding-right,12px) 4px;display:block;text-align:right;width:auto}.next-input-hint-wrap{color:#888;color:var(--input-hint-color,#888);position:relative}.next-input-hint-wrap .next-input-clear{opacity:0;z-index:1;position:absolute}.next-input-hint-wrap .next-input-hint{opacity:1}.next-input .next-icon-eye-close:hover,.next-input .next-icon-eye:hover,.next-input .next-input-clear-icon:hover{cursor:pointer;color:#555;color:var(--input-hint-hover-color,#555)}.next-input .next-input-hover-show{opacity:0}.next-input.next-focus,.next-input:hover{border-color:#c0c6cc;border-color:var(--input-hover-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-hover-bg-color,#fff)}.next-input.next-focus .next-input-clear,.next-input:hover .next-input-clear{opacity:1}.next-input.next-focus .next-input-clear+.next-input-hint,.next-input:hover .next-input-clear+.next-input-hint{opacity:0}.next-input.next-focus .next-input-hover-show,.next-input .next-input-clear:focus,.next-input:hover .next-input-hover-show{opacity:1}.next-input .next-input-clear:focus+.next-input-hint{opacity:0}.next-input.next-focus{border-color:#0064c8;border-color:var(--input-focus-border-color,#0064c8);background-color:#fff;background-color:var(--input-focus-bg-color,#fff);-webkit-box-shadow:0 0 0 0 rgba(0,100,200,.2);box-shadow:0 0 0 0 rgba(0,100,200,.2)}.next-input.next-warning{background-color:#fff;background-color:var(--input-feedback-warning-bg-color,#fff)}.next-input.next-warning,.next-input.next-warning.next-focus,.next-input.next-warning:hover{border-color:#fac800;border-color:var(--input-feedback-warning-border-color,#fac800)}.next-input.next-warning.next-focus{-webkit-box-shadow:0 0 0 0 rgba(250,200,0,.2);box-shadow:0 0 0 0 rgba(250,200,0,.2)}.next-input.next-error{border-color:#c80000;border-color:var(--input-feedback-error-border-color,#c80000);background-color:#fff;background-color:var(--input-feedback-error-bg-color,#fff)}.next-input.next-error input,.next-input.next-error textarea{color:#333;color:var(--input-feedback-error-color,#333)}.next-input.next-error.next-focus,.next-input.next-error:hover{border-color:#c80000;border-color:var(--input-feedback-error-border-color,#c80000)}.next-input.next-error.next-focus{-webkit-box-shadow:0 0 0 0 rgba(200,0,0,.2);box-shadow:0 0 0 0 rgba(200,0,0,.2)}.next-input.next-hidden{display:none}.next-input.next-noborder{border:none;-webkit-box-shadow:none;box-shadow:none}.next-input-control .next-input-len{font-size:12px;font-size:var(--input-maxlen-font-size,12px);line-height:12px;line-height:var(--input-maxlen-font-size,12px);color:#888;color:var(--input-maxlen-color,#888);display:table-cell;width:1px;vertical-align:bottom}.next-input-control .next-input-len.next-error{color:#f8efef;color:var(--input-maxlen-error-color,#f8efef)}.next-input-control .next-input-len.next-warning{color:#fff3b4;color:var(--input-maxlen-warning-color,#fff3b4)}.next-input-control>*{display:table-cell;width:1%;top:0}.next-input-control>:not(:last-child){padding-right:4px}.next-input-control .next-icon{-webkit-transition:all .1s linear;transition:all .1s linear;color:#888;color:var(--input-hint-color,#888)}.next-input-control .next-input-warning-icon{color:#fac800;color:var(--input-feedback-warning-color,#fac800)}.next-input-control .next-input-warning-icon:before{content:"\ea21";content:var(--input-feedback-warning-icon,"")}.next-input-control .next-input-success-icon{color:#00a700;color:var(--input-feedback-success-color,#00a700)}.next-input-control .next-input-success-icon:before{content:"\ea23";content:var(--input-feedback-success-icon,"")}.next-input-control .next-input-loading-icon{color:#888;color:var(--input-feedback-loading-color,#888)}.next-input-control .next-input-loading-icon:before{content:"\e646";content:var(--input-feedback-loading-icon,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-input-control .next-input-clear-icon:before{content:"\ea22";content:var(--input-feedback-clear-icon,"")}.next-input-label{color:#555;color:var(--input-label-color,#555)}.next-input input::-moz-placeholder,.next-input textarea::-moz-placeholder{color:#666;color:var(--input-placeholder-color,#666);opacity:1}.next-input input:-ms-input-placeholder,.next-input textarea:-ms-input-placeholder{color:#666;color:var(--input-placeholder-color,#666)}.next-input input::-webkit-input-placeholder,.next-input textarea::-webkit-input-placeholder{color:#666;color:var(--input-placeholder-color,#666)}.next-input.next-disabled{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled,.next-input.next-disabled:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-input.next-disabled input,.next-input.next-disabled textarea{-webkit-text-fill-color:#b3b3b3;-webkit-text-fill-color:var(--input-disabled-color,#b3b3b3);color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled input::-moz-placeholder,.next-input.next-disabled textarea::-moz-placeholder{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);opacity:1}.next-input.next-disabled input:-ms-input-placeholder,.next-input.next-disabled textarea:-ms-input-placeholder{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled input::-webkit-input-placeholder,.next-input.next-disabled textarea::-webkit-input-placeholder{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled .next-input-hint-wrap,.next-input.next-disabled .next-input-label,.next-input.next-disabled .next-input-len{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled .next-input-hint-wrap .next-input-clear{opacity:0}.next-input.next-disabled .next-input-hint-wrap .next-input-hint{opacity:1}.next-input.next-disabled .next-input-hint-wrap .next-input-clear-icon:hover{cursor:not-allowed;color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled .next-icon{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input-control,.next-input-inner,.next-input-label{display:table-cell;width:1px;vertical-align:middle;line-height:1;background-color:transparent;white-space:nowrap}.next-input-group{display:inline-table;border-collapse:separate;border-spacing:0;line-height:0;width:100%}.next-input-group,.next-input-group *,.next-input-group :after,.next-input-group :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-input-group-auto-width{width:100%;border-radius:0!important}.next-input-group>.next-input{border-radius:0}.next-input-group>.next-input.next-focus{position:relative;z-index:1}.next-input-group>.next-input:first-child.next-small{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-small-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-small-corner,2px)!important}.next-input-group>.next-input:first-child.next-medium{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-medium-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-medium-corner,2px)!important}.next-input-group>.next-input:first-child.next-large{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-large-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-large-corner,2px)!important}.next-input-group>.next-input:last-child.next-small{border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-small-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-small-corner,2px)!important}.next-input-group>.next-input:last-child.next-medium{border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-medium-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-medium-corner,2px)!important}.next-input-group>.next-input:last-child.next-large{border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-large-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-large-corner,2px)!important}.next-input-group-addon{width:1px;display:table-cell;vertical-align:middle;white-space:nowrap}.next-input-group-addon:first-child,.next-input-group-addon:first-child>*{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group-addon:first-child>*{margin-right:-1px;margin-right:calc(0px - var(--input-border-width, 1px))}.next-input-group-addon:first-child>.next-focus{position:relative;z-index:1}.next-input-group-addon:first-child>*>.next-input{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group-addon:first-child>*>.next-input.next-focus{position:relative;z-index:1}.next-input-group-addon:last-child,.next-input-group-addon:last-child>*{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group-addon:last-child>*{margin-left:-1px;margin-left:calc(0px - var(--input-border-width, 1px))}.next-input-group-addon:last-child>*>.next-input{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group-text{color:#888;color:var(--input-addon-text-color,#888);background-color:#f8f8f9;background-color:var(--input-addon-bg-color,#f8f8f9);text-align:center;border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);padding:0 8px;padding:0 var(--input-addon-padding,8px)}.next-input-group-text:first-child{border-right-width:0}.next-input-group-text:last-child{border-left-width:0}.next-input-group-text.next-disabled{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);cursor:not-allowed}.next-input-group-text.next-disabled,.next-input-group-text.next-disabled:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-input-group-text.next-small{font-size:12px;font-size:var(--form-element-small-font-size,12px);border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-input-group-text.next-medium{font-size:12px;font-size:var(--form-element-medium-font-size,12px);border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-input-group-text.next-large{font-size:14px;font-size:var(--form-element-large-font-size,14px);border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-input[dir=rtl].next-small .next-input-label{padding-left:0;padding-right:8px;padding-right:var(--input-s-label-padding-left,8px)}.next-input[dir=rtl].next-small .next-input-control{padding-right:0;padding-left:4px;padding-left:var(--input-s-icon-padding-right,4px)}.next-input[dir=rtl].next-medium .next-input-label{padding-left:0;padding-right:16px;padding-right:var(--input-m-label-padding-left,16px)}.next-input[dir=rtl].next-medium .next-input-control{padding-right:0;padding-left:8px;padding-left:var(--input-m-icon-padding-right,8px)}.next-input[dir=rtl].next-large .next-input-label{padding-left:0;padding-right:16px;padding-right:var(--input-l-label-padding-left,16px)}.next-input[dir=rtl].next-large .next-input-control{padding-right:0;padding-left:12px;padding-left:var(--input-l-icon-padding-right,12px)}.next-input[dir=rtl].next-input-textarea .next-input-len{text-align:left}.next-input[dir=rtl] .next-input-control>:not(:last-child){padding-left:4px;padding-right:0}.next-input-group[dir=rtl]>.next-input:first-child.next-small{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-small-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-small-corner,2px)!important}.next-input-group[dir=rtl]>.next-input:first-child.next-medium{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-medium-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-medium-corner,2px)!important}.next-input-group[dir=rtl]>.next-input:first-child.next-large{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-large-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-large-corner,2px)!important}.next-input-group[dir=rtl]>.next-input:last-child.next-small{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-small-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-small-corner,2px)!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.next-input-group[dir=rtl]>.next-input:last-child.next-medium{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-medium-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-medium-corner,2px)!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.next-input-group[dir=rtl]>.next-input:last-child.next-large{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-large-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-large-corner,2px)!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child.next-small,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input.next-small,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input.next-small{border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-small-corner,2px)!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-small-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input.next-medium{border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-medium-corner,2px)!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-medium-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child.next-large,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input.next-large,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input.next-large{border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-large-corner,2px)!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-large-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child>*{margin-left:-1px;margin-left:calc(0px - var(--input-border-width, 1px));border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child.next-small,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input.next-small,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input.next-small{border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-small-corner,2px)!important;border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-small-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input.next-medium{border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-medium-corner,2px)!important;border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-medium-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child.next-large,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input.next-large,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input.next-large{border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-large-corner,2px)!important;border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-large-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child>*{margin-right:-1px;margin-right:calc(0px - var(--input-border-width, 1px));border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group[dir=rtl] .next-input-group-text:first-child{border-right-width:1px;border-right-width:var(--input-border-width,1px);border-left:0}.next-input-group[dir=rtl] .next-input-group-text:last-child{border-left-width:1px;border-left-width:var(--input-border-width,1px);border-right:0}.next-calendar,.next-calendar *,.next-calendar :after,.next-calendar :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-calendar table{border-collapse:collapse;border-spacing:0}.next-calendar td,.next-calendar th{padding:0}@-webkit-keyframes cellZoomIn{0%{-webkit-transform:scale(.5);transform:scale(.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes cellZoomIn{0%{-webkit-transform:scale(.5);transform:scale(.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes cellHover{0%{opacity:0}to{opacity:1}}@keyframes cellHover{0%{opacity:0}to{opacity:1}}@-webkit-keyframes enterToLeft{0%{-webkit-transform:translate(-40%);transform:translate(-40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}@keyframes enterToLeft{0%{-webkit-transform:translate(-40%);transform:translate(-40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes enterToRight{0%{-webkit-transform:translate(40%);transform:translate(40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}@keyframes enterToRight{0%{-webkit-transform:translate(40%);transform:translate(40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}.next-calendar-card .next-calendar-header,.next-calendar-fullscreen .next-calendar-header{text-align:right}.next-calendar-card .next-calendar-header .next-select,.next-calendar-fullscreen .next-calendar-header .next-select{margin-right:4px;vertical-align:top}.next-calendar-card .next-calendar-header .next-menu,.next-calendar-fullscreen .next-calendar-header .next-menu{text-align:left}.next-calendar-fullscreen .next-calendar-header{margin-bottom:8px;margin-bottom:var(--calendar-fullscreen-header-margin-bottom,8px)}.next-calendar-card .next-calendar-header{margin-bottom:8px;margin-bottom:var(--calendar-card-header-margin-bottom,8px)}.next-calendar-panel-header{position:relative;background:transparent;background:var(--calendar-panel-header-background,transparent);margin-bottom:16px;margin-bottom:var(--calendar-panel-header-margin-bottom,16px);border-bottom:1px solid transparent;border-bottom:var(--calendar-panel-header-border-bottom-width,1px) solid var(--calendar-panel-header-border-bottom-color,transparent)}.next-calendar-panel-header-full,.next-calendar-panel-header-left,.next-calendar-panel-header-right{height:32px;height:var(--calendar-panel-header-height,32px);line-height:32px;line-height:var(--calendar-panel-header-height,32px)}.next-calendar-panel-header-full .next-calendar-btn,.next-calendar-panel-header-left .next-calendar-btn,.next-calendar-panel-header-right .next-calendar-btn{vertical-align:top;font-weight:500;font-weight:var(--calendar-btn-date-font-weight,500);margin:0 4px;margin:0 var(--calendar-btn-date-margin-lr,4px);background:transparent;border-color:transparent}.next-calendar-panel-header-full .next-calendar-btn,.next-calendar-panel-header-full .next-calendar-btn.visited,.next-calendar-panel-header-full .next-calendar-btn:link,.next-calendar-panel-header-full .next-calendar-btn:visited,.next-calendar-panel-header-left .next-calendar-btn,.next-calendar-panel-header-left .next-calendar-btn.visited,.next-calendar-panel-header-left .next-calendar-btn:link,.next-calendar-panel-header-left .next-calendar-btn:visited,.next-calendar-panel-header-right .next-calendar-btn,.next-calendar-panel-header-right .next-calendar-btn.visited,.next-calendar-panel-header-right .next-calendar-btn:link,.next-calendar-panel-header-right .next-calendar-btn:visited{color:#333;color:var(--calendar-btn-date-color,#333)}.next-calendar-panel-header-full .next-calendar-btn.active,.next-calendar-panel-header-full .next-calendar-btn.hover,.next-calendar-panel-header-full .next-calendar-btn:active,.next-calendar-panel-header-full .next-calendar-btn:focus,.next-calendar-panel-header-full .next-calendar-btn:hover,.next-calendar-panel-header-left .next-calendar-btn.active,.next-calendar-panel-header-left .next-calendar-btn.hover,.next-calendar-panel-header-left .next-calendar-btn:active,.next-calendar-panel-header-left .next-calendar-btn:focus,.next-calendar-panel-header-left .next-calendar-btn:hover,.next-calendar-panel-header-right .next-calendar-btn.active,.next-calendar-panel-header-right .next-calendar-btn.hover,.next-calendar-panel-header-right .next-calendar-btn:active,.next-calendar-panel-header-right .next-calendar-btn:focus,.next-calendar-panel-header-right .next-calendar-btn:hover{color:#0064c8;color:var(--calendar-btn-date-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-calendar-panel-header-left,.next-calendar-panel-header-right{display:inline-block;width:50%;text-align:center}.next-calendar-panel-header-full{width:100%;text-align:center}.next-calendar-panel-menu{max-height:210px;overflow:auto;text-align:left}.next-calendar-btn{cursor:pointer;padding:0;margin:0;border:0;background:transparent;outline:none;height:100%}.next-calendar-btn>.next-icon.next-icon .next-icon-remote,.next-calendar-btn>.next-icon.next-icon:before{width:12px;width:var(--calendar-btn-arrow-size,12px);font-size:12px;font-size:var(--calendar-btn-arrow-size,12px);line-height:inherit}.next-calendar-btn .next-icon{margin-left:4px}.next-calendar-btn-next-decade,.next-calendar-btn-next-month,.next-calendar-btn-next-year,.next-calendar-btn-prev-decade,.next-calendar-btn-prev-month,.next-calendar-btn-prev-year{position:absolute;top:0;background:transparent;border-color:transparent}.next-calendar-btn-next-decade,.next-calendar-btn-next-decade.visited,.next-calendar-btn-next-decade:link,.next-calendar-btn-next-decade:visited,.next-calendar-btn-next-month,.next-calendar-btn-next-month.visited,.next-calendar-btn-next-month:link,.next-calendar-btn-next-month:visited,.next-calendar-btn-next-year,.next-calendar-btn-next-year.visited,.next-calendar-btn-next-year:link,.next-calendar-btn-next-year:visited,.next-calendar-btn-prev-decade,.next-calendar-btn-prev-decade.visited,.next-calendar-btn-prev-decade:link,.next-calendar-btn-prev-decade:visited,.next-calendar-btn-prev-month,.next-calendar-btn-prev-month.visited,.next-calendar-btn-prev-month:link,.next-calendar-btn-prev-month:visited,.next-calendar-btn-prev-year,.next-calendar-btn-prev-year.visited,.next-calendar-btn-prev-year:link,.next-calendar-btn-prev-year:visited{color:#333;color:var(--calendar-btn-arrow-color,#333)}.next-calendar-btn-next-decade.active,.next-calendar-btn-next-decade.hover,.next-calendar-btn-next-decade:active,.next-calendar-btn-next-decade:focus,.next-calendar-btn-next-decade:hover,.next-calendar-btn-next-month.active,.next-calendar-btn-next-month.hover,.next-calendar-btn-next-month:active,.next-calendar-btn-next-month:focus,.next-calendar-btn-next-month:hover,.next-calendar-btn-next-year.active,.next-calendar-btn-next-year.hover,.next-calendar-btn-next-year:active,.next-calendar-btn-next-year:focus,.next-calendar-btn-next-year:hover,.next-calendar-btn-prev-decade.active,.next-calendar-btn-prev-decade.hover,.next-calendar-btn-prev-decade:active,.next-calendar-btn-prev-decade:focus,.next-calendar-btn-prev-decade:hover,.next-calendar-btn-prev-month.active,.next-calendar-btn-prev-month.hover,.next-calendar-btn-prev-month:active,.next-calendar-btn-prev-month:focus,.next-calendar-btn-prev-month:hover,.next-calendar-btn-prev-year.active,.next-calendar-btn-prev-year.hover,.next-calendar-btn-prev-year:active,.next-calendar-btn-prev-year:focus,.next-calendar-btn-prev-year:hover{color:#0064c8;color:var(--calendar-btn-arrow-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-calendar-btn-prev-decade,.next-calendar-btn-prev-year{left:16px;left:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar-btn-prev-month{left:36px;left:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar-btn-next-month{right:36px;right:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar-btn-next-decade,.next-calendar-btn-next-year{right:16px;right:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar-fullscreen .next-calendar-th{text-align:right;color:#888;color:var(--calendar-fullscreen-table-head-color,#888);font-size:14px;font-size:var(--calendar-fullscreen-table-head-font-size,14px);font-weight:700;font-weight:var(--calendar-fullscreen-table-head-font-weight,bold);padding-right:12px;padding-right:var(--calendar-fullscreen-table-head-padding-r,12px);padding-bottom:4px;padding-bottom:var(--calendar-fullscreen-table-head-padding-b,4px)}.next-calendar-fullscreen .next-calendar-cell{font-size:14px;font-size:var(--calendar-fullscreen-table-cell-font-size,14px)}.next-calendar-fullscreen .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell.next-selected .next-calendar-month{font-weight:700;font-weight:var(--calendar-fullscreen-table-cell-select-font-weight,bold);background:#f7f9fa;background:var(--calendar-fullscreen-table-cell-select-background,#f7f9fa);color:#0064c8;color:var(--calendar-fullscreen-table-cell-select-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-fullscreen-table-cell-select-border-color,#0064c8)}.next-calendar-fullscreen .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell.next-disabled .next-calendar-month{cursor:not-allowed;background:#f7f9fa;background:var(--calendar-fullscreen-table-cell-disabled-background,#f7f9fa);color:#c1c1c1;color:var(--calendar-fullscreen-table-cell-disabled-color,#c1c1c1);border-color:#e3e4e6;border-color:var(--calendar-fullscreen-table-cell-disabled-border-color,#e3e4e6)}.next-calendar-fullscreen .next-calendar-date,.next-calendar-fullscreen .next-calendar-month{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 4px;margin:var(--calendar-fullscreen-table-cell-margin-tb,0) var(--calendar-fullscreen-table-cell-margin-lr,4px);padding:4px 8px;padding:var(--calendar-fullscreen-table-cell-padding-tb,4px) var(--calendar-fullscreen-table-cell-padding-lr,8px);min-height:80px;min-height:var(--calendar-fullscreen-table-cell-min-height,80px);border-top:2px solid;border-top:var(--calendar-fullscreen-table-cell-boder-top-width,2px) var(--line-solid,solid);-webkit-transition:background .1s linear;transition:background .1s linear;background:#fff;background:var(--calendar-fullscreen-table-cell-normal-background,#fff);color:#b3b3b3;color:var(--calendar-fullscreen-table-cell-normal-color,#b3b3b3);border-color:#e3e4e6;border-color:var(--calendar-fullscreen-table-cell-normal-border-color,#e3e4e6)}.next-calendar-fullscreen .next-calendar-date:hover,.next-calendar-fullscreen .next-calendar-month:hover{background:#f7f9fa;background:var(--calendar-fullscreen-table-cell-hover-background,#f7f9fa);color:#0064c8;color:var(--calendar-fullscreen-table-cell-hover-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-fullscreen-table-cell-hover-border-color,#0064c8)}.next-calendar-fullscreen .next-calendar-cell-next-month .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell-prev-month .next-calendar-date{background:transparent;background:var(--calendar-fullscreen-table-cell-other-background,transparent);color:#c1c1c1;color:var(--calendar-fullscreen-table-cell-other-color,#c1c1c1);border-color:transparent;border-color:var(--calendar-fullscreen-table-cell-other-border-color,transparent)}.next-calendar-fullscreen .next-calendar-cell-current .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell-current .next-calendar-month{font-weight:700;font-weight:var(--calendar-fullscreen-table-cell-current-font-weight,bold);background:#fff;background:var(--calendar-fullscreen-table-cell-current-background,#fff);color:#0064c8;color:var(--calendar-fullscreen-table-cell-current-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-fullscreen-table-cell-current-border-color,#0064c8)}.next-calendar-card .next-calendar-th,.next-calendar-panel .next-calendar-th,.next-calendar-range .next-calendar-th{text-align:center;color:#666;color:var(--calendar-card-table-head-color,#666);font-size:12px;font-size:var(--calendar-card-table-head-font-size,12px);font-weight:400;font-weight:var(--calendar-card-table-head-font-weight,normal)}.next-calendar-card .next-calendar-cell,.next-calendar-panel .next-calendar-cell,.next-calendar-range .next-calendar-cell{text-align:center;font-size:12px;font-size:var(--calendar-card-table-cell-font-size,12px)}.next-calendar-card .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-year{-webkit-animation:cellZoomIn .4s cubic-bezier(.23,1,.32,1);animation:cellZoomIn .4s cubic-bezier(.23,1,.32,1);font-weight:400;font-weight:var(--calendar-card-table-cell-select-font-weight,normal);background:#0064c8;background:var(--calendar-card-table-cell-select-background,#0064c8);color:#fff;color:var(--calendar-card-table-cell-select-color,#fff);border-color:#0064c8;border-color:var(--calendar-card-table-cell-select-border-color,#0064c8)}.next-calendar-card .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-card .next-calendar-cell.next-disabled .next-calendar-month,.next-calendar-card .next-calendar-cell.next-disabled .next-calendar-year,.next-calendar-panel .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-disabled .next-calendar-month,.next-calendar-panel .next-calendar-cell.next-disabled .next-calendar-year,.next-calendar-range .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-range .next-calendar-cell.next-disabled .next-calendar-month,.next-calendar-range .next-calendar-cell.next-disabled .next-calendar-year{cursor:not-allowed;background:transparent;background:var(--calendar-card-table-cell-disabled-background,transparent);color:#b3b3b3;color:var(--calendar-card-table-cell-disabled-color,#b3b3b3);border-color:transparent;border-color:var(--calendar-card-table-cell-disabled-border-color,transparent)}.next-calendar-card .next-calendar-cell.next-inrange .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-inrange .next-calendar-date,.next-calendar-range .next-calendar-cell.next-inrange .next-calendar-date{background:#eff3f8;background:var(--calendar-card-table-cell-inrange-background,#eff3f8);color:#333;color:var(--calendar-card-table-cell-inrange-color,#333);border-color:transparent;border-color:var(--calendar-card-table-cell-inrange-border-color,transparent)}.next-calendar-card .next-calendar-date,.next-calendar-card .next-calendar-month,.next-calendar-card .next-calendar-year,.next-calendar-panel .next-calendar-date,.next-calendar-panel .next-calendar-month,.next-calendar-panel .next-calendar-year,.next-calendar-range .next-calendar-date,.next-calendar-range .next-calendar-month,.next-calendar-range .next-calendar-year{text-align:center;border:1px solid;border:var(--line-1,1px) var(--line-solid,solid);background:#fff;background:var(--calendar-card-table-cell-normal-background,#fff);color:#333;color:var(--calendar-card-table-cell-normal-color,#333);border-color:#fff;border-color:var(--calendar-card-table-cell-normal-border-color,#fff)}.next-calendar-card .next-calendar-date:hover,.next-calendar-card .next-calendar-month:hover,.next-calendar-card .next-calendar-year:hover,.next-calendar-panel .next-calendar-date:hover,.next-calendar-panel .next-calendar-month:hover,.next-calendar-panel .next-calendar-year:hover,.next-calendar-range .next-calendar-date:hover,.next-calendar-range .next-calendar-month:hover,.next-calendar-range .next-calendar-year:hover{cursor:pointer;background:#f7f9fa;background:var(--calendar-card-table-cell-hover-background,#f7f9fa);color:#333;color:var(--calendar-card-table-cell-hover-color,#333);border-color:transparent;border-color:var(--calendar-card-table-cell-hover-border-color,transparent)}.next-calendar-card .next-calendar-date,.next-calendar-panel .next-calendar-date,.next-calendar-range .next-calendar-date{width:24px;width:var(--calendar-card-table-cell-date-width,24px);height:24px;height:var(--calendar-card-table-cell-date-height,24px);line-height:22px;line-height:calc(var(--calendar-card-table-cell-date-height, 24px) - 2px);margin:4px auto;border-radius:2px;border-radius:var(--calendar-card-table-cell-date-border-radius,2px)}.next-calendar-card .next-calendar-month,.next-calendar-panel .next-calendar-month,.next-calendar-range .next-calendar-month{width:60px;width:var(--calendar-card-table-cell-month-width,60px);height:24px;height:var(--calendar-card-table-cell-month-height,24px);line-height:22px;line-height:calc(var(--calendar-card-table-cell-month-height, 24px) - 2px);margin:8px auto;border-radius:2px;border-radius:var(--calendar-card-table-cell-month-border-radius,2px)}.next-calendar-card .next-calendar-year,.next-calendar-panel .next-calendar-year,.next-calendar-range .next-calendar-year{width:48px;width:var(--calendar-card-table-cell-year-width,48px);height:24px;height:var(--calendar-card-table-cell-year-height,24px);line-height:22px;line-height:calc(var(--calendar-card-table-cell-year-height, 24px) - 2px);margin:8px auto;border-radius:2px;border-radius:var(--calendar-card-table-cell-year-border-radius,2px)}.next-calendar-card .next-calendar-cell-next-month .next-calendar-date,.next-calendar-card .next-calendar-cell-prev-month .next-calendar-date,.next-calendar-panel .next-calendar-cell-next-month .next-calendar-date,.next-calendar-panel .next-calendar-cell-prev-month .next-calendar-date,.next-calendar-range .next-calendar-cell-next-month .next-calendar-date,.next-calendar-range .next-calendar-cell-prev-month .next-calendar-date{background:#fff;background:var(--calendar-card-table-cell-other-background,#fff);color:#555;color:var(--calendar-card-table-cell-other-color,#555);border-color:#fff;border-color:var(--calendar-card-table-cell-other-border-color,#fff)}.next-calendar-card .next-calendar-cell-current .next-calendar-date,.next-calendar-card .next-calendar-cell-current .next-calendar-month,.next-calendar-card .next-calendar-cell-current .next-calendar-year,.next-calendar-panel .next-calendar-cell-current .next-calendar-date,.next-calendar-panel .next-calendar-cell-current .next-calendar-month,.next-calendar-panel .next-calendar-cell-current .next-calendar-year,.next-calendar-range .next-calendar-cell-current .next-calendar-date,.next-calendar-range .next-calendar-cell-current .next-calendar-month,.next-calendar-range .next-calendar-cell-current .next-calendar-year{font-weight:400;font-weight:var(--calendar-card-table-cell-current-font-weight,normal);background:#fff;background:var(--calendar-card-table-cell-current-background,#fff);color:#0064c8;color:var(--calendar-card-table-cell-current-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-card-table-cell-current-border-color,#0064c8)}.next-calendar-panel.next-calendar-week .next-calendar-tbody tr{cursor:pointer}.next-calendar-panel.next-calendar-week .next-calendar-tbody tr:hover .next-calendar-cell .next-calendar-date{background:#f7f9fa;background:var(--calendar-card-table-cell-hover-background,#f7f9fa);color:#333;color:var(--calendar-card-table-cell-hover-color,#333);border-color:transparent;border-color:var(--calendar-card-table-cell-hover-border-color,transparent)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-cell.next-selected .next-calendar-date{font-weight:400;background:transparent;border-color:transparent}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-date{position:relative;color:#333;color:var(--calendar-card-table-cell-inrange-color,#333)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-date:before{content:"";position:absolute;left:-1px;left:calc(0px - var(--line-1, 1px));top:-1px;top:calc(0px - var(--line-1, 1px));bottom:-1px;bottom:calc(0px - var(--line-1, 1px));right:-1px;right:calc(0px - var(--line-1, 1px));border:1px solid;border:var(--line-1,1px) var(--line-solid,solid);background:#eff3f8;background:var(--calendar-card-table-cell-inrange-background,#eff3f8);border-color:transparent;border-color:var(--calendar-card-table-cell-inrange-border-color,transparent);border-radius:2px;border-radius:var(--calendar-card-table-cell-date-border-radius,2px)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-date>span{position:relative}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-end,.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-start{color:#fff;color:var(--calendar-card-table-cell-select-color,#fff)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-end:before,.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-start:before{background:#0064c8;background:var(--calendar-card-table-cell-select-background,#0064c8);border-color:#0064c8;border-color:var(--calendar-card-table-cell-select-border-color,#0064c8)}.next-calendar[dir=rtl] .next-calendar-header{text-align:left}.next-calendar[dir=rtl] .next-calendar-header .next-select{margin-right:0;margin-left:4px}.next-calendar[dir=rtl] .next-calendar-header .next-menu{text-align:right}.next-calendar[dir=rtl] .next-calendar-btn-prev-decade,.next-calendar[dir=rtl] .next-calendar-btn-prev-year{left:auto;right:16px;right:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar[dir=rtl] .next-calendar-btn-prev-month{left:auto;right:36px;right:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar[dir=rtl] .next-calendar-btn-next-month{right:auto;left:36px;left:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar[dir=rtl] .next-calendar-btn-next-decade,.next-calendar[dir=rtl] .next-calendar-btn-next-year{right:auto;left:16px;left:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar-fullscreen[dir=rtl] .next-calendar-th{text-align:left;padding-left:12px;padding-left:var(--calendar-fullscreen-table-head-padding-r,12px);padding-right:0}.next-calendar-fullscreen[dir=rtl] .next-calendar-date,.next-calendar-fullscreen[dir=rtl] .next-calendar-month{text-align:left}.next-calendar-range[dir=rtl] .next-calendar-body-left,.next-calendar-range[dir=rtl] .next-calendar-body-right{float:right}.next-calendar-range[dir=rtl] .next-calendar-body-left{padding-right:0;padding-left:8px}.next-calendar-range[dir=rtl] .next-calendar-body-right{padding-left:0;padding-right:8px}.next-calendar-table{width:100%;table-layout:fixed}.next-calendar-range .next-calendar-body-left,.next-calendar-range .next-calendar-body-right{float:left;width:50%}.next-calendar-range .next-calendar-body-left{padding-right:8px}.next-calendar-range .next-calendar-body-right{padding-left:8px}.next-calendar-range .next-calendar-body:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-calendar-symbol-prev:before{content:"\ea2c";content:var(--calendar-btn-arrow-content-prev,"")}.next-calendar-symbol-next:before{content:"\ea29";content:var(--calendar-btn-arrow-content-next,"")}.next-calendar-symbol-prev-super:before{content:"\ea2b";content:var(--calendar-btn-arrow-content-prev-super,"")}.next-calendar-symbol-next-super:before{content:"\ea28";content:var(--calendar-btn-arrow-content-next-super,"")}.next-card,.next-card:after,.next-card:before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-card[dir=rtl] .next-card-extra{left:0;right:auto}.next-card[dir=rtl] .next-card-title:before{right:0;left:auto}.next-card[dir=rtl] .next-card-subtitle{float:left;padding-right:8px;padding-right:var(--card-sub-title-padding-left,8px);padding-left:0}.next-card[dir=rtl] .next-card-head-show-bullet .next-card-title{padding-left:0;padding-right:8px;padding-right:var(--card-title-padding-left,8px)}.next-card,.next-card *,.next-card :after,.next-card :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-card{min-width:100px;border:1px solid #e3e4e6;border:var(--card-border-width,1px) var(--card-border-style,solid) var(--card-border-color,#e3e4e6);border-radius:4px;border-radius:var(--card-corner,4px);-webkit-box-shadow:none;-webkit-box-shadow:var(--card-shadow,none);box-shadow:none;box-shadow:var(--card-shadow,none);background:#fff;background:var(--card-background,#fff);overflow:hidden}.next-card-noborder{border:0}.next-card-head{background:#fff;background:var(--card-header-background,#fff);padding-left:16px;padding-left:var(--card-padding-lr,16px);padding-right:16px;padding-right:var(--card-padding-lr,16px)}.next-card-head-show-bullet .next-card-title{padding-left:8px;padding-left:var(--card-title-padding-left,8px)}.next-card-head-show-bullet .next-card-title:before{content:"";display:inline-block;height:16px;height:var(--card-title-bullet-height,16px);width:3px;width:var(--card-title-bullet-width,3px);background:#0064c8;background:var(--card-title-bullet-color,#0064c8);position:absolute;left:0;top:calc(50% - 8px);top:calc(50% - var(--card-title-bullet-height, 16px)/2)}.next-card-head-main{position:relative;margin-top:4px;margin-top:var(--card-head-main-margin-top,4px);margin-bottom:4px;margin-bottom:var(--card-head-main-margin-bottom,4px);height:48px;height:var(--card-head-main-height,48px);line-height:48px;line-height:var(--card-head-main-height,48px)}.next-card-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80%;height:100%;color:#333;color:var(--card-title-color,#333);font-size:14px;font-size:var(--card-title-font-size,14px);font-weight:500;font-weight:var(--card-title-font-weight,500)}.next-card-subtitle{font-size:12px;font-size:var(--card-sub-title-font-size,12px);color:#555;color:var(--card-sub-title-color,#555);padding-left:8px;padding-left:var(--card-sub-title-padding-left,8px)}.next-card-extra{position:absolute;right:0;top:0;height:100%;font-size:12px;font-size:var(--card-title-extra-font-size,12px);color:#0064c8;color:var(--card-title-extra-color,#0064c8)}.next-card-body{padding-bottom:16px;padding-bottom:var(--card-body-padding-bottom,16px);padding-left:16px;padding-left:var(--card-padding-lr,16px);padding-right:16px;padding-right:var(--card-padding-lr,16px)}.next-card-show-divider .next-card-head-main{border-bottom:1px solid transparent;border-bottom:var(--card-head-bottom-border-width,1px) var(--card-border-style,solid) var(--card-head-bottom-border-color,transparent)}.next-card-show-divider .next-card-body{padding-top:16px;padding-top:var(--card-body-show-divider-padding-top,16px)}.next-card-hide-divider .next-card-body{padding-top:0;padding-top:var(--card-body-hide-divider-padding-top,0)}.next-card—free{padding:0}.next-card-content{overflow:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;position:relative}.next-card-footer .next-icon{-webkit-transition:all .1s linear;transition:all .1s linear}.next-card-footer .next-icon.next-icon-arrow-down.expand{-webkit-transform-origin:50% 47%;-ms-transform-origin:50% 47%;transform-origin:50% 47%;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-card-header{background:#fff;background:var(--card-header-background,#fff);padding:0 16px;padding:0 var(--card-padding-lr,16px);margin-bottom:16px;margin-bottom:var(--card-body-show-divider-padding-top,16px);margin-top:16px;margin-top:var(--card-body-padding-bottom,16px)}.next-card-media,.next-card-media>*{display:block;background-size:cover;background-repeat:no-repeat;background-position:50%;-o-object-fit:cover;object-fit:cover;width:100%}.next-card-header-titles{overflow:hidden}.next-card-header-extra{float:right;text-align:right}.next-card-header-extra .next--btn{margin-left:12px;vertical-align:middle}.next-card-header-title{color:#333;color:var(--card-title-color,#333);font-size:14px;font-size:var(--card-title-font-size,14px);font-weight:500;font-weight:var(--card-title-font-weight,500);line-height:1.5}.next-card-header-subtitle{font-size:12px;font-size:var(--card-sub-title-font-size,12px);color:#555;color:var(--card-sub-title-color,#555)}.next-card-actions{display:block;padding:16px;padding:var(--card-body-show-divider-padding-top,16px) var(--card-padding-lr,16px) var(--card-body-padding-bottom,16px)}.next-card-actions .next-btn:not(:last-child){margin-right:12px;vertical-align:middle}.next-card-divider{border-style:none;width:100%;margin:0;position:relative;overflow:visible}.next-card-divider:before{content:"";display:block;border-bottom:1px solid transparent;border-bottom:var(--card-head-bottom-border-width,1px) var(--card-border-style,solid) var(--card-head-bottom-border-color,transparent)}.next-card-divider--inset{padding:0 16px;padding:0 var(--card-padding-lr,16px)}.next-card-content-container{margin-top:16px;margin-top:var(--card-body-show-divider-padding-top,16px);padding-bottom:16px;padding-bottom:var(--card-body-padding-bottom,16px);padding-left:16px;padding-left:var(--card-padding-lr,16px);padding-right:16px;padding-right:var(--card-padding-lr,16px);font-size:12px;font-size:var(--card-content-font-size,12px);line-height:1.5;line-height:var(--card-content-line-height,1.5);color:#555;color:var(--card-content-color,#555)}.next-cascader{display:inline-block;overflow:auto;border:1px solid #e3e4e6;border:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6);border-radius:2px;border-radius:var(--cascader-menu-border-radius,2px)}.next-cascader,.next-cascader *,.next-cascader :after,.next-cascader :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-cascader-inner:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-cascader-menu-wrapper{float:left;overflow:auto;width:auto;width:var(--cascader-menu-width,auto);min-width:100px;min-width:var(--cascader-menu-min-width,100px);height:192px;height:var(--cascader-menu-height,192px);overflow-x:hidden;overflow-y:auto}.next-cascader-menu-wrapper+.next-cascader-menu-wrapper{border-left:1px solid #e3e4e6;border-left:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader-menu{position:relative;padding:0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;min-width:auto;min-height:100%}.next-cascader-menu.next-has-right-border{border-right:1px solid #e3e4e6;border-right:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader-menu-item.next-expanded{color:#333;color:var(--cascader-menu-item-expanded-color,#333);background-color:#f7f9fa;background-color:var(--cascader-menu-item-expanded-background-color,#f7f9fa)}.next-cascader-menu-icon-right{position:absolute;top:0;right:10px;color:#333;color:var(--cascader-menu-icon-expand-color,#333)}.next-cascader-menu-icon-right:hover{color:#333;color:var(--cascader-menu-icon-hover-expand-color,#333)}.next-cascader-menu-icon-expand.next-icon .next-icon-remote,.next-cascader-menu-icon-expand.next-icon:before{width:8px;width:var(--cascader-menu-icon-expand-size,8px);font-size:8px;font-size:var(--cascader-menu-icon-expand-size,8px);line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-cascader-menu-icon-expand.next-icon{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-left:calc(-8px + var(--cascader-menu-icon-expand-size, 8px)/2);margin-right:-4px;margin-right:calc(-8px + var(--cascader-menu-icon-expand-size, 8px)/2)}.next-cascader-menu-icon-expand.next-icon:before{width:16px;font-size:16px}}.next-cascader-menu-icon-loading.next-icon .next-icon-remote,.next-cascader-menu-icon-loading.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-cascader-menu-item.next-expanded .next-cascader-menu-icon-right{color:#333;color:var(--cascader-menu-icon-hover-expand-color,#333)}.next-cascader-menu-item.next-expanded .next-cascader-menu-icon-loading{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-cascader-filtered-list{height:192px;padding:0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;overflow:auto}.next-cascader-filtered-list .next-menu-item-inner{overflow:visible}.next-cascader-filtered-item em{color:#0064c8;color:var(--color-brand1-6,#0064c8);font-style:normal}.next-cascader[dir=rtl] .next-cascader-menu-wrapper{float:right;border-left:none;border-right:1px solid #e3e4e6;border-right:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader[dir=rtl] .next-cascader-menu-wrapper:first-child{border-right:none}.next-cascader[dir=rtl] .next-cascader-menu.next-has-right-border{border-right:none;border-left:1px solid #e3e4e6;border-left:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader[dir=rtl] .next-cascader-menu-icon-right{right:auto;left:10px}.next-cascader-select,.next-cascader-select *,.next-cascader-select-dropdown,.next-cascader-select :after,.next-cascader-select :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-cascader-select-dropdown{border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-cascader-select-dropdown *,.next-cascader-select-dropdown :after,.next-cascader-select-dropdown :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-cascader-select-dropdown .next-cascader{display:block;border:none;-webkit-box-shadow:none;box-shadow:none}.next-cascader-select-not-found{padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;overflow:auto;color:#888;color:var(--color-text1-2,#888)}.next-cascader-select-not-found .next-menu-item:hover{color:#888;color:var(--color-text1-2,#888);background:#fff;cursor:default}.next-checkbox-wrapper[dir=rtl]{margin-right:8px;margin-left:0}.next-checkbox-wrapper[dir=rtl]:first-child{margin-right:0}.next-checkbox-wrapper[dir=rtl]>.next-checkbox-label{margin-right:8px;margin-right:var(--checkbox-margin-left,8px);margin-left:0}.next-checkbox-wrapper{display:inline-block}.next-checkbox-wrapper,.next-checkbox-wrapper *,.next-checkbox-wrapper :after,.next-checkbox-wrapper :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-checkbox-wrapper .next-checkbox{display:inline-block;position:relative;line-height:1;vertical-align:middle}.next-checkbox-wrapper input[type=checkbox]{opacity:0;position:absolute;top:0;left:0;width:16px;width:var(--checkbox-size,16px);height:16px;height:var(--checkbox-size,16px);margin:0;cursor:pointer}.next-checkbox-wrapper .next-checkbox-inner{display:block;width:16px;width:var(--checkbox-size,16px);height:16px;height:var(--checkbox-size,16px);background:#fff;background:var(--checkbox-bg-color,#fff);border-radius:2px;border-radius:var(--checkbox-border-radius,2px);border:1px solid #577899;border:var(--checkbox-border-width,1px) solid var(--checkbox-border-color,#577899);-webkit-transition:all .1s linear;transition:all .1s linear;text-align:left;-webkit-box-shadow:none;-webkit-box-shadow:var(--checkbox-shadow,none);box-shadow:none;box-shadow:var(--checkbox-shadow,none)}.next-checkbox-wrapper .next-checkbox-inner>.next-icon{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);position:absolute;top:0;opacity:0;line-height:16px;line-height:var(--checkbox-size,16px);-webkit-transition:all .1s linear;transition:all .1s linear;color:#fff;color:var(--checkbox-checked-circle-color,#fff);left:2px;left:calc(var(--checkbox-size, 16px)/2 - var(--checkbox-circle-size, 12px)/2);margin-top:1px;margin-left:0}.next-checkbox-wrapper .next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper .next-checkbox-inner>.next-icon:before{width:12px;width:var(--checkbox-circle-size,12px);font-size:12px;font-size:var(--checkbox-circle-size,12px);line-height:inherit}.next-checkbox-wrapper .next-checkbox-inner>.next-icon:before{vertical-align:top;margin-top:0}.next-checkbox-wrapper .next-checkbox-inner>.next-checkbox-select-icon:before{content:"\ea1e";content:var(--checkbox-select-icon-content,"")}.next-checkbox-wrapper .next-checkbox-inner>.next-checkbox-semi-select-icon:before{content:"\e8ae";content:var(--checkbox-semi-select-icon-content,"")}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080);background-color:#0064c8;background-color:var(--checkbox-checked-bg-color,#0064c8)}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner:hover,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner:hover{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080)}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner>.next-icon,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner>.next-icon{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner>.next-icon:before,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner>.next-icon:before{width:12px;width:var(--checkbox-circle-size,12px);font-size:12px;font-size:var(--checkbox-circle-size,12px);line-height:inherit}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080);background-color:#0064c8;background-color:var(--checkbox-checked-bg-color,#0064c8)}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner:hover,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner:hover{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080)}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner>.next-icon,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner>.next-icon{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1);margin-left:0}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner>.next-icon:before,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner>.next-icon:before{width:12px;width:var(--checkbox-circle-size,12px);font-size:12px;font-size:var(--checkbox-circle-size,12px);line-height:inherit}.next-checkbox-wrapper.focused>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper.hovered>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper:not(.disabled):hover>.next-checkbox>.next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-hovered-border-color,#004080);background-color:transparent;background-color:var(--checkbox-hovered-bg-color,transparent)}.next-checkbox-wrapper.focused .next-checkbox-label,.next-checkbox-wrapper.hovered .next-checkbox-label,.next-checkbox-wrapper:not(.disabled):hover .next-checkbox-label{cursor:pointer}.next-checkbox-wrapper.checked:not(.disabled).hovered>.next-checkbox .next-checkbox-inner,.next-checkbox-wrapper.checked:not(.disabled):hover>.next-checkbox .next-checkbox-inner,.next-checkbox-wrapper.indeterminate:not(.disabled).hovered>.next-checkbox .next-checkbox-inner,.next-checkbox-wrapper.indeterminate:not(.disabled):hover>.next-checkbox .next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-checked-hovered-border-color,#004080);background-color:#0064c8;background-color:var(--checkbox-checked-hovered-bg-color,#0064c8)}.next-checkbox-wrapper.checked:not(.disabled).hovered>.next-checkbox .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.checked:not(.disabled):hover>.next-checkbox .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.indeterminate:not(.disabled).hovered>.next-checkbox .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.indeterminate:not(.disabled):hover>.next-checkbox .next-checkbox-inner>.next-icon{color:#fff;color:var(--checkbox-checked-hovered-circle-color,#fff);opacity:1}.next-checkbox-wrapper.disabled input[type=checkbox]{cursor:not-allowed}.next-checkbox-wrapper.disabled.checked .next-checkbox-inner,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner,.next-checkbox-wrapper.disabled .next-checkbox-inner{border-color:#c0c6cc;border-color:var(--checkbox-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--checkbox-disabled-bg-color,#f7f9fa)}.next-checkbox-wrapper.disabled.checked .next-checkbox-inner.hovered,.next-checkbox-wrapper.disabled.checked .next-checkbox-inner:hover,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner.hovered,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner:hover{border-color:#c0c6cc;border-color:var(--checkbox-disabled-border-color,#c0c6cc)}.next-checkbox-wrapper.disabled.checked .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner>.next-icon{color:#555;color:var(--checkbox-disabled-circle-color,#555);opacity:1}.next-checkbox-wrapper.disabled.checked.focused .next-checkbox-inner{border-color:#c0c6cc;border-color:var(--checkbox-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--checkbox-disabled-bg-color,#f7f9fa)}.next-checkbox-wrapper.disabled.checked.focused .next-checkbox-inner>.next-icon{color:#555;color:var(--checkbox-disabled-circle-color,#555);opacity:1}.next-checkbox-wrapper.disabled .next-checkbox-label{color:#b3b3b3;color:var(--checkbox-disabled-label-color,#b3b3b3);cursor:not-allowed}.next-checkbox-group .next-checkbox-wrapper{display:inline-block;margin-right:12px}.next-checkbox-group .next-checkbox-wrapper:last-child{margin-right:0}.next-checkbox-group-ver .next-checkbox-wrapper{display:block;margin-left:0;margin-right:0;margin-bottom:8px}.next-checkbox-label{font-size:12px;font-size:var(--checkbox-font-size,12px);color:#333;color:var(--checkbox-label-color,#333);vertical-align:middle;margin:0 0 0 8px;margin-left:var(--checkbox-margin-left,8px);margin-right:8px;margin-right:var(--checkbox-margin-left,8px);line-height:1}.next-collapse[dir=rtl] .next-collapse-panel-title{padding:16px 36px 16px 0;padding:var(--collapse-title-padding-tb,16px) 36px var(--collapse-title-padding-tb,16px) 0}.next-collapse[dir=rtl] .next-collapse-panel-icon{left:inherit;right:16px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);margin-left:0;margin-right:0}.next-collapse[dir=rtl] .next-collapse-panel-icon .next-icon-remote,.next-collapse[dir=rtl] .next-collapse-panel-icon:before{width:12px;font-size:12px;line-height:inherit}.next-collapse{border:1px solid #e3e4e6;border:var(--collapse-border-width,1px) solid var(--collapse-border-color,#e3e4e6);border-radius:2px;border-radius:var(--collapse-border-corner,2px)}.next-collapse,.next-collapse *,.next-collapse :after,.next-collapse :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-collapse:focus,.next-collapse :focus{outline:0}.next-collapse-panel:not(:first-child){border-top:1px solid #e3e4e6;border-top:var(--collapse-title-border-width,1px) solid var(--collapse-panel-border-color,#e3e4e6)}.next-collapse .next-collapse-panel-icon{position:absolute;color:#333;color:var(--collapse-icon-color,#333);-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;left:16px;margin-top:-2px;margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon .next-icon-remote,.next-collapse .next-collapse-panel-icon:before{width:12px;font-size:12px;line-height:inherit}.next-collapse-panel-title{position:relative;line-height:20px;line-height:var(--collapse-title-height,20px);background:#f7f9fa;background:var(--collapse-title-bg-color,#f7f9fa);font-size:12px;font-size:var(--collapse-title-font-size,12px);font-weight:400;font-weight:var(--collapse-title-font-weight,normal);color:#333;color:var(--collapse-title-font-color,#333);cursor:pointer;padding:16px 0 16px 36px;padding:var(--collapse-title-padding-tb,16px) 0 var(--collapse-title-padding-tb,16px) 36px;-webkit-transition:background .1s linear;transition:background .1s linear}.next-collapse-panel-title:hover{background:#eff3f8;background:var(--collapse-title-hover-bg-color,#eff3f8);color:#333;color:var(--collapse-title-hover-font-color,#333);font-weight:400;font-weight:var(--collapse-title-hover-font-weight,normal)}.next-collapse-panel-title:hover .next-collapse-panel-icon{color:#333;color:var(--collapse-icon-hover-color,#333)}.next-collapse-panel-content{height:0;padding:0 16px;padding:0 var(--collapse-content-padding-x,16px);background:#fff;background:var(--collapse-content-bg-color,#fff);font-size:12px;font-size:var(--collapse-content-font-size,12px);color:#333;color:var(--collapse-content-color,#333);-webkit-transition:all .3s ease;transition:all .3s ease;opacity:0}.next-collapse-panel-expanded>.next-collapse-panel-content{display:block;padding:16px;padding:var(--collapse-content-padding-y,16px) var(--collapse-content-padding-x,16px);height:auto;opacity:1}.next-collapse .next-collapse-unfold-icon:before{content:"";content:var(--collapse-unfold-icon-content,"")}.next-collapse-panel-hidden>.next-collapse-panel-content{overflow:hidden}.next-collapse .next-collapse-panel-icon:before{content:"\e98e";content:var(--collapse-fold-icon-content,"")}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded .next-icon-remote,.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded:before{width:12px;font-size:12px;line-height:inherit}.next-collapse-disabled,.next-collapse-panel-disabled:not(:first-child){border-color:#e3e4e6;border-color:var(--collapse-disabled-border-color,#e3e4e6)}.next-collapse-panel-disabled>.next-collapse-panel-title{cursor:not-allowed;background:#f7f9fa;background:var(--collapse-title-disabled-bg-color,#f7f9fa)}.next-collapse-panel-disabled .next-collapse-panel-icon,.next-collapse-panel-disabled>.next-collapse-panel-title{color:#b3b3b3;color:var(--collapse-title-font-disabled-color,#b3b3b3)}.next-collapse-panel-disabled .next-collapse-panel-title:hover{font-weight:400;font-weight:var(--collapse-title-font-weight,normal)}.next-collapse-panel-disabled .next-collapse-panel-title:hover .next-collapse-panel-icon,.next-collapse-panel-disabled:hover{color:#b3b3b3;color:var(--collapse-title-font-disabled-color,#b3b3b3)}.next-collapse-panel-disabled:hover{background:#f7f9fa;background:var(--collapse-title-disabled-bg-color,#f7f9fa)}.next-time-picker-menu{float:left;text-align:center}.next-time-picker-menu:not(:last-child){border-right:1px solid #c0c6cc;border-right:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-time-picker-menu-title{cursor:default;height:36px;height:var(--time-picker-menu-title-height,36px);line-height:36px;line-height:var(--time-picker-menu-title-height,36px);font-size:12px;font-size:var(--time-picker-menu-title-font-size,12px);font-weight:400;font-weight:var(--time-pikcer-menu-title-font-weight,normal);color:#333;color:var(--time-picker-menu-title-color,#333);background:#fff;background:var(--time-picker-menu-title-background,#fff)}.next-time-picker-menu ul{position:relative;overflow-y:auto;list-style:none;margin:0;padding:0;font-size:12px;font-size:var(--time-picker-menu-item-font-size,12px);height:224px;height:calc(var(--time-picker-menu-item-height, 32px)*7)}.next-time-picker-menu-item{cursor:pointer;height:32px;height:var(--time-picker-menu-item-height,32px);line-height:32px;line-height:var(--time-picker-menu-item-height,32px);-webkit-transition:background .1s linear;transition:background .1s linear;color:#333;color:var(--time-picker-menu-item-color,#333);background:#fff;background:var(--time-picker-menu-item-background,#fff);outline:none}.next-time-picker-menu-item:hover{color:#333;color:var(--time-picker-menu-item-color-hover,#333);background:#f7f9fa;background:var(--time-picker-menu-item-background-hover,#f7f9fa)}.next-time-picker-menu-item.next-selected{font-weight:400;font-weight:var(--time-picker-menu-item-font-weight-selected,normal);color:#fff;color:var(--time-picker-menu-item-color-selected,#fff);background:#0064c8;background:var(--time-picker-menu-item-background-selected,#0064c8)}.next-time-picker-menu-item.next-disabled{cursor:not-allowed;color:#555;color:var(--time-picker-menu-item-color-disabled,#555);background:#fff;background:var(--time-picker-menu-item-background-disabled,#fff)}.next-time-picker-panel,.next-time-picker-panel *,.next-time-picker-panel :after,.next-time-picker-panel :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker-panel:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-time-picker-panel-header{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) var(--line-solid,solid) var(--popup-local-border-color,#c0c6cc)}.next-time-picker-panel-input.next-input{width:100%;padding:6px;border-color:transparent;vertical-align:middle}.next-time-picker-panel-col-3 .next-time-picker-menu{width:33.33333%}.next-time-picker-panel-col-2 .next-time-picker-menu{width:50%}.next-time-picker-panel-col-1 .next-time-picker-menu{width:100%}.next-time-picker-body[dir=rtl] .next-time-picker-menu{float:right}.next-time-picker-body[dir=rtl] .next-time-picker-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-time-picker{display:inline-block;width:200px}.next-time-picker,.next-time-picker *,.next-time-picker :after,.next-time-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker-trigger .next-input{width:100%}.next-time-picker-body{overflow:hidden;width:200px;width:var(--time-picker-panel-width,200px);border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);background:#fff;background:var(--time-picker-panel-background,#fff);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-time-picker-symbol-clock-icon:before{content:"\ea2e";content:var(--time-picker-clock-icon,"")}.next-range-picker-panel-input-separator,.next-range-picker-trigger-separator{cursor:default;display:inline-block;text-align:center;color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);width:16px;font-size:12px;font-size:var(--font-size-caption,12px);vertical-align:middle}.next-date-picker,.next-month-picker,.next-week-picker,.next-year-picker{display:inline-block;width:200px}.next-date-picker-input,.next-month-picker-input,.next-week-picker-input,.next-year-picker-input{width:100%}.next-date-picker-body,.next-month-picker-body,.next-week-picker-body,.next-year-picker-body{width:288px}.next-date-picker-panel-input.next-input,.next-month-picker-panel-input.next-input,.next-week-picker-panel-input.next-input,.next-year-picker-panel-input.next-input{width:100%;background:transparent}.next-date-picker-body.next-date-picker-body-show-time .next-date-picker-panel-input.next-input{width:49%}.next-date-picker-body.next-date-picker-body-show-time .next-date-picker-panel-input.next-input:first-child{margin-right:2%}.next-range-picker{display:inline-block;width:336px}.next-range-picker-input{width:100%}.next-range-picker-trigger{border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-bg-color,#fff)}.next-range-picker-trigger:hover{border-color:#c0c6cc;border-color:var(--input-hover-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-hover-bg-color,#fff)}.next-range-picker-trigger.next-error{border-color:#c80000;border-color:var(--input-feedback-error-border-color,#c80000)}.next-range-picker-trigger-input.next-input{height:auto;width:calc(50% - 8px)}.next-range-picker.next-disabled .next-range-picker-trigger{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);cursor:not-allowed}.next-range-picker.next-disabled .next-range-picker-trigger,.next-range-picker.next-disabled .next-range-picker-trigger:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-range-picker.next-large .next-range-picker-panel-input,.next-range-picker.next-large .next-range-picker-trigger{border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-range-picker.next-medium .next-range-picker-panel-input,.next-range-picker.next-medium .next-range-picker-trigger{border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-range-picker.next-small .next-range-picker-panel-input,.next-range-picker.next-small .next-range-picker-trigger{border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-range-picker-body{width:600px}.next-range-picker-panel-input-end-date.next-input,.next-range-picker-panel-input-start-date.next-input{width:calc(50% - 8px)}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-end-date,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-end-time,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-start-date,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-start-time{width:calc(25% - 8px)}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-start-date{margin-right:8px}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-end-time{margin-left:8px}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-end,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-start{width:50%;float:left}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-start{border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-end{border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-date-picker-body[dir=rtl] .next-date-picker-panel-footer{text-align:left}.next-date-picker-body[dir=rtl] .next-date-picker-panel-footer>.next-btn:not(:last-child){margin-right:0;margin-left:16px}.next-date-picker-body[dir=rtl].next-date-picker-body-show-time .next-date-picker-panel-input.next-input:first-child{margin-left:2%;margin-right:0}.next-date-picker-body[dir=rtl].next-date-picker-body-show-time .next-time-picker-menu{float:right}.next-date-picker-body[dir=rtl].next-date-picker-body-show-time .next-time-picker-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-range-picker-body[dir=rtl] .next-range-picker-panel-input{text-align:right}.next-range-picker-body[dir=rtl] .next-date-picker-panel-footer{text-align:left}.next-range-picker-body[dir=rtl] .next-date-picker-panel-footer>.next-btn:not(:last-child){margin-right:0;margin-left:16px}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-input-start-date{margin-right:0;margin-left:8px}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-input-end-time{margin-left:0;margin-right:8px}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-end,.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-start{float:right}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-start{border-right:none;border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-end{border-left:none;border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-time-picker-menu{float:right}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-time-picker-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-date-picker,.next-date-picker *,.next-date-picker :after,.next-date-picker :before,.next-month-picker,.next-month-picker *,.next-month-picker :after,.next-month-picker :before,.next-range-picker,.next-range-picker *,.next-range-picker :after,.next-range-picker :before,.next-week-picker,.next-week-picker *,.next-week-picker :after,.next-week-picker :before,.next-year-picker,.next-year-picker *,.next-year-picker :after,.next-year-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-date-picker-body,.next-month-picker-body,.next-range-picker-body,.next-week-picker-body,.next-year-picker-body{border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));background:#fff;background:var(--date-picker-panel-background,#fff)}.next-date-picker-panel-header,.next-month-picker-panel-header,.next-range-picker-panel-header,.next-week-picker-panel-header,.next-year-picker-panel-header{padding:6px;text-align:center}.next-date-picker-panel-time,.next-month-picker-panel-time,.next-range-picker-panel-time,.next-week-picker-panel-time,.next-year-picker-panel-time{border-top:1px solid #c0c6cc;border-top:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc)}.next-date-picker-panel-footer,.next-month-picker-panel-footer,.next-range-picker-panel-footer,.next-week-picker-panel-footer,.next-year-picker-panel-footer{text-align:right;padding:8px 16px;padding:var(--date-picker-panel-footer-padding-tb,8px) var(--date-picker-panel-footer-padding-lr,16px);border-top:1px solid #c0c6cc;border-top:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc)}.next-date-picker-panel-footer>.next-btn:not(:last-child),.next-date-picker-panel-tools>.next-btn:not(:last-child),.next-month-picker-panel-footer>.next-btn:not(:last-child),.next-month-picker-panel-tools>.next-btn:not(:last-child),.next-range-picker-panel-footer>.next-btn:not(:last-child),.next-range-picker-panel-tools>.next-btn:not(:last-child),.next-week-picker-panel-footer>.next-btn:not(:last-child),.next-week-picker-panel-tools>.next-btn:not(:last-child),.next-year-picker-panel-footer>.next-btn:not(:last-child),.next-year-picker-panel-tools>.next-btn:not(:last-child){margin-right:16px}.next-date-picker-panel-tools,.next-month-picker-panel-tools,.next-range-picker-panel-tools,.next-week-picker-panel-tools,.next-year-picker-panel-tools{float:left}.next-date-picker .next-calendar-panel-header,.next-month-picker .next-calendar-panel-header,.next-range-picker .next-calendar-panel-header,.next-week-picker .next-calendar-panel-header,.next-year-picker .next-calendar-panel-header{margin-left:-1px;margin-left:calc(0px - var(--popup-local-border-width, 1px));margin-right:-1px;margin-right:calc(0px - var(--popup-local-border-width, 1px))}.next-date-picker .next-input input,.next-month-picker .next-input input,.next-range-picker .next-input input,.next-week-picker .next-input input,.next-year-picker .next-input input{vertical-align:baseline}.next-date-picker-symbol-calendar-icon:before,.next-month-picker-symbol-calendar-icon:before,.next-range-picker-symbol-calendar-icon:before,.next-week-picker-symbol-calendar-icon:before,.next-year-picker-symbol-calendar-icon:before{content:"\ea1f";content:var(--date-picker-calendar-icon,"")}.next-range-picker-panel-body .next-calendar{display:inline-block;width:50%}.next-message{position:relative;display:block;vertical-align:baseline;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.next-message,.next-message *,.next-message :after,.next-message :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-message:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-message .next-message-close{color:#333;color:var(--message-close-icon-color,#333);font-size:0;position:absolute;cursor:pointer}.next-message .next-message-close .next-icon-close{width:12px;height:12px;line-height:1em}.next-message .next-message-close .next-icon-close:before{width:12px;height:12px;font-size:12px;line-height:1em}.next-message .next-message-close:hover{color:#333;color:var(--message-hover-close-icon-color,#333)}.next-message.next-message-success.next-inline{background-color:#d8f5d8;background-color:var(--message-success-color-bg-inline,#d8f5d8);border-color:transparent;border-color:var(--message-success-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-success.next-inline .next-message-title{color:#333;color:var(--message-success-color-title-inline,#333)}.next-message.next-message-success.next-inline .next-message-content{color:#333;color:var(--message-success-color-content-inline,#333)}.next-message.next-message-success.next-inline .next-message-symbol{color:#00a700;color:var(--message-success-color-icon-inline,#00a700)}.next-message.next-message-success.next-inline .next-message-symbol-icon:before{content:"\ea23";content:var(--message-success-icon-content,"")}.next-message.next-message-success.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-success.next-addon .next-message-title{color:#111;color:var(--message-success-color-title-addon,#111)}.next-message.next-message-success.next-addon .next-message-content{color:#555;color:var(--message-success-color-content-addon,#555)}.next-message.next-message-success.next-addon .next-message-symbol{color:#32c832;color:var(--message-success-color-icon-addon,#32c832)}.next-message.next-message-success.next-addon .next-message-symbol-icon:before{content:"\ea23";content:var(--message-success-icon-content,"")}.next-message.next-message-success.next-toast{background-color:#fff;background-color:var(--message-success-color-bg-toast,#fff);border-color:#c0c6cc;border-color:var(--message-success-color-border-toast,#c0c6cc);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-success.next-toast .next-message-title{color:#333;color:var(--message-success-color-title-toast,#333)}.next-message.next-message-success.next-toast .next-message-content{color:#333;color:var(--message-success-color-content-toast,#333)}.next-message.next-message-success.next-toast .next-message-symbol{color:#00a700;color:var(--message-success-color-icon-toast,#00a700)}.next-message.next-message-success.next-toast .next-message-symbol-icon:before{content:"\ea23";content:var(--message-success-icon-content,"")}.next-message.next-message-warning.next-inline{background-color:#fff7d1;background-color:var(--message-warning-color-bg-inline,#fff7d1);border-color:transparent;border-color:var(--message-warning-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-warning.next-inline .next-message-title{color:#333;color:var(--message-warning-color-title-inline,#333)}.next-message.next-message-warning.next-inline .next-message-content{color:#333;color:var(--message-warning-color-content-inline,#333)}.next-message.next-message-warning.next-inline .next-message-symbol{color:#fac800;color:var(--message-warning-color-icon-inline,#fac800)}.next-message.next-message-warning.next-inline .next-message-symbol-icon:before{content:"\ea21";content:var(--message-warning-icon-content,"")}.next-message.next-message-warning.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-warning.next-addon .next-message-title{color:#111;color:var(--message-warning-color-title-addon,#111)}.next-message.next-message-warning.next-addon .next-message-content{color:#555;color:var(--message-warning-color-content-addon,#555)}.next-message.next-message-warning.next-addon .next-message-symbol{color:#ffde5c;color:var(--message-warning-color-icon-addon,#ffde5c)}.next-message.next-message-warning.next-addon .next-message-symbol-icon:before{content:"\ea21";content:var(--message-warning-icon-content,"")}.next-message.next-message-warning.next-toast{background-color:#fff;background-color:var(--message-warning-color-bg-toast,#fff);border-color:#c0c6cc;border-color:var(--message-warning-color-border-toast,#c0c6cc);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-warning.next-toast .next-message-title{color:#333;color:var(--message-warning-color-title-toast,#333)}.next-message.next-message-warning.next-toast .next-message-content{color:#333;color:var(--message-warning-color-content-toast,#333)}.next-message.next-message-warning.next-toast .next-message-symbol{color:#fac800;color:var(--message-warning-color-icon-toast,#fac800)}.next-message.next-message-warning.next-toast .next-message-symbol-icon:before{content:"\ea21";content:var(--message-warning-icon-content,"")}.next-message.next-message-error.next-inline{background-color:#f8efef;background-color:var(--message-error-color-bg-inline,#f8efef);border-color:transparent;border-color:var(--message-error-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-error.next-inline .next-message-title{color:#333;color:var(--message-error-color-title-inline,#333)}.next-message.next-message-error.next-inline .next-message-content{color:#333;color:var(--message-error-color-content-inline,#333)}.next-message.next-message-error.next-inline .next-message-symbol{color:#c80000;color:var(--message-error-color-icon-inline,#c80000)}.next-message.next-message-error.next-inline .next-message-symbol-icon:before{content:"\ea21";content:var(--message-error-icon-content,"")}.next-message.next-message-error.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-error.next-addon .next-message-title{color:#111;color:var(--message-error-color-title-addon,#111)}.next-message.next-message-error.next-addon .next-message-content{color:#555;color:var(--message-error-color-content-addon,#555)}.next-message.next-message-error.next-addon .next-message-symbol{color:#c80000;color:var(--message-error-color-icon-addon,#c80000)}.next-message.next-message-error.next-addon .next-message-symbol-icon:before{content:"\ea21";content:var(--message-error-icon-content,"")}.next-message.next-message-error.next-toast{background-color:#fff;background-color:var(--message-error-color-bg-toast,#fff);border-color:#c0c6cc;border-color:var(--message-error-color-border-toast,#c0c6cc);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-error.next-toast .next-message-title{color:#333;color:var(--message-error-color-title-toast,#333)}.next-message.next-message-error.next-toast .next-message-content{color:#333;color:var(--message-error-color-content-toast,#333)}.next-message.next-message-error.next-toast .next-message-symbol{color:#c80000;color:var(--message-error-color-icon-toast,#c80000)}.next-message.next-message-error.next-toast .next-message-symbol-icon:before{content:"\ea21";content:var(--message-error-icon-content,"")}.next-message.next-message-notice.next-inline{background-color:#eff3f8;background-color:var(--message-notice-color-bg-inline,#eff3f8);border-color:transparent;border-color:var(--message-notice-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-notice.next-inline .next-message-title{color:#333;color:var(--message-notice-color-title-inline,#333)}.next-message.next-message-notice.next-inline .next-message-content{color:#333;color:var(--message-notice-color-content-inline,#333)}.next-message.next-message-notice.next-inline .next-message-symbol{color:#0064c8;color:var(--message-notice-color-icon-inline,#0064c8)}.next-message.next-message-notice.next-inline .next-message-symbol-icon:before{content:"\ea2a";content:var(--message-notice-icon-content,"")}.next-message.next-message-notice.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-notice.next-addon .next-message-title{color:#111;color:var(--message-notice-color-title-addon,#111)}.next-message.next-message-notice.next-addon .next-message-content{color:#555;color:var(--message-notice-color-content-addon,#555)}.next-message.next-message-notice.next-addon .next-message-symbol{color:#0070cc;color:var(--message-notice-color-icon-addon,#0070cc)}.next-message.next-message-notice.next-addon .next-message-symbol-icon:before{content:"\ea2a";content:var(--message-notice-icon-content,"")}.next-message.next-message-notice.next-toast{background-color:#fff;background-color:var(--message-notice-color-bg-toast,#fff);border-color:#fff;border-color:var(--message-notice-color-border-toast,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-notice.next-toast .next-message-title{color:#333;color:var(--message-notice-color-title-toast,#333)}.next-message.next-message-notice.next-toast .next-message-content{color:#666;color:var(--message-notice-color-content-toast,#666)}.next-message.next-message-notice.next-toast .next-message-symbol{color:#0070cc;color:var(--message-notice-color-icon-toast,#0070cc)}.next-message.next-message-notice.next-toast .next-message-symbol-icon:before{content:"\ea2a";content:var(--message-notice-icon-content,"")}.next-message.next-message-help.next-inline{background-color:#f8f8f9;background-color:var(--message-help-color-bg-inline,#f8f8f9);border-color:transparent;border-color:var(--message-help-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-help.next-inline .next-message-title{color:#333;color:var(--message-help-color-title-inline,#333)}.next-message.next-message-help.next-inline .next-message-content{color:#333;color:var(--message-help-color-content-inline,#333)}.next-message.next-message-help.next-inline .next-message-symbol{color:#333;color:var(--message-help-color-icon-inline,#333)}.next-message.next-message-help.next-inline .next-message-symbol-icon:before{content:"\ea2d";content:var(--message-help-icon-content,"")}.next-message.next-message-help.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-help.next-addon .next-message-title{color:#111;color:var(--message-help-color-title-addon,#111)}.next-message.next-message-help.next-addon .next-message-content{color:#555;color:var(--message-help-color-content-addon,#555)}.next-message.next-message-help.next-addon .next-message-symbol{color:#333;color:var(--message-help-color-icon-addon,#333)}.next-message.next-message-help.next-addon .next-message-symbol-icon:before{content:"\ea2d";content:var(--message-help-icon-content,"")}.next-message.next-message-help.next-toast{background-color:#fff;background-color:var(--message-help-color-bg-toast,#fff);border-color:#fff;border-color:var(--message-help-color-border-toast,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-help.next-toast .next-message-title{color:#333;color:var(--message-help-color-title-toast,#333)}.next-message.next-message-help.next-toast .next-message-content{color:#555;color:var(--message-help-color-content-toast,#555)}.next-message.next-message-help.next-toast .next-message-symbol{color:#888;color:var(--message-help-color-icon-toast,#888)}.next-message.next-message-help.next-toast .next-message-symbol-icon:before{content:"\ea2d";content:var(--message-help-icon-content,"")}.next-message.next-message-loading.next-inline{background-color:#fff;background-color:var(--message-loading-color-bg-inline,#fff);border-color:#e3e4e6;border-color:var(--message-loading-color-border-inline,#e3e4e6);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-loading.next-inline .next-message-title{color:#333;color:var(--message-loading-color-title-inline,#333)}.next-message.next-message-loading.next-inline .next-message-content{color:#333;color:var(--message-loading-color-content-inline,#333)}.next-message.next-message-loading.next-inline .next-message-symbol{color:#333;color:var(--message-loading-color-icon-inline,#333)}.next-message.next-message-loading.next-inline .next-message-symbol-icon:before{content:"\ea26";content:var(--message-loading-icon-content,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-message.next-message-loading.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-loading.next-addon .next-message-title{color:#111;color:var(--message-loading-color-title-addon,#111)}.next-message.next-message-loading.next-addon .next-message-content{color:#555;color:var(--message-loading-color-content-addon,#555)}.next-message.next-message-loading.next-addon .next-message-symbol{color:#1c1c1c;color:var(--message-loading-color-icon-addon,#1c1c1c)}.next-message.next-message-loading.next-addon .next-message-symbol-icon:before{content:"\ea26";content:var(--message-loading-icon-content,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-message.next-message-loading.next-toast{background-color:#fff;background-color:var(--message-loading-color-bg-toast,#fff);border-color:#fff;border-color:var(--message-loading-color-border-toast,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-loading.next-toast .next-message-title{color:#333;color:var(--message-loading-color-title-toast,#333)}.next-message.next-message-loading.next-toast .next-message-content{color:#555;color:var(--message-loading-color-content-toast,#555)}.next-message.next-message-loading.next-toast .next-message-symbol{color:#888;color:var(--message-loading-color-icon-toast,#888)}.next-message.next-message-loading.next-toast .next-message-symbol-icon:before{content:"\ea26";content:var(--message-loading-icon-content,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-message.next-medium{border-width:1px;border-width:var(--message-size-m-border-width,1px);padding:12px;padding:var(--message-size-m-padding,12px)}.next-message.next-medium .next-message-symbol{float:left;line-height:12px;line-height:var(--message-size-m-icon,12px)}.next-message.next-medium .next-message-symbol .next-icon-remote,.next-message.next-medium .next-message-symbol:before{width:12px;width:var(--message-size-m-icon,12px);font-size:12px;font-size:var(--message-size-m-icon,12px);line-height:inherit}.next-message.next-medium .next-message-title{font-size:12px;font-size:var(--message-size-m-title-font,12px);line-height:12px;line-height:var(--message-size-m-title-font,12px)}.next-message.next-medium .next-message-content,.next-message.next-medium .next-message-title{padding:0 4px 0 16px;padding:0 var(--message-size-m-title-content-padding-right,4px) 0 calc(var(--message-size-m-title-content-padding-left, 4px) + var(--message-size-m-icon, 12px))}.next-message.next-medium .next-message-content{margin-top:8px;margin-top:var(--message-size-m-content-margin-top,8px);font-size:12px;font-size:var(--message-size-m-content-font,12px);line-height:12px;line-height:var(--message-size-m-content-font,12px)}.next-message.next-medium .next-message-symbol+.next-message-content{margin-top:0}.next-message.next-medium.next-only-content .next-message-content,.next-message.next-medium.next-title-content .next-message-title{line-height:12px;line-height:var(--message-size-m-icon,12px)}.next-message.next-medium .next-message-close{top:12px;top:var(--message-size-m-close-top,12px);right:12px;right:var(--message-size-m-close-right,12px)}.next-message.next-medium.next-inline{border-radius:2px;border-radius:var(--message-size-m-border-radius,2px)}.next-message.next-medium.next-toast{border-radius:2px;border-radius:var(--message-size-m-border-radius-toast,2px)}.next-message.next-large{border-width:1px;border-width:var(--message-size-l-border-width,1px);padding:16px;padding:var(--message-size-l-padding,16px);line-height:18px}.next-message.next-large .next-message-symbol{float:left;line-height:16px;line-height:var(--message-size-l-icon,16px)}.next-message.next-large .next-message-symbol .next-icon-remote,.next-message.next-large .next-message-symbol:before{width:16px;width:var(--message-size-l-icon,16px);font-size:16px;font-size:var(--message-size-l-icon,16px);line-height:inherit}.next-message.next-large .next-message-title{font-size:14px;font-size:var(--message-size-l-title-font,14px);line-height:14px;line-height:var(--message-size-l-title-font,14px)}.next-message.next-large .next-message-content,.next-message.next-large .next-message-title{padding:0 16px 0 24px;padding:0 var(--message-size-l-title-content-padding-right,16px) 0 calc(var(--message-size-l-title-content-padding-left, 8px) + var(--message-size-l-icon, 16px))}.next-message.next-large .next-message-content{margin-top:8px;margin-top:var(--message-size-l-content-margin-top,8px);font-size:12px;font-size:var(--message-size-l-content-font,12px);line-height:12px;line-height:var(--message-size-l-content-font,12px)}.next-message.next-large .next-message-symbol+.next-message-content{margin-top:0}.next-message.next-large.next-only-content .next-message-content,.next-message.next-large.next-title-content .next-message-title{line-height:16px;line-height:var(--message-size-l-icon,16px)}.next-message.next-large .next-message-close{top:16px;top:var(--message-size-l-close-top,16px);right:16px;right:var(--message-size-l-close-right,16px)}.next-message.next-large.next-inline{border-radius:2px;border-radius:var(--message-size-l-border-radius,2px)}.next-message.next-large.next-toast{border-radius:2px;border-radius:var(--message-size-l-border-radius-toast,2px)}.next-message[dir=rtl] .next-message-symbol{float:right}.next-message[dir=rtl].next-medium .next-message-title{padding:0 16px 0 4px;padding:0 calc(var(--message-size-m-title-content-padding-left, 4px) + var(--message-size-m-icon, 12px)) 0 var(--message-size-m-title-content-padding-right,4px)}.next-message[dir=rtl].next-medium .next-message-close{left:12px;left:var(--message-size-m-close-right,12px);right:auto}.next-message[dir=rtl].next-large .next-message-title{padding:0 24px 0 16px;padding:0 calc(var(--message-size-l-title-content-padding-left, 8px) + var(--message-size-l-icon, 16px)) 0 var(--message-size-l-title-content-padding-right,16px)}.next-message[dir=rtl].next-large .next-message-close{left:16px;left:var(--message-size-l-close-right,16px);right:auto}.next-message-wrapper-v2{margin:0;padding:0;position:fixed;left:0;z-index:1001;width:100%;pointer-events:none}.next-message-list{padding:8px;text-align:center}.next-message-list .next-message{display:inline-block;pointer-events:all}.next-message-fade-leave{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-message-fade-leave.next-message-fade-leave-active{-webkit-animation-name:MessageFadeOut;animation-name:MessageFadeOut;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes MessageFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}@keyframes MessageFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}.next-dialog[dir=rtl],.next-dialog[dir=rtl] .next-dialog-footer.next-align-left{text-align:right}.next-dialog[dir=rtl] .next-dialog-footer.next-align-center{text-align:center}.next-dialog[dir=rtl] .next-dialog-footer.next-align-right{text-align:left}.next-dialog[dir=rtl] .next-dialog-btn+.next-dialog-btn{margin-right:4px;margin-left:0}.next-dialog[dir=rtl] .next-dialog-close{left:24px;left:var(--dialog-close-right,24px);right:auto}.next-dialog{position:fixed;z-index:1001;background:#fff;background:var(--dialog-bg,#fff);border:1px solid #c0c6cc;border:var(--dialog-border-width,1px) var(--dialog-border-style,solid) var(--dialog-border-color,#c0c6cc);border-radius:4px;border-radius:var(--dialog-corner,4px);-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.2);-webkit-box-shadow:var(--dialog-shadow,0 8px 16px 0 rgba(0,0,0,.2));box-shadow:0 8px 16px 0 rgba(0,0,0,.2);box-shadow:var(--dialog-shadow,0 8px 16px 0 rgba(0,0,0,.2));text-align:left;overflow:hidden;max-width:90%}.next-dialog,.next-dialog *,.next-dialog :after,.next-dialog :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-dialog-header{padding:24px 24px 16px;padding:var(--dialog-title-padding-top,24px) var(--dialog-title-padding-left-right,24px) var(--dialog-title-padding-bottom,16px) var(--dialog-title-padding-left-right,24px);border-bottom:0 solid #c0c6cc;border-bottom:var(--dialog-title-border-width,0) var(--line-solid,solid) var(--dialog-title-border-color,#c0c6cc);font-size:16px;font-size:var(--dialog-title-font-size,16px);font-weight:400;font-weight:var(--dialog-title-font-weight,normal);background:#fff;background:var(--dialog-title-bg-color,#fff);color:#333;color:var(--dialog-title-color,#333)}.next-dialog-body{padding:0 24px 16px;padding:var(--dialog-content-padding-top,0) var(--dialog-content-padding-left-right,24px) var(--dialog-content-padding-bottom,16px) var(--dialog-content-padding-left-right,24px);font-size:12px;font-size:var(--dialog-content-font-size,12px);color:#333;color:var(--dialog-content-color,#333)}.next-dialog-footer{padding:16px 24px 24px;padding:var(--dialog-footer-padding-top,16px) var(--dialog-footer-padding-left-right,24px) var(--dialog-footer-padding-bottom,24px) var(--dialog-footer-padding-left-right,24px);border-top:0 solid #c0c6cc;border-top:var(--dialog-footer-border-width,0) var(--line-solid,solid) var(--dialog-footer-border-color,#c0c6cc);background:#fff;background:var(--dialog-footer-bg-color,#fff)}.next-dialog-footer.next-align-left{text-align:left}.next-dialog-footer.next-align-center{text-align:center}.next-dialog-footer.next-align-right{text-align:right}.next-dialog-footer-fixed-height{position:absolute;width:100%;bottom:0}.next-dialog-btn+.next-dialog-btn{margin-left:8px;margin-left:var(--dialog-footer-button-spacing,8px)}.next-dialog-close{position:absolute;top:24px;top:var(--dialog-close-top,24px);right:24px;right:var(--dialog-close-right,24px);width:16px;width:var(--dialog-close-width,16px);cursor:pointer}.next-dialog-close,.next-dialog-close:link,.next-dialog-close:visited{height:16px;height:var(--dialog-close-width,16px);color:#666;color:var(--dialog-close-color,#666)}.next-dialog-close:hover{background:#fff;background:var(--dialog-close-bg-hovered,#fff);color:#333;color:var(--dialog-close-color-hovered,#333)}.next-dialog-close .next-dialog-close-icon.next-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-top:calc(0px - var(--dialog-close-size, 16px)/2);margin-left:-8px;margin-left:calc(0px - var(--dialog-close-size, 16px)/2);width:16px;width:var(--dialog-close-size,16px);height:16px;height:var(--dialog-close-size,16px);line-height:1em}.next-dialog-close .next-dialog-close-icon.next-icon:before{width:16px;width:var(--dialog-close-size,16px);height:16px;height:var(--dialog-close-size,16px);font-size:16px;font-size:var(--dialog-close-size,16px);line-height:1em}.next-dialog-container{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1001;padding:40px;overflow:auto;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.next-dialog-container:before{display:inline-block;vertical-align:middle;width:0;height:100%;content:""}.next-dialog-container .next-dialog{display:inline-block;position:relative;vertical-align:middle}.next-dialog-quick .next-dialog-body{padding:48px 24px 16px;padding:var(--dialog-message-content-padding-top,48px) var(--dialog-message-content-padding-left-right,24px) var(--dialog-message-content-padding-bottom,16px) var(--dialog-message-content-padding-left-right,24px)}.next-dialog .next-dialog-message.next-message{min-width:300px;padding:0}.next-drawer{position:fixed;z-index:1001;background:#fff;background:var(--drawer-bg,#fff);border:1px solid #c0c6cc;border:var(--drawer-border-width,1px) var(--drawer-border-style,solid) var(--drawer-border-color,#c0c6cc);-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.2);-webkit-box-shadow:var(--drawer-shadow,0 8px 16px 0 rgba(0,0,0,.2));box-shadow:0 8px 16px 0 rgba(0,0,0,.2);box-shadow:var(--drawer-shadow,0 8px 16px 0 rgba(0,0,0,.2));overflow:auto;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.next-drawer,.next-drawer *,.next-drawer :after,.next-drawer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-drawer-left,.next-drawer-right{height:100%;max-width:80%;width:240px}.next-drawer-bottom,.next-drawer-top{width:100%}.next-drawer-header{padding:24px 24px 16px;padding:var(--drawer-title-padding-top,24px) var(--drawer-title-padding-left-right,24px) var(--drawer-title-padding-bottom,16px) var(--drawer-title-padding-left-right,24px);border-bottom:0 solid transparent;border-bottom:var(--drawer-title-border-width,0) var(--line-solid,solid) var(--drawer-title-border-color,transparent);font-size:16px;font-size:var(--drawer-title-font-size,16px);background:#fff;background:var(--drawer-title-bg-color,#fff);color:#333;color:var(--drawer-title-color,#333)}.next-drawer-no-title{padding:0;border-bottom:0}.next-drawer-body{padding:0 24px 8px;padding:var(--drawer-content-padding-top,0) var(--drawer-content-padding-left-right,24px) var(--drawer-content-padding-bottom,8px) var(--drawer-content-padding-left-right,24px);font-size:12px;font-size:var(--drawer-content-font-size,12px);color:#333;color:var(--drawer-content-color,#333)}.next-drawer-close{position:absolute;top:24px;top:var(--drawer-close-top,24px);right:24px;right:var(--drawer-close-right,24px);width:16px;cursor:pointer}.next-drawer-close,.next-drawer-close:link,.next-drawer-close:visited{height:16px;color:#666;color:var(--drawer-close-color,#666)}.next-drawer-close:hover{background:transparent;background:var(--drawer-close-bg-hovered,transparent);color:#333;color:var(--drawer-close-color-hovered,#333)}.next-drawer-close .next-drawer-close-icon.next-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-top:calc(0px - var(--drawer-close-size, 16px)/2);margin-left:-8px;margin-left:calc(0px - var(--drawer-close-size, 16px)/2);width:16px;width:var(--drawer-close-size,16px);height:16px;height:var(--drawer-close-size,16px);line-height:1em}.next-drawer-close .next-drawer-close-icon.next-icon:before{width:16px;width:var(--drawer-close-size,16px);height:16px;height:var(--drawer-close-size,16px);font-size:16px;font-size:var(--drawer-close-size,16px);line-height:1em}.next-row{display:-webkit-box;display:-ms-flexbox;display:flex}.next-row,.next-row *,.next-row :after,.next-row :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-row.next-row-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}@media (min-width:320px){.next-row.next-row-fixed{width:320px}}@media (min-width:480px){.next-row.next-row-fixed{width:480px}}@media (min-width:720px){.next-row.next-row-fixed{width:720px}}@media (min-width:990px){.next-row.next-row-fixed{width:990px}}@media (min-width:1200px){.next-row.next-row-fixed{width:1200px}}@media (min-width:1500px){.next-row.next-row-fixed{width:1500px}}.next-row.next-row-fixed-xxs{width:320px}.next-row.next-row-fixed-xs{width:480px}.next-row.next-row-fixed-s{width:720px}.next-row.next-row-fixed-m{width:990px}.next-row.next-row-fixed-l{width:1200px}.next-row.next-row-fixed-xl{width:1500px}.next-row.next-row-justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.next-row.next-row-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.next-row.next-row-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-row.next-row-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.next-row.next-row-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.next-row.next-row-align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.next-row.next-row-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.next-row.next-row-align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-row.next-row-align-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.next-row.next-row-align-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.next-col{-webkit-box-flex:1;-ms-flex:1;flex:1}.next-col.next-col-top{-ms-flex-item-align:start;align-self:flex-start}.next-col.next-col-bottom{-ms-flex-item-align:end;align-self:flex-end}.next-col.next-col-center{-ms-flex-item-align:center;align-self:center}@media (min-width:0\0) and (min-resolution:0.001dpcm){.next-row{display:table;width:100%}.next-col{display:table-cell;vertical-align:top}}.next-col-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}@media (min-width:320px){.next-col-xxs-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-xxs-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-xxs-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-xxs-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-xxs-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-xxs-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-xxs-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-xxs-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-xxs-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-xxs-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-xxs-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-xxs-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-xxs-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-xxs-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-xxs-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-xxs-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-xxs-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-xxs-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-xxs-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-xxs-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-xxs-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-xxs-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-xxs-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-xxs-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:480px){.next-col-xs-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-xs-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-xs-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-xs-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-xs-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-xs-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-xs-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-xs-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-xs-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-xs-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-xs-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-xs-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-xs-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-xs-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-xs-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-xs-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-xs-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-xs-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-xs-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-xs-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-xs-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-xs-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-xs-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-xs-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:720px){.next-col-s-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-s-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-s-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-s-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-s-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-s-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-s-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-s-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-s-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-s-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-s-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-s-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-s-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-s-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-s-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-s-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-s-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-s-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-s-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-s-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-s-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-s-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-s-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-s-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:990px){.next-col-m-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-m-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-m-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-m-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-m-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-m-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-m-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-m-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-m-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-m-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-m-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-m-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-m-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-m-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-m-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-m-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-m-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-m-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-m-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-m-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-m-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-m-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-m-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-m-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1200px){.next-col-l-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-l-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-l-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-l-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-l-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-l-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-l-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-l-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-l-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-l-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-l-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-l-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-l-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-l-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-l-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-l-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-l-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-l-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-l-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-l-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-l-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-l-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-l-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-l-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1500px){.next-col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-xl-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-xl-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-xl-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-xl-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-xl-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-xl-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-xl-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-xl-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-xl-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-xl-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-xl-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-xl-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}.next-col-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}@media (min-width:320px){.next-col-xxs-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-xxs-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-xxs-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-xxs-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-xxs-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:480px){.next-col-xs-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-xs-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-xs-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-xs-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-xs-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:720px){.next-col-s-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-s-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-s-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-s-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-s-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:990px){.next-col-m-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-m-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-m-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-m-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-m-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1200px){.next-col-l-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-l-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-l-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-l-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-l-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1500px){.next-col-xl-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-xl-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-xl-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-xl-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-xl-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}.next-col-fixed-1{-webkit-box-flex:0;-ms-flex:0 0 20px;flex:0 0 20px;width:20px;max-width:20px}.next-col-fixed-2{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;width:40px;max-width:40px}.next-col-fixed-3{-webkit-box-flex:0;-ms-flex:0 0 60px;flex:0 0 60px;width:60px;max-width:60px}.next-col-fixed-4{-webkit-box-flex:0;-ms-flex:0 0 80px;flex:0 0 80px;width:80px;max-width:80px}.next-col-fixed-5{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;width:100px;max-width:100px}.next-col-fixed-6{-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px;width:120px;max-width:120px}.next-col-fixed-7{-webkit-box-flex:0;-ms-flex:0 0 140px;flex:0 0 140px;width:140px;max-width:140px}.next-col-fixed-8{-webkit-box-flex:0;-ms-flex:0 0 160px;flex:0 0 160px;width:160px;max-width:160px}.next-col-fixed-9{-webkit-box-flex:0;-ms-flex:0 0 180px;flex:0 0 180px;width:180px;max-width:180px}.next-col-fixed-10{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;width:200px;max-width:200px}.next-col-fixed-11{-webkit-box-flex:0;-ms-flex:0 0 220px;flex:0 0 220px;width:220px;max-width:220px}.next-col-fixed-12{-webkit-box-flex:0;-ms-flex:0 0 240px;flex:0 0 240px;width:240px;max-width:240px}.next-col-fixed-13{-webkit-box-flex:0;-ms-flex:0 0 260px;flex:0 0 260px;width:260px;max-width:260px}.next-col-fixed-14{-webkit-box-flex:0;-ms-flex:0 0 280px;flex:0 0 280px;width:280px;max-width:280px}.next-col-fixed-15{-webkit-box-flex:0;-ms-flex:0 0 300px;flex:0 0 300px;width:300px;max-width:300px}.next-col-fixed-16{-webkit-box-flex:0;-ms-flex:0 0 320px;flex:0 0 320px;width:320px;max-width:320px}.next-col-fixed-17{-webkit-box-flex:0;-ms-flex:0 0 340px;flex:0 0 340px;width:340px;max-width:340px}.next-col-fixed-18{-webkit-box-flex:0;-ms-flex:0 0 360px;flex:0 0 360px;width:360px;max-width:360px}.next-col-fixed-19{-webkit-box-flex:0;-ms-flex:0 0 380px;flex:0 0 380px;width:380px;max-width:380px}.next-col-fixed-20{-webkit-box-flex:0;-ms-flex:0 0 400px;flex:0 0 400px;width:400px;max-width:400px}.next-col-fixed-21{-webkit-box-flex:0;-ms-flex:0 0 420px;flex:0 0 420px;width:420px;max-width:420px}.next-col-fixed-22{-webkit-box-flex:0;-ms-flex:0 0 440px;flex:0 0 440px;width:440px;max-width:440px}.next-col-fixed-23{-webkit-box-flex:0;-ms-flex:0 0 460px;flex:0 0 460px;width:460px;max-width:460px}.next-col-fixed-24{-webkit-box-flex:0;-ms-flex:0 0 480px;flex:0 0 480px;width:480px;max-width:480px}.next-col-fixed-25{-webkit-box-flex:0;-ms-flex:0 0 500px;flex:0 0 500px;width:500px;max-width:500px}.next-col-fixed-26{-webkit-box-flex:0;-ms-flex:0 0 520px;flex:0 0 520px;width:520px;max-width:520px}.next-col-fixed-27{-webkit-box-flex:0;-ms-flex:0 0 540px;flex:0 0 540px;width:540px;max-width:540px}.next-col-fixed-28{-webkit-box-flex:0;-ms-flex:0 0 560px;flex:0 0 560px;width:560px;max-width:560px}.next-col-fixed-29{-webkit-box-flex:0;-ms-flex:0 0 580px;flex:0 0 580px;width:580px;max-width:580px}.next-col-fixed-30{-webkit-box-flex:0;-ms-flex:0 0 600px;flex:0 0 600px;width:600px;max-width:600px}.next-col-offset-1{margin-left:4.16667%}.next-col-offset-2{margin-left:8.33333%}.next-col-offset-3{margin-left:12.5%}.next-col-offset-4{margin-left:16.66667%}.next-col-offset-5{margin-left:20.83333%}.next-col-offset-6{margin-left:25%}.next-col-offset-7{margin-left:29.16667%}.next-col-offset-8{margin-left:33.33333%}.next-col-offset-9{margin-left:37.5%}.next-col-offset-10{margin-left:41.66667%}.next-col-offset-11{margin-left:45.83333%}.next-col-offset-12{margin-left:50%}.next-col-offset-13{margin-left:54.16667%}.next-col-offset-14{margin-left:58.33333%}.next-col-offset-15{margin-left:62.5%}.next-col-offset-16{margin-left:66.66667%}.next-col-offset-17{margin-left:70.83333%}.next-col-offset-18{margin-left:75%}.next-col-offset-19{margin-left:79.16667%}.next-col-offset-20{margin-left:83.33333%}.next-col-offset-21{margin-left:87.5%}.next-col-offset-22{margin-left:91.66667%}.next-col-offset-23{margin-left:95.83333%}.next-col-offset-24{margin-left:100%}@media (min-width:320px){.next-col-xxs-offset-1{margin-left:4.16667%}.next-col-xxs-offset-2{margin-left:8.33333%}.next-col-xxs-offset-3{margin-left:12.5%}.next-col-xxs-offset-4{margin-left:16.66667%}.next-col-xxs-offset-5{margin-left:20.83333%}.next-col-xxs-offset-6{margin-left:25%}.next-col-xxs-offset-7{margin-left:29.16667%}.next-col-xxs-offset-8{margin-left:33.33333%}.next-col-xxs-offset-9{margin-left:37.5%}.next-col-xxs-offset-10{margin-left:41.66667%}.next-col-xxs-offset-11{margin-left:45.83333%}.next-col-xxs-offset-12{margin-left:50%}.next-col-xxs-offset-13{margin-left:54.16667%}.next-col-xxs-offset-14{margin-left:58.33333%}.next-col-xxs-offset-15{margin-left:62.5%}.next-col-xxs-offset-16{margin-left:66.66667%}.next-col-xxs-offset-17{margin-left:70.83333%}.next-col-xxs-offset-18{margin-left:75%}.next-col-xxs-offset-19{margin-left:79.16667%}.next-col-xxs-offset-20{margin-left:83.33333%}.next-col-xxs-offset-21{margin-left:87.5%}.next-col-xxs-offset-22{margin-left:91.66667%}.next-col-xxs-offset-23{margin-left:95.83333%}.next-col-xxs-offset-24{margin-left:100%}}@media (min-width:480px){.next-col-xs-offset-1{margin-left:4.16667%}.next-col-xs-offset-2{margin-left:8.33333%}.next-col-xs-offset-3{margin-left:12.5%}.next-col-xs-offset-4{margin-left:16.66667%}.next-col-xs-offset-5{margin-left:20.83333%}.next-col-xs-offset-6{margin-left:25%}.next-col-xs-offset-7{margin-left:29.16667%}.next-col-xs-offset-8{margin-left:33.33333%}.next-col-xs-offset-9{margin-left:37.5%}.next-col-xs-offset-10{margin-left:41.66667%}.next-col-xs-offset-11{margin-left:45.83333%}.next-col-xs-offset-12{margin-left:50%}.next-col-xs-offset-13{margin-left:54.16667%}.next-col-xs-offset-14{margin-left:58.33333%}.next-col-xs-offset-15{margin-left:62.5%}.next-col-xs-offset-16{margin-left:66.66667%}.next-col-xs-offset-17{margin-left:70.83333%}.next-col-xs-offset-18{margin-left:75%}.next-col-xs-offset-19{margin-left:79.16667%}.next-col-xs-offset-20{margin-left:83.33333%}.next-col-xs-offset-21{margin-left:87.5%}.next-col-xs-offset-22{margin-left:91.66667%}.next-col-xs-offset-23{margin-left:95.83333%}.next-col-xs-offset-24{margin-left:100%}}@media (min-width:720px){.next-col-s-offset-1{margin-left:4.16667%}.next-col-s-offset-2{margin-left:8.33333%}.next-col-s-offset-3{margin-left:12.5%}.next-col-s-offset-4{margin-left:16.66667%}.next-col-s-offset-5{margin-left:20.83333%}.next-col-s-offset-6{margin-left:25%}.next-col-s-offset-7{margin-left:29.16667%}.next-col-s-offset-8{margin-left:33.33333%}.next-col-s-offset-9{margin-left:37.5%}.next-col-s-offset-10{margin-left:41.66667%}.next-col-s-offset-11{margin-left:45.83333%}.next-col-s-offset-12{margin-left:50%}.next-col-s-offset-13{margin-left:54.16667%}.next-col-s-offset-14{margin-left:58.33333%}.next-col-s-offset-15{margin-left:62.5%}.next-col-s-offset-16{margin-left:66.66667%}.next-col-s-offset-17{margin-left:70.83333%}.next-col-s-offset-18{margin-left:75%}.next-col-s-offset-19{margin-left:79.16667%}.next-col-s-offset-20{margin-left:83.33333%}.next-col-s-offset-21{margin-left:87.5%}.next-col-s-offset-22{margin-left:91.66667%}.next-col-s-offset-23{margin-left:95.83333%}.next-col-s-offset-24{margin-left:100%}}@media (min-width:990px){.next-col-m-offset-1{margin-left:4.16667%}.next-col-m-offset-2{margin-left:8.33333%}.next-col-m-offset-3{margin-left:12.5%}.next-col-m-offset-4{margin-left:16.66667%}.next-col-m-offset-5{margin-left:20.83333%}.next-col-m-offset-6{margin-left:25%}.next-col-m-offset-7{margin-left:29.16667%}.next-col-m-offset-8{margin-left:33.33333%}.next-col-m-offset-9{margin-left:37.5%}.next-col-m-offset-10{margin-left:41.66667%}.next-col-m-offset-11{margin-left:45.83333%}.next-col-m-offset-12{margin-left:50%}.next-col-m-offset-13{margin-left:54.16667%}.next-col-m-offset-14{margin-left:58.33333%}.next-col-m-offset-15{margin-left:62.5%}.next-col-m-offset-16{margin-left:66.66667%}.next-col-m-offset-17{margin-left:70.83333%}.next-col-m-offset-18{margin-left:75%}.next-col-m-offset-19{margin-left:79.16667%}.next-col-m-offset-20{margin-left:83.33333%}.next-col-m-offset-21{margin-left:87.5%}.next-col-m-offset-22{margin-left:91.66667%}.next-col-m-offset-23{margin-left:95.83333%}.next-col-m-offset-24{margin-left:100%}}@media (min-width:1200px){.next-col-l-offset-1{margin-left:4.16667%}.next-col-l-offset-2{margin-left:8.33333%}.next-col-l-offset-3{margin-left:12.5%}.next-col-l-offset-4{margin-left:16.66667%}.next-col-l-offset-5{margin-left:20.83333%}.next-col-l-offset-6{margin-left:25%}.next-col-l-offset-7{margin-left:29.16667%}.next-col-l-offset-8{margin-left:33.33333%}.next-col-l-offset-9{margin-left:37.5%}.next-col-l-offset-10{margin-left:41.66667%}.next-col-l-offset-11{margin-left:45.83333%}.next-col-l-offset-12{margin-left:50%}.next-col-l-offset-13{margin-left:54.16667%}.next-col-l-offset-14{margin-left:58.33333%}.next-col-l-offset-15{margin-left:62.5%}.next-col-l-offset-16{margin-left:66.66667%}.next-col-l-offset-17{margin-left:70.83333%}.next-col-l-offset-18{margin-left:75%}.next-col-l-offset-19{margin-left:79.16667%}.next-col-l-offset-20{margin-left:83.33333%}.next-col-l-offset-21{margin-left:87.5%}.next-col-l-offset-22{margin-left:91.66667%}.next-col-l-offset-23{margin-left:95.83333%}.next-col-l-offset-24{margin-left:100%}}@media (min-width:1500px){.next-col-xl-offset-1{margin-left:4.16667%}.next-col-xl-offset-2{margin-left:8.33333%}.next-col-xl-offset-3{margin-left:12.5%}.next-col-xl-offset-4{margin-left:16.66667%}.next-col-xl-offset-5{margin-left:20.83333%}.next-col-xl-offset-6{margin-left:25%}.next-col-xl-offset-7{margin-left:29.16667%}.next-col-xl-offset-8{margin-left:33.33333%}.next-col-xl-offset-9{margin-left:37.5%}.next-col-xl-offset-10{margin-left:41.66667%}.next-col-xl-offset-11{margin-left:45.83333%}.next-col-xl-offset-12{margin-left:50%}.next-col-xl-offset-13{margin-left:54.16667%}.next-col-xl-offset-14{margin-left:58.33333%}.next-col-xl-offset-15{margin-left:62.5%}.next-col-xl-offset-16{margin-left:66.66667%}.next-col-xl-offset-17{margin-left:70.83333%}.next-col-xl-offset-18{margin-left:75%}.next-col-xl-offset-19{margin-left:79.16667%}.next-col-xl-offset-20{margin-left:83.33333%}.next-col-xl-offset-21{margin-left:87.5%}.next-col-xl-offset-22{margin-left:91.66667%}.next-col-xl-offset-23{margin-left:95.83333%}.next-col-xl-offset-24{margin-left:100%}}.next-col-offset-fixed-1{margin-left:20px}.next-col-offset-fixed-2{margin-left:40px}.next-col-offset-fixed-3{margin-left:60px}.next-col-offset-fixed-4{margin-left:80px}.next-col-offset-fixed-5{margin-left:100px}.next-col-offset-fixed-6{margin-left:120px}.next-col-offset-fixed-7{margin-left:140px}.next-col-offset-fixed-8{margin-left:160px}.next-col-offset-fixed-9{margin-left:180px}.next-col-offset-fixed-10{margin-left:200px}.next-col-offset-fixed-11{margin-left:220px}.next-col-offset-fixed-12{margin-left:240px}.next-col-offset-fixed-13{margin-left:260px}.next-col-offset-fixed-14{margin-left:280px}.next-col-offset-fixed-15{margin-left:300px}.next-col-offset-fixed-16{margin-left:320px}.next-col-offset-fixed-17{margin-left:340px}.next-col-offset-fixed-18{margin-left:360px}.next-col-offset-fixed-19{margin-left:380px}.next-col-offset-fixed-20{margin-left:400px}.next-col-offset-fixed-21{margin-left:420px}.next-col-offset-fixed-22{margin-left:440px}.next-col-offset-fixed-23{margin-left:460px}.next-col-offset-fixed-24{margin-left:480px}.next-col-offset-fixed-25{margin-left:500px}.next-col-offset-fixed-26{margin-left:520px}.next-col-offset-fixed-27{margin-left:540px}.next-col-offset-fixed-28{margin-left:560px}.next-col-offset-fixed-29{margin-left:580px}.next-col-offset-fixed-30{margin-left:600px}.next-col-offset-fixed-xxs-1{margin-left:20px}.next-col-offset-fixed-xxs-2{margin-left:40px}.next-col-offset-fixed-xxs-3{margin-left:60px}.next-col-offset-fixed-xxs-4{margin-left:80px}.next-col-offset-fixed-xxs-5{margin-left:100px}.next-col-offset-fixed-xxs-6{margin-left:120px}.next-col-offset-fixed-xxs-7{margin-left:140px}.next-col-offset-fixed-xxs-8{margin-left:160px}.next-col-offset-fixed-xxs-9{margin-left:180px}.next-col-offset-fixed-xxs-10{margin-left:200px}.next-col-offset-fixed-xxs-11{margin-left:220px}.next-col-offset-fixed-xxs-12{margin-left:240px}.next-col-offset-fixed-xxs-13{margin-left:260px}.next-col-offset-fixed-xxs-14{margin-left:280px}.next-col-offset-fixed-xxs-15{margin-left:300px}.next-col-offset-fixed-xxs-16{margin-left:320px}.next-col-offset-fixed-xxs-17{margin-left:340px}.next-col-offset-fixed-xxs-18{margin-left:360px}.next-col-offset-fixed-xxs-19{margin-left:380px}.next-col-offset-fixed-xxs-20{margin-left:400px}.next-col-offset-fixed-xxs-21{margin-left:420px}.next-col-offset-fixed-xxs-22{margin-left:440px}.next-col-offset-fixed-xxs-23{margin-left:460px}.next-col-offset-fixed-xxs-24{margin-left:480px}.next-col-offset-fixed-xxs-25{margin-left:500px}.next-col-offset-fixed-xxs-26{margin-left:520px}.next-col-offset-fixed-xxs-27{margin-left:540px}.next-col-offset-fixed-xxs-28{margin-left:560px}.next-col-offset-fixed-xxs-29{margin-left:580px}.next-col-offset-fixed-xxs-30{margin-left:600px}.next-col-offset-fixed-xs-1{margin-left:20px}.next-col-offset-fixed-xs-2{margin-left:40px}.next-col-offset-fixed-xs-3{margin-left:60px}.next-col-offset-fixed-xs-4{margin-left:80px}.next-col-offset-fixed-xs-5{margin-left:100px}.next-col-offset-fixed-xs-6{margin-left:120px}.next-col-offset-fixed-xs-7{margin-left:140px}.next-col-offset-fixed-xs-8{margin-left:160px}.next-col-offset-fixed-xs-9{margin-left:180px}.next-col-offset-fixed-xs-10{margin-left:200px}.next-col-offset-fixed-xs-11{margin-left:220px}.next-col-offset-fixed-xs-12{margin-left:240px}.next-col-offset-fixed-xs-13{margin-left:260px}.next-col-offset-fixed-xs-14{margin-left:280px}.next-col-offset-fixed-xs-15{margin-left:300px}.next-col-offset-fixed-xs-16{margin-left:320px}.next-col-offset-fixed-xs-17{margin-left:340px}.next-col-offset-fixed-xs-18{margin-left:360px}.next-col-offset-fixed-xs-19{margin-left:380px}.next-col-offset-fixed-xs-20{margin-left:400px}.next-col-offset-fixed-xs-21{margin-left:420px}.next-col-offset-fixed-xs-22{margin-left:440px}.next-col-offset-fixed-xs-23{margin-left:460px}.next-col-offset-fixed-xs-24{margin-left:480px}.next-col-offset-fixed-xs-25{margin-left:500px}.next-col-offset-fixed-xs-26{margin-left:520px}.next-col-offset-fixed-xs-27{margin-left:540px}.next-col-offset-fixed-xs-28{margin-left:560px}.next-col-offset-fixed-xs-29{margin-left:580px}.next-col-offset-fixed-xs-30{margin-left:600px}.next-col-offset-fixed-s-1{margin-left:20px}.next-col-offset-fixed-s-2{margin-left:40px}.next-col-offset-fixed-s-3{margin-left:60px}.next-col-offset-fixed-s-4{margin-left:80px}.next-col-offset-fixed-s-5{margin-left:100px}.next-col-offset-fixed-s-6{margin-left:120px}.next-col-offset-fixed-s-7{margin-left:140px}.next-col-offset-fixed-s-8{margin-left:160px}.next-col-offset-fixed-s-9{margin-left:180px}.next-col-offset-fixed-s-10{margin-left:200px}.next-col-offset-fixed-s-11{margin-left:220px}.next-col-offset-fixed-s-12{margin-left:240px}.next-col-offset-fixed-s-13{margin-left:260px}.next-col-offset-fixed-s-14{margin-left:280px}.next-col-offset-fixed-s-15{margin-left:300px}.next-col-offset-fixed-s-16{margin-left:320px}.next-col-offset-fixed-s-17{margin-left:340px}.next-col-offset-fixed-s-18{margin-left:360px}.next-col-offset-fixed-s-19{margin-left:380px}.next-col-offset-fixed-s-20{margin-left:400px}.next-col-offset-fixed-s-21{margin-left:420px}.next-col-offset-fixed-s-22{margin-left:440px}.next-col-offset-fixed-s-23{margin-left:460px}.next-col-offset-fixed-s-24{margin-left:480px}.next-col-offset-fixed-s-25{margin-left:500px}.next-col-offset-fixed-s-26{margin-left:520px}.next-col-offset-fixed-s-27{margin-left:540px}.next-col-offset-fixed-s-28{margin-left:560px}.next-col-offset-fixed-s-29{margin-left:580px}.next-col-offset-fixed-s-30{margin-left:600px}.next-col-offset-fixed-m-1{margin-left:20px}.next-col-offset-fixed-m-2{margin-left:40px}.next-col-offset-fixed-m-3{margin-left:60px}.next-col-offset-fixed-m-4{margin-left:80px}.next-col-offset-fixed-m-5{margin-left:100px}.next-col-offset-fixed-m-6{margin-left:120px}.next-col-offset-fixed-m-7{margin-left:140px}.next-col-offset-fixed-m-8{margin-left:160px}.next-col-offset-fixed-m-9{margin-left:180px}.next-col-offset-fixed-m-10{margin-left:200px}.next-col-offset-fixed-m-11{margin-left:220px}.next-col-offset-fixed-m-12{margin-left:240px}.next-col-offset-fixed-m-13{margin-left:260px}.next-col-offset-fixed-m-14{margin-left:280px}.next-col-offset-fixed-m-15{margin-left:300px}.next-col-offset-fixed-m-16{margin-left:320px}.next-col-offset-fixed-m-17{margin-left:340px}.next-col-offset-fixed-m-18{margin-left:360px}.next-col-offset-fixed-m-19{margin-left:380px}.next-col-offset-fixed-m-20{margin-left:400px}.next-col-offset-fixed-m-21{margin-left:420px}.next-col-offset-fixed-m-22{margin-left:440px}.next-col-offset-fixed-m-23{margin-left:460px}.next-col-offset-fixed-m-24{margin-left:480px}.next-col-offset-fixed-m-25{margin-left:500px}.next-col-offset-fixed-m-26{margin-left:520px}.next-col-offset-fixed-m-27{margin-left:540px}.next-col-offset-fixed-m-28{margin-left:560px}.next-col-offset-fixed-m-29{margin-left:580px}.next-col-offset-fixed-m-30{margin-left:600px}.next-col-offset-fixed-l-1{margin-left:20px}.next-col-offset-fixed-l-2{margin-left:40px}.next-col-offset-fixed-l-3{margin-left:60px}.next-col-offset-fixed-l-4{margin-left:80px}.next-col-offset-fixed-l-5{margin-left:100px}.next-col-offset-fixed-l-6{margin-left:120px}.next-col-offset-fixed-l-7{margin-left:140px}.next-col-offset-fixed-l-8{margin-left:160px}.next-col-offset-fixed-l-9{margin-left:180px}.next-col-offset-fixed-l-10{margin-left:200px}.next-col-offset-fixed-l-11{margin-left:220px}.next-col-offset-fixed-l-12{margin-left:240px}.next-col-offset-fixed-l-13{margin-left:260px}.next-col-offset-fixed-l-14{margin-left:280px}.next-col-offset-fixed-l-15{margin-left:300px}.next-col-offset-fixed-l-16{margin-left:320px}.next-col-offset-fixed-l-17{margin-left:340px}.next-col-offset-fixed-l-18{margin-left:360px}.next-col-offset-fixed-l-19{margin-left:380px}.next-col-offset-fixed-l-20{margin-left:400px}.next-col-offset-fixed-l-21{margin-left:420px}.next-col-offset-fixed-l-22{margin-left:440px}.next-col-offset-fixed-l-23{margin-left:460px}.next-col-offset-fixed-l-24{margin-left:480px}.next-col-offset-fixed-l-25{margin-left:500px}.next-col-offset-fixed-l-26{margin-left:520px}.next-col-offset-fixed-l-27{margin-left:540px}.next-col-offset-fixed-l-28{margin-left:560px}.next-col-offset-fixed-l-29{margin-left:580px}.next-col-offset-fixed-l-30{margin-left:600px}.next-col-offset-fixed-xl-1{margin-left:20px}.next-col-offset-fixed-xl-2{margin-left:40px}.next-col-offset-fixed-xl-3{margin-left:60px}.next-col-offset-fixed-xl-4{margin-left:80px}.next-col-offset-fixed-xl-5{margin-left:100px}.next-col-offset-fixed-xl-6{margin-left:120px}.next-col-offset-fixed-xl-7{margin-left:140px}.next-col-offset-fixed-xl-8{margin-left:160px}.next-col-offset-fixed-xl-9{margin-left:180px}.next-col-offset-fixed-xl-10{margin-left:200px}.next-col-offset-fixed-xl-11{margin-left:220px}.next-col-offset-fixed-xl-12{margin-left:240px}.next-col-offset-fixed-xl-13{margin-left:260px}.next-col-offset-fixed-xl-14{margin-left:280px}.next-col-offset-fixed-xl-15{margin-left:300px}.next-col-offset-fixed-xl-16{margin-left:320px}.next-col-offset-fixed-xl-17{margin-left:340px}.next-col-offset-fixed-xl-18{margin-left:360px}.next-col-offset-fixed-xl-19{margin-left:380px}.next-col-offset-fixed-xl-20{margin-left:400px}.next-col-offset-fixed-xl-21{margin-left:420px}.next-col-offset-fixed-xl-22{margin-left:440px}.next-col-offset-fixed-xl-23{margin-left:460px}.next-col-offset-fixed-xl-24{margin-left:480px}.next-col-offset-fixed-xl-25{margin-left:500px}.next-col-offset-fixed-xl-26{margin-left:520px}.next-col-offset-fixed-xl-27{margin-left:540px}.next-col-offset-fixed-xl-28{margin-left:560px}.next-col-offset-fixed-xl-29{margin-left:580px}.next-col-offset-fixed-xl-30{margin-left:600px}.next-col.next-col-hidden{display:none}@media (min-width:320px) and (max-width:479px){.next-col.next-col-xxs-hidden{display:none}}@media (min-width:480px) and (max-width:719px){.next-col.next-col-xs-hidden{display:none}}@media (min-width:720px) and (max-width:989px){.next-col.next-col-s-hidden{display:none}}@media (min-width:990px) and (max-width:1199px){.next-col.next-col-m-hidden{display:none}}@media (min-width:1200px) and (max-width:1499px){.next-col.next-col-l-hidden{display:none}}@media (min-width:1500px){.next-col.next-col-xl-hidden{display:none}}.next-row.next-row-hidden{display:none}@media (min-width:320px) and (max-width:479px){.next-row.next-row-xxs-hidden{display:none}}@media (min-width:480px) and (max-width:719px){.next-row.next-row-xs-hidden{display:none}}@media (min-width:720px) and (max-width:989px){.next-row.next-row-s-hidden{display:none}}@media (min-width:990px) and (max-width:1199px){.next-row.next-row-m-hidden{display:none}}@media (min-width:1200px) and (max-width:1499px){.next-row.next-row-l-hidden{display:none}}@media (min-width:1500px){.next-row.next-row-xl-hidden{display:none}}.next-col-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}@media (min-width:320px){.next-col-xxs-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-xxs-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-xxs-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-xxs-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-xxs-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-xxs-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-xxs-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-xxs-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-xxs-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-xxs-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-xxs-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-xxs-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-xxs-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-xxs-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-xxs-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-xxs-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-xxs-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-xxs-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-xxs-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-xxs-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-xxs-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-xxs-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-xxs-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-xxs-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:480px){.next-col-xs-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-xs-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-xs-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-xs-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-xs-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-xs-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-xs-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-xs-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-xs-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-xs-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-xs-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-xs-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-xs-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-xs-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-xs-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-xs-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-xs-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-xs-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-xs-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-xs-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-xs-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-xs-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-xs-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-xs-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:720px){.next-col-s-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-s-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-s-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-s-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-s-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-s-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-s-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-s-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-s-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-s-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-s-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-s-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-s-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-s-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-s-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-s-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-s-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-s-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-s-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-s-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-s-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-s-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-s-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-s-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:990px){.next-col-m-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-m-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-m-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-m-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-m-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-m-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-m-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-m-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-m-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-m-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-m-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-m-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-m-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-m-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-m-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-m-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-m-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-m-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-m-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-m-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-m-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-m-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-m-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-m-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:1200px){.next-col-l-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-l-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-l-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-l-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-l-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-l-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-l-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-l-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-l-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-l-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-l-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-l-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-l-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-l-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-l-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-l-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-l-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-l-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-l-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-l-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-l-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-l-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-l-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-l-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:1500px){.next-col-xl-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-xl-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-xl-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-xl-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-xl-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-xl-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-xl-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-xl-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-xl-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-xl-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-xl-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-xl-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-xl-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-xl-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-xl-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-xl-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-xl-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-xl-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-xl-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-xl-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-xl-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-xl-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-xl-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-xl-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}.next-col-offset-fixed-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-xxs-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-xxs-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-xxs-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-xxs-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-xxs-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-xxs-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-xxs-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-xxs-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-xxs-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-xxs-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-xxs-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-xxs-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-xxs-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-xxs-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-xxs-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-xxs-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-xxs-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-xxs-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-xxs-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-xxs-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-xxs-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-xxs-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-xxs-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-xxs-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-xxs-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-xxs-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-xxs-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-xxs-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-xxs-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-xxs-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-xs-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-xs-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-xs-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-xs-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-xs-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-xs-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-xs-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-xs-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-xs-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-xs-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-xs-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-xs-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-xs-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-xs-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-xs-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-xs-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-xs-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-xs-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-xs-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-xs-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-xs-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-xs-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-xs-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-xs-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-xs-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-xs-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-xs-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-xs-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-xs-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-xs-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-s-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-s-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-s-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-s-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-s-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-s-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-s-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-s-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-s-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-s-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-s-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-s-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-s-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-s-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-s-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-s-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-s-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-s-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-s-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-s-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-s-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-s-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-s-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-s-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-s-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-s-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-s-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-s-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-s-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-s-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-m-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-m-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-m-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-m-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-m-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-m-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-m-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-m-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-m-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-m-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-m-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-m-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-m-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-m-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-m-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-m-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-m-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-m-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-m-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-m-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-m-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-m-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-m-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-m-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-m-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-m-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-m-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-m-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-m-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-m-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-l-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-l-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-l-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-l-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-l-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-l-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-l-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-l-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-l-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-l-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-l-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-l-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-l-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-l-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-l-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-l-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-l-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-l-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-l-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-l-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-l-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-l-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-l-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-l-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-l-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-l-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-l-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-l-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-l-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-l-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-xl-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-xl-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-xl-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-xl-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-xl-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-xl-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-xl-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-xl-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-xl-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-xl-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-xl-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-xl-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-xl-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-xl-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-xl-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-xl-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-xl-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-xl-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-xl-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-xl-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-xl-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-xl-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-xl-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-xl-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-xl-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-xl-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-xl-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-xl-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-xl-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-xl-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-responsive-grid{display:grid}.next-responsive-grid,.next-responsive-grid *,.next-responsive-grid :after,.next-responsive-grid :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-responsive-grid-ie{display:block}.next-form,.next-form *,.next-form :after,.next-form :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-form-preview.next-form-item .next-form-item-label{color:#555;color:var(--form-element-preview-label-color,#555)}.next-form-preview.next-form-item .next-form-preview{color:#111;color:var(--form-element-preview-text-color,#111)}.next-form-preview.next-form-item.next-medium .next-form-item-label{font-size:12px;font-size:var(--form-element-medium-preview-label-font-size,12px);line-height:16px;line-height:var(--form-element-medium-preview-height,16px)}.next-form-preview.next-form-item.next-small .next-form-item-label{font-size:12px;font-size:var(--form-element-small-preview-label-font-size,12px);line-height:16px;line-height:var(--form-element-small-preview-height,16px)}.next-form-preview.next-form-item.next-large .next-form-item-label{font-size:14px;font-size:var(--form-element-large-preview-label-font-size,14px);line-height:16px;line-height:var(--form-element-large-preview-height,16px)}.next-form-responsive-grid .next-form-item-control{-webkit-box-flex:1;-ms-flex:1;flex:1}.next-form-responsive-grid .next-form-item{margin-bottom:0}.next-form-responsive-grid .next-form-item.next-left{display:-webkit-box;display:-ms-flexbox;display:flex}.next-form-responsive-grid.next-small .next-responsive-grid{gap:16px;gap:var(--form-inline-s-item-margin-r,16px)}.next-form-responsive-grid.next-small .next-form-item.next-left .next-form-item-label{line-height:1.4;margin-top:6px;margin-top:calc(var(--form-element-small-height, 24px)/2 - var(--form-element-small-font-size, 12px)/2);margin-bottom:6px;margin-bottom:calc(var(--form-element-small-height, 24px)/2 - var(--form-element-small-font-size, 12px)/2)}.next-form-responsive-grid.next-medium .next-responsive-grid{gap:20px;gap:var(--form-inline-m-item-margin-r,20px)}.next-form-responsive-grid.next-medium .next-form-item.next-left .next-form-item-label{line-height:1.4;margin-top:10px;margin-top:calc(var(--form-element-medium-height, 32px)/2 - var(--form-element-medium-font-size, 12px)/2);margin-bottom:10px;margin-bottom:calc(var(--form-element-medium-height, 32px)/2 - var(--form-element-medium-font-size, 12px)/2)}.next-form-responsive-grid.next-large .next-responsive-grid{gap:24px;gap:var(--form-inline-l-item-margin-r,24px)}.next-form-responsive-grid.next-large .next-form-item.next-left .next-form-item-label{line-height:1.4;margin-top:11px;margin-top:calc(var(--form-element-large-height, 36px)/2 - var(--form-element-large-font-size, 14px)/2);margin-bottom:11px;margin-bottom:calc(var(--form-element-large-height, 36px)/2 - var(--form-element-large-font-size, 14px)/2)}.next-form-item{margin-bottom:16px;margin-bottom:var(--form-item-m-margin-b,16px)}.next-form-item.has-error>.next-form-item-control>.next-form-item-help{color:#c80000;color:var(--form-error-color,#c80000)}.next-form-item.has-warning>.next-form-item-control>.next-form-item-help{color:#fff3b4;color:var(--form-warning-color,#fff3b4)}.next-form-item .next-form-item-label,.next-form-item .next-form-text-align,.next-form-item p{line-height:32px;line-height:var(--form-element-medium-height,32px)}.next-form-item .next-form-text-align,.next-form-item p{margin:0}.next-form-item .next-checkbox-group,.next-form-item .next-checkbox-wrapper,.next-form-item .next-radio-group,.next-form-item .next-radio-wrapper,.next-form-item .next-rating{line-height:28px;line-height:calc(var(--form-element-medium-height, 32px) - 4px)}.next-form-item .next-form-preview{font-size:12px;font-size:var(--form-element-medium-preview-font-size,12px);line-height:16px;line-height:var(--form-element-medium-preview-height,16px)}.next-form-item .next-form-preview.next-input-textarea>p{font-size:12px;font-size:var(--form-element-medium-preview-font-size,12px);text-align:justify;min-height:16.8px;min-height:calc(var(--form-element-medium-preview-font-size, 12px)*1.4);line-height:1.4;margin-top:-.4px;margin-top:calc(var(--form-element-medium-preview-height, 16px)/2 - var(--form-element-medium-preview-font-size, 12px)*1.4/2)}.next-form-item .next-form-item-label{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-form-item .next-form-item-label>label{display:inline-block;line-height:1.5;line-height:var(--font-lineheight-2,1.5)}.next-form-item.next-large{margin-bottom:16px;margin-bottom:var(--form-item-l-margin-b,16px)}.next-form-item.next-large .next-form-item-label,.next-form-item.next-large .next-form-text-align,.next-form-item.next-large p{line-height:36px;line-height:var(--form-element-large-height,36px)}.next-form-item.next-large .next-checkbox-group,.next-form-item.next-large .next-checkbox-wrapper,.next-form-item.next-large .next-radio-group,.next-form-item.next-large .next-radio-wrapper,.next-form-item.next-large .next-rating{line-height:35px;line-height:calc(var(--form-element-large-height, 36px) - 1px)}.next-form-item.next-large .next-form-preview{font-size:14px;font-size:var(--form-element-large-preview-font-size,14px);line-height:16px;line-height:var(--form-element-large-preview-height,16px)}.next-form-item.next-large .next-form-preview.next-input-textarea>p{font-size:14px;font-size:var(--form-element-large-preview-font-size,14px);text-align:justify;min-height:19.6px;min-height:calc(var(--form-element-large-preview-font-size, 14px)*1.4);line-height:1.4;margin-top:-1.8px;margin-top:calc(var(--form-element-large-preview-height, 16px)/2 - var(--form-element-large-preview-font-size, 14px)*1.4/2)}.next-form-item.next-large .next-switch{margin-top:5px;margin-top:calc(var(--form-element-large-height, 36px)/2 - 13px)}.next-form-item.next-large .next-form-item-label{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-form-item.next-small{margin-bottom:16px;margin-bottom:var(--form-item-s-margin-b,16px)}.next-form-item.next-small .next-checkbox-group,.next-form-item.next-small .next-checkbox-wrapper,.next-form-item.next-small .next-form-item-label,.next-form-item.next-small .next-form-text-align,.next-form-item.next-small .next-radio-group,.next-form-item.next-small .next-radio-wrapper,.next-form-item.next-small .next-rating,.next-form-item.next-small p{line-height:24px;line-height:var(--form-element-small-height,24px)}.next-form-item.next-small .next-form-preview{font-size:12px;font-size:var(--form-element-small-preview-font-size,12px);line-height:16px;line-height:var(--form-element-small-preview-height,16px)}.next-form-item.next-small .next-form-preview.next-input-textarea>p{font-size:12px;font-size:var(--form-element-small-preview-font-size,12px);text-align:justify;min-height:16.8px;min-height:calc(var(--form-element-small-preview-font-size, 12px)*1.4);line-height:1.4;margin-top:-.4px;margin-top:calc(var(--form-element-small-preview-height, 16px)/2 - var(--form-element-small-preview-font-size, 12px)*1.4/2)}.next-form-item.next-small .next-form-item-label{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-form-item.next-top>.next-form-item-label{margin-bottom:2px;margin-bottom:var(--form-top-label-margin-b,2px)}.next-form-item.next-inset .next-form-item-label{padding-right:0;padding-left:0;line-height:inherit}.next-form-item-control .next-form-text-align{margin:0}.next-form-item-control>.next-input,.next-form-item-control>.next-input-group,.next-form-item-fullwidth .next-form-item-control>.next-date-picker,.next-form-item-fullwidth .next-form-item-control>.next-input,.next-form-item-fullwidth .next-form-item-control>.next-input-group,.next-form-item-fullwidth .next-form-item-control>.next-month-picker,.next-form-item-fullwidth .next-form-item-control>.next-range-picker,.next-form-item-fullwidth .next-form-item-control>.next-select,.next-form-item-fullwidth .next-form-item-control>.next-time-picker,.next-form-item-fullwidth .next-form-item-control>.next-year-picker{width:100%}.next-form-item-fullwidth .next-form-item-control>.next-date-picker2 .next-date-picker2-input input{width:inherit}.next-form-item-label{display:inline-block;vertical-align:top;color:#555;color:var(--form-label-color,#555);text-align:right;padding-right:12px;padding-right:var(--form-label-padding-r,12px)}.next-form-item-label label[required]:before{margin-right:4px;content:"*";color:#c80000;color:var(--form-error-color,#c80000)}.next-form-item-label.has-colon label:after{content:":";position:relative;top:-.5px;margin:0 0 0 2px}.next-form-item-label.next-left{text-align:left}.next-form-item-label.next-left>label[required]:before{display:none}.next-form-item-label.next-left>label[required]:after{margin-left:4px;content:"*";color:#c80000;color:var(--form-error-color,#c80000)}.next-form-item-help{margin-top:4px;margin-top:var(--form-help-margin-top,4px);font-size:12px;font-size:var(--form-help-font-size,12px);line-height:1.5;line-height:var(--font-lineheight-2,1.5);color:#888;color:var(--form-help-color,#888)}.next-form.next-inline .next-form-item{display:inline-block;vertical-align:top}.next-form.next-inline .next-form-item.next-left .next-form-item-control{display:inline-block;vertical-align:top;line-height:0}.next-form.next-inline .next-form-item:not(:last-child){margin-right:20px;margin-right:var(--form-inline-m-item-margin-r,20px)}.next-form.next-inline .next-form-item.next-large:not(:last-child){margin-right:24px;margin-right:var(--form-inline-l-item-margin-r,24px)}.next-form.next-inline .next-form-item.next-small:not(:last-child){margin-right:16px;margin-right:var(--form-inline-s-item-margin-r,16px)}@media screen and (min-width:0\0) and (min-resolution:0.001dpcm){.next-form-item.next-left>.next-form-item-label,.next-form.next-inline .next-form-item.next-left .next-form-item-control{display:table-cell}}.next-form[dir=rtl] .next-form-item-label{text-align:left;padding-left:12px;padding-left:var(--form-label-padding-r,12px);padding-right:0}.next-form[dir=rtl].next-inline .next-form-item:not(:last-child){margin-left:20px;margin-left:var(--form-inline-m-item-margin-r,20px);margin-right:0}.next-form[dir=rtl].next-inline .next-form-item.next-large:not(:last-child){margin-left:24px;margin-left:var(--form-inline-l-item-margin-r,24px);margin-right:0}.next-form[dir=rtl].next-inline .next-form-item.next-small:not(:last-child){margin-left:16px;margin-left:var(--form-inline-s-item-margin-r,16px);margin-right:0}.next-avatar{position:relative;display:inline-block;overflow:hidden;color:#fff;white-space:nowrap;text-align:center;vertical-align:middle;background:#004080;background:var(--color-fill1-4,#004080);width:40px;width:var(--avatar-size-medium,40px);height:40px;height:var(--avatar-size-medium,40px);line-height:40px;line-height:var(--avatar-size-medium,40px);border-radius:50%}.next-avatar-image{background:transparent}.next-avatar-string{position:absolute;left:50%;-webkit-transform-origin:0 center;-ms-transform-origin:0 center;transform-origin:0 center}.next-avatar-large{width:52px;width:var(--avatar-size-large,52px);height:52px;height:var(--avatar-size-large,52px);line-height:52px;line-height:var(--avatar-size-large,52px);border-radius:50%}.next-avatar-large-string{position:absolute;left:50%;-webkit-transform-origin:0 center;-ms-transform-origin:0 center;transform-origin:0 center}.next-avatar-small{width:28px;width:var(--avatar-size-small,28px);height:28px;height:var(--avatar-size-small,28px);line-height:28px;line-height:var(--avatar-size-small,28px);border-radius:50%}.next-avatar-small-string{position:absolute;left:50%;-webkit-transform-origin:0 center;-ms-transform-origin:0 center;transform-origin:0 center}.next-avatar-square{border-radius:2px;border-radius:var(--avatar-border-radius,2px)}.next-avatar>img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.next-select{display:inline-block;position:relative;font-size:0;vertical-align:middle}.next-select,.next-select *,.next-select :after,.next-select :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-select-trigger{min-width:100px;outline:0;-webkit-transition:all .1s linear;transition:all .1s linear}.next-select-trigger .next-input-label{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.next-select-trigger .next-select-values{display:block;width:100%;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow:hidden}.next-select-trigger .next-select-values>em{font-style:inherit}.next-select-trigger .next-select-values input{padding-left:0;padding-right:0}.next-select-trigger .next-input-control{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.next-select-trigger .next-input-control>*{display:inline-block;width:auto}.next-select-trigger .next-input-control>.next-select-arrow{padding-right:0}.next-select-trigger .next-input.next-disabled em{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-select-trigger .next-input.next-disabled .next-select-arrow{cursor:not-allowed}.next-select-trigger .next-select-clear{display:none}.next-select-trigger.next-has-clear:hover .next-select-clear{display:inline-block}.next-select-trigger.next-has-clear:hover .next-select-arrow{display:none}.next-select .next-select-inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;min-width:100px;outline:0;color:#333;color:var(--select-color,#333)}.next-select .next-select-inner .next-tag{line-height:1;margin-right:4px;margin-bottom:3px;padding-left:0;padding-right:0}.next-select .next-select-inner .next-input-inner{width:auto}.next-select-trigger-search{position:relative;display:inline-block;vertical-align:top;overflow:hidden;width:100%;max-width:100%}.next-select-trigger-search>input,.next-select-trigger-search>span{display:block;font-size:inherit;font-family:inherit;letter-spacing:inherit;white-space:nowrap;overflow:hidden}.next-select-trigger-search input{position:absolute;background-color:transparent;width:100%;height:100%!important;z-index:1;left:0;border:0;outline:0;margin:0;padding:0;cursor:inherit}.next-select-trigger-search>span{position:relative;visibility:hidden;white-space:pre;max-width:100%;z-index:-1}.next-select-single.next-no-search{cursor:pointer}.next-select-single.next-has-search.next-active .next-select-values>em{display:none}.next-select-single.next-inactive .next-select-values>em+.next-select-trigger-search,.next-select-single.next-no-search .next-select-values>em+.next-select-trigger-search{width:1px;opacity:0;filter:alpha(opacity=0)}.next-select-single .next-select-values{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-select-single .next-select-values>em{vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.next-select-multiple .next-select-compact{position:relative;white-space:nowrap}.next-select-multiple .next-select-compact .next-select-trigger-search{width:auto}.next-select-multiple .next-select-compact .next-select-tag-compact{position:absolute;top:0;right:0;z-index:1;padding:0 4px 0 16px;color:#333;color:var(--input-text-color,#333);background:linear-gradient(90deg,transparent,#fff 10px);background:linear-gradient(90deg,transparent,var(--input-bg-color,#fff) 10px)}.next-select-multiple .next-disabled .next-select-tag-compact{background:linear-gradient(90deg,transparent,#f7f9fa 10px);background:linear-gradient(90deg,transparent,var(--input-disabled-bg-color,#f7f9fa) 10px)}.next-select-multiple .next-select-values,.next-select-tag .next-select-values{margin-bottom:-3px;height:auto!important}.next-select-multiple .next-select-trigger-search,.next-select-tag .next-select-trigger-search{margin-bottom:3px}.next-select-multiple .next-tag+.next-select-trigger-search,.next-select-tag .next-tag+.next-select-trigger-search{width:auto;min-width:1px}.next-select-multiple .next-input,.next-select-tag .next-input{height:auto;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.next-select-multiple.next-small .next-select-values,.next-select-tag.next-small .next-select-values{min-height:22px;min-height:calc(var(--form-element-small-height, 24px) - 2px);padding-top:2px;padding-top:calc(var(--form-element-small-height, 24px)/2 - var(--select-s-lineheight, 18px)/2 - 1px);padding-bottom:2px;padding-bottom:calc(var(--form-element-small-height, 24px)/2 - var(--select-s-lineheight, 18px)/2 - 1px);line-height:18px;line-height:var(--select-s-lineheight,18px)}.next-select-multiple.next-small .next-select-values-compact,.next-select-tag.next-small .next-select-values-compact{height:24px!important;height:var(--form-element-small-height,24px)!important}.next-select-multiple.next-small .next-tag,.next-select-tag.next-small .next-tag{border:0;padding-top:2px;padding-top:calc(var(--select-s-lineheight, 18px)/2 - 7px);padding-bottom:2px;padding-bottom:calc(var(--select-s-lineheight, 18px)/2 - 7px);height:18px;height:var(--select-s-lineheight,18px)}.next-select-multiple.next-small .next-tag .next-tag-body,.next-select-multiple.next-small .next-tag .next-tag-close-btn,.next-select-tag.next-small .next-tag .next-tag-body,.next-select-tag.next-small .next-tag .next-tag-close-btn{line-height:14px;line-height:calc(var(--select-s-lineheight, 18px) - var(--select-s-lineheight, 18px)/2*2 + 14px)}.next-select-multiple.next-small .next-tag-body,.next-select-tag.next-small .next-tag-body{line-height:18px;line-height:var(--select-s-lineheight,18px)}.next-select-multiple.next-small .next-input-control,.next-select-multiple.next-small .next-input-inner,.next-select-multiple.next-small .next-input-label,.next-select-multiple.next-small .next-select-tag-compact,.next-select-tag.next-small .next-input-control,.next-select-tag.next-small .next-input-inner,.next-select-tag.next-small .next-input-label,.next-select-tag.next-small .next-select-tag-compact{line-height:22px;line-height:calc(var(--form-element-small-height, 24px) - 2px)}.next-select-multiple.next-medium .next-select-values,.next-select-tag.next-medium .next-select-values{min-height:30px;min-height:calc(var(--form-element-medium-height, 32px) - 2px);padding-top:4px;padding-top:calc(var(--form-element-medium-height, 32px)/2 - var(--select-m-lineheight, 22px)/2 - 1px);padding-bottom:4px;padding-bottom:calc(var(--form-element-medium-height, 32px)/2 - var(--select-m-lineheight, 22px)/2 - 1px);line-height:22px;line-height:var(--select-m-lineheight,22px)}.next-select-multiple.next-medium .next-select-values-compact,.next-select-tag.next-medium .next-select-values-compact{height:32px!important;height:var(--form-element-medium-height,32px)!important}.next-select-multiple.next-medium .next-tag,.next-select-tag.next-medium .next-tag{padding-top:2px;padding-top:calc(var(--select-m-lineheight, 22px)/2 - 9px);padding-bottom:2px;padding-bottom:calc(var(--select-m-lineheight, 22px)/2 - 9px);height:22px;height:var(--select-m-lineheight,22px)}.next-select-multiple.next-medium .next-tag .next-tag-body,.next-select-multiple.next-medium .next-tag .next-tag-close-btn,.next-select-tag.next-medium .next-tag .next-tag-body,.next-select-tag.next-medium .next-tag .next-tag-close-btn{line-height:18px;line-height:calc(var(--select-m-lineheight, 22px) - var(--select-m-lineheight, 22px)/2*2 + 18px)}.next-select-multiple.next-medium .next-input-control,.next-select-multiple.next-medium .next-input-inner,.next-select-multiple.next-medium .next-input-label,.next-select-multiple.next-medium .next-select-tag-compact,.next-select-tag.next-medium .next-input-control,.next-select-tag.next-medium .next-input-inner,.next-select-tag.next-medium .next-input-label,.next-select-tag.next-medium .next-select-tag-compact{line-height:30px;line-height:calc(var(--form-element-medium-height, 32px) - 2px)}.next-select-multiple.next-large .next-select-values,.next-select-tag.next-large .next-select-values{min-height:34px;min-height:calc(var(--form-element-large-height, 36px) - 2px);padding-top:6px;padding-top:calc(var(--form-element-large-height, 36px)/2 - var(--select-l-lineheight, 22px)/2 - 1px);padding-bottom:6px;padding-bottom:calc(var(--form-element-large-height, 36px)/2 - var(--select-l-lineheight, 22px)/2 - 1px);line-height:22px;line-height:var(--select-l-lineheight,22px)}.next-select-multiple.next-large .next-select-values-compact,.next-select-tag.next-large .next-select-values-compact{height:36px!important;height:var(--form-element-large-height,36px)!important}.next-select-multiple.next-large .next-tag,.next-select-tag.next-large .next-tag{padding-top:2px;padding-top:calc(var(--select-l-lineheight, 22px)/2 - 9px);padding-bottom:2px;padding-bottom:calc(var(--select-l-lineheight, 22px)/2 - 9px);height:22px;height:var(--select-l-lineheight,22px)}.next-select-multiple.next-large .next-tag .next-tag-body,.next-select-multiple.next-large .next-tag .next-tag-close-btn,.next-select-tag.next-large .next-tag .next-tag-body,.next-select-tag.next-large .next-tag .next-tag-close-btn{line-height:18px;line-height:calc(var(--select-l-lineheight, 22px) - var(--select-l-lineheight, 22px)/2*2 + 18px)}.next-select-multiple.next-large .next-input-control,.next-select-multiple.next-large .next-input-inner,.next-select-multiple.next-large .next-input-label,.next-select-multiple.next-large .next-select-tag-compact,.next-select-tag.next-large .next-input-control,.next-select-tag.next-large .next-input-inner,.next-select-tag.next-large .next-input-label,.next-select-tag.next-large .next-select-tag-compact{line-height:34px;line-height:calc(var(--form-element-large-height, 36px) - 2px)}.next-select-auto-complete{width:160px}.next-select-auto-complete .next-input{width:100%}.next-select-auto-complete .next-input .next-input-hint-wrap{padding-right:1px}.next-select-auto-complete .next-input .next-select-arrow{padding-left:0}.next-select.next-active .next-select-arrow .next-icon-arrow-down{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-select .next-select-unfold-icon:before{content:"";content:var(--select-unfold-icon-content,"")}.next-select-symbol-fold:before{content:"\ea1f";content:var(--select-fold-icon-content,"")}.next-select-arrow{cursor:pointer;width:auto!important;text-align:center;-webkit-transition:all .1s linear;transition:all .1s linear}.next-select-popup-wrap{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-select-popup-wrap,.next-select-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-select-menu-wrapper{max-height:260px;overflow:auto;border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-select-menu-wrapper .next-select-menu{max-height:none;border:none}.next-select-menu{max-height:260px;overflow:auto}.next-select-menu .next-select-menu-empty-content{padding-left:8px;padding-right:8px;color:#888;color:var(--select-hint-color,#888)}.next-select-menu.next-select-auto-complete-menu.next-select-menu-empty{display:none}.next-select-menu .next-menu-item-text .next-icon{vertical-align:middle}.next-select-all{display:block;cursor:pointer;padding:0 8px;margin:0 12px 8px;border-bottom:1px solid #c0c6cc;border-bottom:1px solid var(--color-line1-2,#c0c6cc)}.next-select-all:hover{color:#0064c8;color:var(--color-link-3,#0064c8)}.next-select-all .next-menu-icon-selected.next-icon{display:inline-block!important;top:auto;color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-select-highlight{color:#0064c8;color:var(--select-highlight-color,#0064c8);font-size:12px;font-size:var(--select-highlight-font,12px)}.next-select-in-ie.next-select-trigger .next-select-values{overflow:visible}.next-select-in-ie.next-select-trigger .next-input-control,.next-select-in-ie.next-select-trigger .next-input-label{width:1px}.next-select-in-ie.next-select-trigger .next-input-control>*{display:table-cell;width:1%}.next-select-in-ie.next-select-trigger .next-select-arrow{display:table-cell}.next-select-in-ie.next-select-trigger .next-select-clear{display:none}.next-select-in-ie.next-select-trigger.next-select-multiple .next-select-inner,.next-select-in-ie.next-select-trigger.next-select-tag .next-select-inner{vertical-align:top}.next-select-in-ie.next-select-trigger .next-select-inner,.next-select-in-ie.next-select-trigger.next-select-single .next-select-values{display:inline-table}.next-select-in-ie.next-select-trigger.next-select-single .next-input.next-small .next-select-values{line-height:24px;line-height:var(--form-element-small-height,24px)}.next-select-in-ie.next-select-trigger.next-select-single .next-input.next-medium .next-select-values{line-height:32px;line-height:var(--form-element-medium-height,32px)}.next-select-in-ie.next-select-trigger.next-select-single .next-input.next-large .next-select-values{line-height:36px;line-height:var(--form-element-large-height,36px)}.next-select-in-ie.next-select-trigger .next-select-trigger-search>span{max-width:100px}.next-select-in-ie.next-select-trigger.next-select-single.next-select-in-ie-fixwidth .next-select-values{position:relative}.next-select-in-ie.next-select-trigger.next-select-single.next-select-in-ie-fixwidth .next-select-values>em{position:absolute;display:inline-block;height:100%;line-height:1;vertical-align:middle;overflow:hidden;left:4px;right:0;top:30%}.next-select-in-ie.next-select-trigger.next-select-single.next-inactive .next-select-values>em+.next-select-trigger-search,.next-select-in-ie.next-select-trigger.next-select-single.next-no-search .next-select-values>em+.next-select-trigger-search{filter:alpha(opacity=0);font-size:0}.next-select-in-ie.next-select-trigger.next-no-search .next-select-trigger-search input{color:inherit}@media screen and (-webkit-min-device-pixel-ratio:0){.next-select-multiple .next-select-compact .next-select-tag-compact{background:linear-gradient(90deg,hsla(0,0%,100%,0),#fff 10px);background:linear-gradient(90deg,hsla(0,0%,100%,0),var(--input-bg-color,#fff) 10px)}.next-select-multiple .next-disabled .next-select-tag-compact{background:linear-gradient(90deg,hsla(0,0%,100%,0),#f7f9fa 10px);background:linear-gradient(90deg,hsla(0,0%,100%,0),var(--input-disabled-bg-color,#f7f9fa) 10px)}}.next-select.next-select-multiple[dir=rtl] .next-select-compact .next-select-tag-compact{left:0;right:auto;padding:0 16px 0 4px;background:linear-gradient(270deg,hsla(0,0%,100%,0),#fff 10px);background:linear-gradient(270deg,hsla(0,0%,100%,0),var(--input-bg-color,#fff) 10px)}.next-list-header{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) solid var(--list-divider-color,#c0c6cc);color:#111;color:var(--list-title-color,#111)}.next-list-footer{border-top:1px solid #c0c6cc;border-top:var(--line-1,1px) solid var(--list-divider-color,#c0c6cc);color:#555;color:var(--list-content-color,#555)}.next-list-loading.next-loading{display:block}.next-list-empty{font-size:12px;font-size:var(--font-size-body-1,12px);color:#d1d5d9;color:var(--color-line1-4,#d1d5d9);padding:32px 0;text-align:center}.next-list-items{margin:0;padding:0;list-style:none}.next-list-item{display:table;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;color:#555;color:var(--list-content-color,#555)}.next-list-item-extra,.next-list-item-media{display:table-cell;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;min-width:1px;-ms-flex-negative:0;flex-shrink:0;vertical-align:top}.next-list-item-extra{color:#888;color:var(--list-extra-color,#888)}.next-list-item-content{display:table-cell;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;vertical-align:middle}.next-list-item-title{color:#111;color:var(--list-title-color,#111)}.next-list-medium .next-list-header{font-size:16px;font-size:var(--list-size-m-title-font-size,16px);font-weight:700;font-weight:var(--list-size-m-title-font-weight,bold)}.next-list-medium .next-list-footer,.next-list-medium .next-list-header{padding:16px 0;padding:var(--list-size-m-item-padding-tb,16px) var(--list-size-m-item-padding-lr,0)}.next-list-medium .next-list-item-media{padding-right:8px;padding-right:var(--list-size-m-item-media-margin,8px)}.next-list-medium .next-list-item-extra{padding-left:8px;padding-left:var(--list-size-m-item-media-margin,8px)}.next-list-medium .next-list-item{font-size:14px;font-size:var(--list-size-m-item-content-font-size,14px);line-height:1.5;line-height:var(--list-size-m-item-content-line-height,1.5);padding:16px 0;padding:var(--list-size-m-item-padding-tb,16px) var(--list-size-m-item-padding-lr,0)}.next-list-medium .next-list-item-title{font-weight:400;font-weight:var(--list-size-m-item-title-font-weight,normal);font-size:14px;font-size:var(--list-size-m-item-title-font-size,14px);line-height:1.5;line-height:var(--list-size-m-item-title-line-height,1.5)}.next-list-small .next-list-header{font-size:14px;font-size:var(--list-size-s-title-font-size,14px);font-weight:700;font-weight:var(--list-size-s-title-font-weight,bold)}.next-list-small .next-list-footer,.next-list-small .next-list-header{padding:8px 0;padding:var(--list-size-s-item-padding-tb,8px) var(--list-size-s-item-padding-lr,0)}.next-list-small .next-list-item-media{padding-right:8px;padding-right:var(--list-size-s-item-media-margin,8px)}.next-list-small .next-list-item-extra{padding-left:8px;padding-left:var(--list-size-s-item-media-margin,8px)}.next-list-small .next-list-item{font-size:12px;font-size:var(--list-size-s-item-content-font-size,12px);font-weight:400;font-weight:var(--list-size-s-item-title-font-weight,normal);line-height:1;line-height:var(--list-size-s-item-content-line-height,1);padding:8px 0;padding:var(--list-size-s-item-padding-tb,8px) var(--list-size-s-item-padding-lr,0)}.next-list-small .next-list-item-title{font-size:14px;font-size:var(--list-size-s-item-title-font-size,14px);line-height:1.5;line-height:var(--list-size-s-item-title-line-height,1.5)}.next-list-divider .next-list-item{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) solid var(--list-divider-color,#c0c6cc)}.next-list-divider .next-list-item:last-child{border-bottom:none}.next-list[dir=rtl] .next-list-item-media{padding-left:8px;padding-left:var(--list-size-m-item-media-margin,8px);padding-right:0}.next-list[dir=rtl] .next-list-item-extra{padding-right:8px;padding-right:var(--list-size-m-item-media-margin,8px);padding-left:0}.next-list[dir=rtl] .next-list-small .next-list-item-media{padding-left:8px;padding-left:var(--list-size-s-item-media-margin,8px);padding-right:0}.next-list[dir=rtl] .next-list-small .next-list-item-extra{padding-right:8px;padding-right:var(--list-size-s-item-media-margin,8px);padding-left:0}.next-menu-btn{display:inline-block;-webkit-box-shadow:none;box-shadow:none}.next-menu-btn-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-menu-btn .next-icon{-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.next-menu-btn .next-menu-btn-arrow:before{content:"\ea1f";content:var(--menu-btn-fold-icon-content,"")}.next-menu-btn.next-expand .next-menu-btn-arrow{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-menu-btn-symbol-unfold:before{content:"";content:var(--menu-btn-unfold-icon-content,"")}.next-menu-btn.next-btn-normal .next-menu-btn-arrow{color:#666;color:var(--menu-btn-pure-text-normal-icon-color,#666)}.next-menu-btn.next-btn-normal:hover .next-menu-btn-arrow{color:#333;color:var(--btn-pure-normal-color-hover,#333)}.next-menu-btn.next-btn-secondary .next-menu-btn-arrow{color:#666;color:var(--menu-btn-pure-text-secondary-icon-color,#666)}.next-menu-btn.next-btn-secondary:hover .next-menu-btn-arrow{color:#333;color:var(--btn-pure-secondary-color-hover,#333)}.next-menu-btn.next-btn-secondary.next-btn-text:hover .next-menu-btn-arrow{color:#333;color:var(--btn-text-secondary-color-hover,#333)}.next-menu-btn.next-btn-primary .next-menu-btn-arrow{color:#fff;color:var(--menu-btn-pure-text-primary-icon-color,#fff)}.next-menu-btn.next-btn-primary:hover .next-menu-btn-arrow{color:#fff;color:var(--btn-pure-primary-color-hover,#fff)}.next-menu-btn.next-btn-text.next-btn-normal .next-menu-btn-arrow{color:#111;color:var(--menu-btn-text-text-normal-icon-color,#111)}.next-menu-btn.next-btn-text.next-btn-normal:hover .next-menu-btn-arrow{color:#0064c8;color:var(--btn-text-normal-color-hover,#0064c8)}.next-menu-btn.next-btn-text.next-btn-primary .next-menu-btn-arrow{color:#0064c8;color:var(--menu-btn-text-text-primary-icon-color,#0064c8)}.next-menu-btn.next-btn-text.next-btn-primary:hover .next-menu-btn-arrow{color:#0064c8;color:var(--btn-text-primary-color-hover,#0064c8)}.next-menu-btn.next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:#0064c8;color:var(--menu-btn-ghost-light-icon-color,#0064c8)}.next-menu-btn.next-btn-ghost.next-btn-light:hover .next-menu-btn-arrow{color:#fff;color:var(--btn-ghost-light-color-hover,#fff)}.next-menu-btn.next-btn-ghost.next-btn-dark .next-menu-btn-arrow{color:#fff;color:var(--menu-btn-ghost-dark-icon-color,#fff)}.next-menu-btn.next-btn-ghost.next-btn-dark:hover .next-menu-btn-arrow{color:#fff;color:var(--btn-ghost-dark-color-hover,#fff)}.next-menu-btn.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text[disabled] .next-menu-btn-arrow,.next-menu-btn[disabled] .next-menu-btn-arrow{color:#c1c1c1;color:var(--menu-btn-disabled-icon-color,#c1c1c1)}.next-menu-btn[disabled].next-btn-ghost.next-btn-dark .next-menu-btn-arrow{color:hsla(0,0%,100%,.25);color:var(--menu-btn-ghost-dark-disabled-icon-color,hsla(0,0%,100%,.25))}.next-menu-btn[disabled].next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:#c1c1c1;color:var(--menu-btn-ghost-light-disabled-icon-color,#c1c1c1)}.next-nav{min-width:auto;border-radius:0}.next-nav,.next-nav *,.next-nav :after,.next-nav :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-nav-icon.next-icon{margin-right:4px;font-weight:inherit}.next-nav-icon.next-icon .next-icon-remote,.next-nav-icon.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-nav-group-label{height:40px;height:var(--nav-group-height,40px);line-height:40px;line-height:var(--nav-group-height,40px);font-size:12px;font-size:var(--nav-group-font-size,12px)}.next-nav-item .next-menu-item-text>span,.next-nav-item .next-nav-group-label>span{opacity:1;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.next-nav-item .next-menu-item-text>a{text-decoration:none;color:inherit}.next-nav-item.next-focused .next-menu-hoz-icon-arrow.next-icon,.next-nav-item.next-focused .next-menu-icon-arrow.next-icon,.next-nav-item .next-menu-hoz-icon-arrow.next-icon,.next-nav-item .next-menu-icon-arrow.next-icon,.next-nav-item.next-opened .next-menu-hoz-icon-arrow.next-icon,.next-nav-item.next-opened .next-menu-icon-arrow.next-icon,.next-nav-item.next-selected .next-menu-hoz-icon-arrow.next-icon,.next-nav-item.next-selected .next-menu-icon-arrow.next-icon,.next-nav-item:hover .next-menu-hoz-icon-arrow.next-icon,.next-nav-item:hover .next-menu-icon-arrow.next-icon{color:inherit;top:0;-webkit-transform-origin:center 50%;-ms-transform-origin:center 50%;transform-origin:center 50%}.next-nav.next-active .next-nav-item:before{position:absolute;-webkit-transition:all .3s ease;transition:all .3s ease;content:""}.next-nav.next-hoz{padding:0;height:44px;height:calc(var(--nav-hoz-height, 44px) + var(--nav-hoz-item-margin-tb, 0px)*2);line-height:42px;line-height:calc(var(--nav-hoz-height, 44px) - var(--popup-local-border-width, 1px)*2);font-size:12px;font-size:var(--nav-hoz-font-size,12px)}.next-nav.next-hoz .next-menu-item.next-nav-item{margin-left:0;margin-left:var(--nav-hoz-item-margin-lr,0);margin-right:0;margin-right:var(--nav-hoz-item-margin-lr,0);padding:0 20px;padding:0 var(--nav-hoz-item-padding-lr,20px);border-radius:0;border-radius:var(--nav-hoz-item-corner,0)}.next-nav.next-hoz .next-menu-item,.next-nav.next-hoz .next-menu-sub-menu-wrapper>.next-menu-item{margin-top:0;margin-top:var(--nav-hoz-item-margin-tb,0);margin-bottom:0;margin-bottom:var(--nav-hoz-item-margin-tb,0)}.next-nav.next-hoz .next-menu-item-inner{height:42px;height:calc(var(--nav-hoz-height, 44px) - var(--popup-local-border-width, 1px)*2);font-size:12px;font-size:var(--nav-hoz-font-size,12px)}.next-nav.next-hoz .next-nav-group-label .next-menu-item-inner{height:40px;height:var(--nav-group-height,40px);line-height:40px;line-height:var(--nav-group-height,40px);font-size:12px;font-size:var(--nav-group-font-size,12px)}.next-nav.next-hoz .next-menu-header{float:left}.next-nav.next-hoz .next-menu-footer,.next-nav.next-hoz .next-menu-header{height:42px;height:calc(var(--nav-hoz-height, 44px) - var(--popup-local-border-width, 1px)*2)}.next-nav.next-hoz .next-menu-footer{float:right}.next-nav.next-hoz .next-nav-item:before{width:0;left:50%;height:2px;height:var(--nav-hoz-item-selected-active-line,2px)}.next-nav.next-hoz .next-nav-item:hover:before{height:0;height:var(--nav-hoz-item-hover-active-line,0)}.next-nav.next-hoz.next-top .next-nav-item:before{top:-1px;top:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-hoz.next-bottom .next-nav-item:before{bottom:-1px;bottom:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-hoz .next-selected.next-nav-item:before{width:100%;left:0;height:2px;height:var(--nav-hoz-item-selected-active-line,2px)}.next-nav.next-ver{padding:0;-webkit-transition:width .3s ease;transition:width .3s ease;line-height:40px;line-height:var(--nav-ver-height,40px);font-size:12px;font-size:var(--nav-ver-font-size,12px)}.next-nav.next-ver .next-menu-item.next-nav-item{margin-left:0;margin-left:var(--nav-ver-item-margin-lr,0);margin-right:0;margin-right:var(--nav-ver-item-margin-lr,0);padding:0 20px;padding:0 var(--nav-ver-item-padding-lr,20px);border-radius:0;border-radius:var(--nav-ver-item-corner,0)}.next-nav.next-ver .next-menu-item:not(:first-child),.next-nav.next-ver .next-menu-sub-menu-wrapper:not(:first-child)>.next-menu-item{margin-top:0;margin-top:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver .next-menu-item:not(:last-child),.next-nav.next-ver .next-menu-sub-menu-wrapper:not(:last-child)>.next-menu-item{margin-bottom:0;margin-bottom:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver .next-menu-item-inner{height:40px;height:var(--nav-ver-height,40px);font-size:12px;font-size:var(--nav-ver-font-size,12px)}.next-nav.next-ver .next-nav-group-label .next-menu-item-inner{height:40px;height:var(--nav-group-height,40px);line-height:40px;line-height:var(--nav-group-height,40px);font-size:12px;font-size:var(--nav-group-font-size,12px)}.next-nav.next-ver>.next-menu-item:first-child,.next-nav.next-ver>.next-menu-sub-menu-wrapper:first-child>.next-menu-item{margin-top:0;margin-top:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver>.next-menu-item:last-child,.next-nav.next-ver>.next-menu-sub-menu-wrapper:last-child>.next-menu-item{margin-bottom:0;margin-bottom:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver .next-menu-sub-menu{line-height:40px;line-height:var(--nav-ver-sub-nav-height,40px)}.next-nav.next-ver .next-menu-sub-menu .next-menu-item-inner{height:40px;height:var(--nav-ver-sub-nav-height,40px);font-size:12px;font-size:var(--nav-ver-sub-nav-font-size,12px)}.next-nav.next-ver .next-nav-item:before{height:0;top:50%;width:2px;width:var(--nav-ver-item-selected-active-line,2px)}.next-nav.next-ver .next-nav-item:hover:before{width:0;width:var(--nav-ver-item-hover-active-line,0)}.next-nav.next-ver.next-left .next-nav-item:before,.next-nav.next-ver.next-top .next-nav-item:before{left:-1px;left:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-ver.next-bottom .next-nav-item:before,.next-nav.next-ver.next-right .next-nav-item:before{right:-1px;right:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-ver .next-selected.next-nav-item:before{height:100%;top:0;width:2px;width:var(--nav-ver-item-selected-active-line,2px)}.next-nav.next-primary{border-width:0;border-width:var(--nav-primary-border-width,0);background:#111;background:var(--nav-primary-bg-color,#111);border-color:#111;border-color:var(--nav-primary-border-color,#111);color:#fff;color:var(--nav-primary-text-color,#fff);font-weight:400;font-weight:var(--nav-primary-text-style,normal);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--nav-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--nav-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16))}.next-nav.next-primary.next-hoz{line-height:var(--nav-hoz-height,44px);line-height:44px;line-height:calc(var(--nav-hoz-height, 44px) - var(--nav-primary-border-width, 0px)*2)}.next-nav.next-primary.next-hoz .next-menu-footer,.next-nav.next-primary.next-hoz .next-menu-header,.next-nav.next-primary.next-hoz .next-menu-item-inner{line-height:44px;line-height:var(--nav-hoz-height,44px);height:44px;height:calc(var(--nav-hoz-height, 44px) - var(--nav-primary-border-width, 0px)*2)}.next-nav.next-primary.next-hoz.next-top .next-nav-item:before{top:0;top:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary.next-hoz.next-bottom .next-nav-item:before{bottom:0;bottom:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary.next-ver.next-left .next-nav-item:before{left:0;left:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary.next-ver.next-right .next-nav-item:before{right:0;right:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary .next-nav-item.next-menu-item{background:#111;background:var(--nav-primary-bg-color,#111);color:#fff;color:var(--nav-primary-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-focused,.next-nav.next-primary .next-nav-item.next-menu-item:hover{background:#000;background:var(--nav-primary-item-hover-bg-color,#000);color:#fff;color:var(--nav-primary-item-hover-text-color,#fff);font-weight:400;font-weight:var(--nav-primary-item-hover-text-style,normal)}.next-nav.next-primary .next-nav-item.next-menu-item.next-selected{background:#000;background:var(--nav-primary-item-selected-bg-color,#000);color:#fff;color:var(--nav-primary-item-selected-text-color,#fff);font-weight:700;font-weight:var(--nav-primary-item-selected-text-style,bold)}.next-nav.next-primary .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-primary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-primary-item-opened-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-primary-item-childselected-text-style,normal);background:transparent;background:var(--nav-primary-item-childselected-bg-color,transparent);color:#fff;color:var(--nav-primary-item-childselected-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#fff;color:var(--nav-primary-item-opened-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#fff;color:var(--nav-primary-item-childselected-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item:before{background:#0064c8;background:var(--nav-primary-item-selected-active-color,#0064c8)}.next-nav.next-primary .next-nav-item.next-menu-item:hover:before{background:#0064c8;background:var(--nav-primary-item-hover-active-color,#0064c8)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-primary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-primary-item-opened-text-color,#fff)}.next-nav.next-primary .next-nav-group-label{color:#888;color:var(--nav-primary-group-text-color,#888);font-weight:400;font-weight:var(--nav-primary-group-text-style,normal)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item{background:#111;background:var(--nav-primary-sub-nav-bg-color,#111);color:#fff;color:var(--nav-primary-sub-nav-text-color,#fff);font-weight:400;font-weight:var(--nav-primary-sub-nav-text-style,normal)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-primary .next-menu-sub-menu .next-menu-item:hover{background:#000;background:var(--nav-primary-sub-nav-hover-bg-color,#000);color:#fff;color:var(--nav-primary-sub-nav-hover-text-color,#fff)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item.next-selected{background:#000;background:var(--nav-primary-sub-nav-selected-bg-color,#000);color:#fff;color:var(--nav-primary-sub-nav-selected-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#c1c1c1;color:var(--nav-primary-item-disabled-text-color,#c1c1c1);cursor:not-allowed}.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#c1c1c1;color:var(--nav-primary-item-disabled-text-color,#c1c1c1)}.next-nav.next-secondary{border-width:0;border-width:var(--nav-secondary-border-width,0);background:#0064c8;background:var(--nav-secondary-bg-color,#0064c8);border-color:#0064c8;border-color:var(--nav-secondary-border-color,#0064c8);color:#fff;color:var(--nav-secondary-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-text-style,normal);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--nav-secondary-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--nav-secondary-shadow,0 4px 8px 0 rgba(0,0,0,.16))}.next-nav.next-secondary.next-hoz{line-height:var(--nav-hoz-height,44px);line-height:44px;line-height:calc(var(--nav-hoz-height, 44px) - var(--nav-secondary-border-width, 0px)*2)}.next-nav.next-secondary.next-hoz .next-menu-footer,.next-nav.next-secondary.next-hoz .next-menu-header,.next-nav.next-secondary.next-hoz .next-menu-item-inner{line-height:44px;line-height:var(--nav-hoz-height,44px);height:44px;height:calc(var(--nav-hoz-height, 44px) - var(--nav-secondary-border-width, 0px)*2)}.next-nav.next-secondary.next-hoz.next-top .next-nav-item:before{top:0;top:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary.next-hoz.next-bottom .next-nav-item:before{bottom:0;bottom:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary.next-ver.next-left .next-nav-item:before{left:0;left:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary.next-ver.next-right .next-nav-item:before{right:0;right:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary .next-nav-item.next-menu-item{background:#0064c8;background:var(--nav-secondary-bg-color,#0064c8);color:#fff;color:var(--nav-secondary-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-focused,.next-nav.next-secondary .next-nav-item.next-menu-item:hover{background:#002850;background:var(--nav-secondary-item-hover-bg-color,#002850);color:#fff;color:var(--nav-secondary-item-hover-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-item-hover-text-style,normal)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-selected{background:#002850;background:var(--nav-secondary-item-selected-bg-color,#002850);color:#fff;color:var(--nav-secondary-item-selected-text-color,#fff);font-weight:700;font-weight:var(--nav-secondary-item-selected-text-style,bold)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-secondary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-secondary-item-opened-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-secondary-item-childselected-text-style,normal);background:transparent;background:var(--nav-secondary-item-childselected-bg-color,transparent);color:#fff;color:var(--nav-secondary-item-childselected-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#fff;color:var(--nav-secondary-item-opened-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#fff;color:var(--nav-secondary-item-childselected-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item:before{background:#002850;background:var(--nav-secondary-item-selected-active-color,#002850)}.next-nav.next-secondary .next-nav-item.next-menu-item:hover:before{background:#002850;background:var(--nav-secondary-item-hover-active-color,#002850)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-secondary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-secondary-item-opened-text-color,#fff)}.next-nav.next-secondary .next-nav-group-label{color:#fff;color:var(--nav-secondary-group-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-group-text-style,normal)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item{background:#0064c8;background:var(--nav-secondary-sub-nav-bg-color,#0064c8);color:#fff;color:var(--nav-secondary-sub-nav-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-sub-nav-text-style,normal)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-secondary .next-menu-sub-menu .next-menu-item:hover{background:#002850;background:var(--nav-secondary-sub-nav-hover-bg-color,#002850);color:#fff;color:var(--nav-secondary-sub-nav-hover-text-color,#fff)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item.next-selected{background:#002850;background:var(--nav-secondary-sub-nav-selected-bg-color,#002850);color:#fff;color:var(--nav-secondary-sub-nav-selected-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#f7f9fa;color:var(--nav-secondary-item-disabled-text-color,#f7f9fa);cursor:not-allowed}.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#f7f9fa;color:var(--nav-secondary-item-disabled-text-color,#f7f9fa)}.next-nav.next-normal{border-color:#e3e4e6;border-color:var(--nav-normal-border-color,#e3e4e6);font-weight:400;font-weight:var(--nav-normal-text-style,normal);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--nav-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--nav-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16))}.next-nav.next-normal,.next-nav.next-normal .next-nav-item.next-menu-item{background:#fff;background:var(--nav-normal-bg-color,#fff);color:#111;color:var(--nav-normal-text-color,#111)}.next-nav.next-normal .next-nav-item.next-menu-item.next-focused,.next-nav.next-normal .next-nav-item.next-menu-item:hover{background:#fff;background:var(--nav-normal-item-hover-bg-color,#fff);color:#0064c8;color:var(--nav-normal-item-hover-text-color,#0064c8);font-weight:400;font-weight:var(--nav-normal-item-hover-text-style,normal)}.next-nav.next-normal .next-nav-item.next-menu-item.next-selected{background:#f7f9fa;background:var(--nav-normal-item-selected-bg-color,#f7f9fa);color:#0064c8;color:var(--nav-normal-item-selected-text-color,#0064c8);font-weight:700;font-weight:var(--nav-normal-item-selected-text-style,bold)}.next-nav.next-normal .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-normal-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-normal-item-opened-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-normal-item-childselected-text-style,normal);background:transparent;background:var(--nav-normal-item-childselected-bg-color,transparent);color:#0064c8;color:var(--nav-normal-item-childselected-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#0064c8;color:var(--nav-normal-item-opened-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#0064c8;color:var(--nav-normal-item-childselected-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item:before{background:#0064c8;background:var(--nav-normal-item-selected-active-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item:hover:before{background:#0064c8;background:var(--nav-normal-item-hover-active-color,#0064c8)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-normal-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-normal-item-opened-text-color,#0064c8)}.next-nav.next-normal .next-nav-group-label{color:#888;color:var(--nav-normal-group-text-color,#888);font-weight:400;font-weight:var(--nav-normal-group-text-style,normal)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item{background:#fff;background:var(--nav-normal-sub-nav-bg-color,#fff);color:#111;color:var(--nav-normal-sub-nav-text-color,#111);font-weight:400;font-weight:var(--nav-normal-sub-nav-text-style,normal)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-normal .next-menu-sub-menu .next-menu-item:hover{background:#f7f9fa;background:var(--nav-normal-sub-nav-hover-bg-color,#f7f9fa);color:#0064c8;color:var(--nav-normal-sub-nav-hover-text-color,#0064c8)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item.next-selected{background:#f7f9fa;background:var(--nav-normal-sub-nav-selected-bg-color,#f7f9fa);color:#0064c8;color:var(--nav-normal-sub-nav-selected-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#888;color:var(--nav-normal-item-disabled-text-color,#888);cursor:not-allowed}.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#888;color:var(--nav-normal-item-disabled-text-color,#888)}.next-nav.next-line{background:transparent;background:var(--nav-line-bg-color,transparent);border-color:#c0c6cc;border-color:var(--nav-line-border-color,#c0c6cc);color:#111;color:var(--nav-line-text-color,#111);font-weight:400;font-weight:var(--nav-line-text-style,normal);-webkit-box-shadow:none;box-shadow:none}.next-nav.next-line.next-hoz{border-right-color:transparent;border-right-color:var(--nav-line-bg-color,transparent)}.next-nav.next-line.next-hoz,.next-nav.next-line.next-ver{border-top-color:transparent;border-top-color:var(--nav-line-bg-color,transparent);border-left-color:transparent;border-left-color:var(--nav-line-bg-color,transparent)}.next-nav.next-line.next-ver{border-bottom-color:transparent;border-bottom-color:var(--nav-line-bg-color,transparent)}.next-nav.next-line .next-nav-item.next-menu-item{background:transparent;background:var(--nav-line-bg-color,transparent);color:#111;color:var(--nav-line-text-color,#111)}.next-nav.next-line .next-nav-item.next-menu-item.next-focused,.next-nav.next-line .next-nav-item.next-menu-item:hover{background:transparent;background:var(--nav-line-item-hover-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-hover-text-color,#0064c8);font-weight:400;font-weight:var(--nav-line-item-hover-text-style,normal)}.next-nav.next-line .next-nav-item.next-menu-item.next-selected{background:transparent;background:var(--nav-line-item-selected-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-selected-text-color,#0064c8);font-weight:700;font-weight:var(--nav-line-item-selected-text-style,bold)}.next-nav.next-line .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-line-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-opened-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-line-item-childselected-text-style,normal);background:transparent;background:var(--nav-line-item-childselected-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-childselected-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#0064c8;color:var(--nav-line-item-opened-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#0064c8;color:var(--nav-line-item-childselected-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item:before{background:#0064c8;background:var(--nav-line-item-selected-active-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item:hover:before{background:#0064c8;background:var(--nav-line-item-hover-active-color,#0064c8)}.next-nav.next-line .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-line-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-opened-text-color,#0064c8)}.next-nav.next-line .next-nav-group-label{color:#888;color:var(--nav-line-group-text-color,#888);font-weight:400;font-weight:var(--nav-line-group-text-style,normal)}.next-nav.next-line .next-menu-sub-menu .next-menu-item{background:transparent;background:var(--nav-line-sub-nav-bg-color,transparent);color:#111;color:var(--nav-line-sub-nav-text-color,#111);font-weight:400;font-weight:var(--nav-line-sub-nav-text-style,normal)}.next-nav.next-line .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-line .next-menu-sub-menu .next-menu-item:hover{background:transparent;background:var(--nav-line-sub-nav-hover-bg-color,transparent);color:#0064c8;color:var(--nav-line-sub-nav-hover-text-color,#0064c8)}.next-nav.next-line .next-menu-sub-menu .next-menu-item.next-selected{background:transparent;background:var(--nav-line-sub-nav-selected-bg-color,transparent);color:#0064c8;color:var(--nav-line-sub-nav-selected-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-disabled,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#888;color:var(--nav-line-item-disabled-text-color,#888);cursor:not-allowed}.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#888;color:var(--nav-line-item-disabled-text-color,#888)}.next-nav.next-icon-only.next-custom-icon-only-width{text-align:center}.next-nav.next-icon-only .next-menu-item-inner{text-overflow:clip}.next-nav.next-icon-only.next-normal .next-nav-icon.next-icon{margin-left:0;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--popup-local-border-width, 1px));margin-right:0;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--popup-local-border-width, 1px))}.next-nav.next-icon-only.next-normal .next-nav-icon.next-icon .next-icon-remote,.next-nav.next-icon-only.next-normal .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only.next-primary .next-nav-icon.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-primary-border-width, 0px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-primary-border-width, 0px))}.next-nav.next-icon-only.next-primary .next-nav-icon.next-icon .next-icon-remote,.next-nav.next-icon-only.next-primary .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only.next-secondary .next-nav-icon.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-secondary-border-width, 0px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-secondary-border-width, 0px))}.next-nav.next-icon-only.next-secondary .next-nav-icon.next-icon .next-icon-remote,.next-nav.next-icon-only.next-secondary .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only .next-nav-icon-only-arrow.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));-webkit-transition:all .1s linear;transition:all .1s linear;-webkit-transform-origin:center 50%;-ms-transform-origin:center 50%;transform-origin:center 50%}.next-nav.next-icon-only .next-nav-icon-only-arrow.next-icon .next-icon-remote,.next-nav.next-icon-only .next-nav-icon-only-arrow.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px))}.next-nav.next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down .next-icon-remote,.next-nav.next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only .next-nav-item.next-selected .next-nav-icon.next-icon{-webkit-animation:pulse .3s cubic-bezier(.23,1,.32,1);animation:pulse .3s cubic-bezier(.23,1,.32,1)}.next-nav.next-icon-only .next-menu-hoz-icon-arrow,.next-nav.next-icon-only .next-menu-icon-arrow{display:none}.next-nav-embeddable.next-normal,.next-nav-embeddable.next-primary,.next-nav-embeddable.next-secondary{height:100%;background:transparent;-webkit-box-shadow:none;box-shadow:none;border:none}.next-nav-embeddable.next-normal .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-normal .next-nav-item.next-menu-item,.next-nav-embeddable.next-primary .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-primary .next-nav-item.next-menu-item,.next-nav-embeddable.next-secondary .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-secondary .next-nav-item.next-menu-item{background:transparent}.next-nav-embeddable.next-normal.next-icon-only .next-nav-icon.next-icon,.next-nav-embeddable.next-primary.next-icon-only .next-nav-icon.next-icon,.next-nav-embeddable.next-secondary.next-icon-only .next-nav-icon.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px))}.next-nav-embeddable.next-normal.next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav-embeddable.next-normal.next-icon-only .next-nav-icon.next-icon:before,.next-nav-embeddable.next-primary.next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav-embeddable.next-primary.next-icon-only .next-nav-icon.next-icon:before,.next-nav-embeddable.next-secondary.next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav-embeddable.next-secondary.next-icon-only .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav-embeddable.next-nav.next-hoz .next-menu-item-inner,.next-nav-embeddable.next-nav.next-hoz .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-nav.next-hoz .next-nav-item.next-menu-item{height:100%}.next-nav-embeddable,.next-nav-embeddable .next-nav-item.next-disabled,.next-nav-embeddable .next-nav-item.next-disabled .next-menu-item-text>a{background:transparent;border:none}.next-nav[dir=rtl] .next-nav-icon.next-icon{margin-left:4px;margin-right:0}.next-nav[dir=rtl] .next-nav-icon.next-icon .next-icon-remote,.next-nav[dir=rtl] .next-nav-icon.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-nav[dir=rtl].next-hoz .next-menu-header{float:right}.next-nav[dir=rtl].next-hoz .next-menu-footer{float:left}.next-nav[dir=rtl].next-hoz .next-nav-item:before{width:0;left:50%}.next-nav[dir=rtl].next-hoz .next-selected.next-nav-item:before{width:100%;left:auto;right:0}.next-nav[dir=rtl].next-ver.next-left .next-nav-item:before{right:0;right:-1px;right:calc(0px - var(--popup-local-border-width, 1px));left:auto}.next-nav[dir=rtl].next-ver.next-right .next-nav-item:before{left:0;left:-1px;left:calc(0px - var(--popup-local-border-width, 1px));right:auto}.next-nav[dir=rtl].next-primary.next-ver.next-left .next-nav-item:before{right:0;right:calc(0px - var(--nav-primary-border-width, 0px));left:auto}.next-nav[dir=rtl].next-primary.next-ver.next-right .next-nav-item:before{left:0;left:calc(0px - var(--nav-primary-border-width, 0px));right:auto}.next-nav[dir=rtl].next-secondary.next-ver.next-left .next-nav-item:before{right:0;right:calc(0px - var(--nav-secondary-border-width, 0px));left:auto}.next-nav[dir=rtl].next-secondary.next-ver.next-right .next-nav-item:before{left:0;left:calc(0px - var(--nav-secondary-border-width, 0px));right:auto}.next-nav[dir=rtl] .next-nav.next-line.next-ver{border-top-color:transparent;border-top-color:var(--nav-line-bg-color,transparent);border-right-color:transparent;border-right-color:var(--nav-line-bg-color,transparent);border-left-color:transparent;border-bottom-color:transparent;border-bottom-color:var(--nav-line-bg-color,transparent)}.next-nav[dir=rtl].next-icon-only .next-nav-icon-only-arrow.next-icon,.next-nav[dir=rtl].next-icon-only .next-nav-icon.next-icon,.next-nav[dir=rtl].next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down{margin-left:0;margin-right:1px;margin-right:calc(9px - var(--nav-icon-only-font-size, 16px)/2)}.next-nav[dir=rtl].next-icon-only .next-nav-icon-only-arrow.next-icon .next-icon-remote,.next-nav[dir=rtl].next-icon-only .next-nav-icon-only-arrow.next-icon:before,.next-nav[dir=rtl].next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav[dir=rtl].next-icon-only .next-nav-icon.next-icon:before,.next-nav[dir=rtl].next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down .next-icon-remote,.next-nav[dir=rtl].next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-number-picker{display:inline-block}.next-number-picker,.next-number-picker *,.next-number-picker :after,.next-number-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-number-picker .next-btn{padding:0!important;line-height:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.next-number-picker-normal .next-input{width:100%}.next-number-picker-normal .next-input .next-input-control{padding-right:0;height:100%}.next-number-picker-normal:not(.next-number-picker-no-trigger) .next-input input{padding-right:2px}.next-number-picker-normal .next-btn{display:block}.next-number-picker-normal .next-btn:hover{z-index:1}.next-number-picker-normal .next-btn:first-child{border-right:none;border-top:none;height:50%;border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.next-number-picker-normal .next-btn:last-child{border-right:none;border-bottom:none;margin-top:-1px;height:calc(50% + 1px);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:0}.next-number-picker-normal .next-number-picker-handler{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;height:100%;display:block}.next-number-picker-normal:not(.next-number-picker-show-trigger) .next-number-picker-handler{opacity:0}.next-number-picker-normal.hover .next-number-picker-handler,.next-number-picker-normal:hover .next-number-picker-handler{opacity:1}.next-number-picker-normal .next-input.next-disabled .next-number-picker-handler{opacity:0}.next-number-picker-normal .next-number-picker-up-icon:before{content:"\ea2f";content:var(--number-picker-normal-up-icon,"")}.next-number-picker-normal .next-number-picker-down-icon:before{content:"\ea37";content:var(--number-picker-normal-down-icon,"")}.next-number-picker-normal.next-small{width:68px}.next-number-picker-normal.next-small .next-btn{width:20px;width:var(--number-picker-normal-s-button-width,20px)}.next-number-picker-normal.next-small .next-btn:first-child{border-top-right-radius:2px;border-top-right-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal.next-small .next-btn:last-child{border-bottom-right-radius:2px;border-bottom-right-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal.next-small .next-icon .next-icon-remote,.next-number-picker-normal.next-small .next-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-number-picker-normal.next-small .next-icon{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-number-picker-normal.next-small .next-icon:before{width:16px;font-size:16px}}.next-number-picker-normal.next-medium{width:140px;width:var(--number-picker-normal-m-input-width,140px)}.next-number-picker-normal.next-medium .next-btn{width:40px;width:var(--number-picker-normal-m-button-width,40px)}.next-number-picker-normal.next-medium .next-btn:first-child{border-top-right-radius:2px;border-top-right-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal.next-medium .next-btn:last-child{border-bottom-right-radius:2px;border-bottom-right-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal.next-medium .next-icon .next-icon-remote,.next-number-picker-normal.next-medium .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-number-picker-normal.next-large{width:80px;width:var(--number-picker-normal-l-input-width,80px)}.next-number-picker-normal.next-large .next-btn{width:20px;width:var(--number-picker-normal-l-button-width,20px)}.next-number-picker-normal.next-large .next-btn:first-child{border-top-right-radius:2px;border-top-right-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal.next-large .next-btn:last-child{border-bottom-right-radius:2px;border-bottom-right-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal.next-large .next-icon .next-icon-remote,.next-number-picker-normal.next-large .next-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-number-picker-normal.next-large .next-icon{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-number-picker-normal.next-large .next-icon:before{width:16px;font-size:16px}}.next-number-picker-inline input{text-align:center}.next-number-picker-inline .next-input input{padding:0}.next-number-picker-inline .next-number-picker-add-icon:before{content:"\ea27";content:var(--number-picker-inline-add-icon,"")}.next-number-picker-inline .next-number-picker-minus-icon:before{content:"\e8ae";content:var(--number-picker-inline-minus-icon,"")}.next-number-picker-inline.next-small{width:68px;min-width:72px;min-width:calc(var(--form-element-small-height, 24px)*3)}.next-number-picker-inline.next-small .next-icon .next-icon-remote,.next-number-picker-inline.next-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-number-picker-inline.next-small .next-btn{height:24px;height:var(--form-element-small-height,24px)}.next-number-picker-inline.next-small .next-before .next-btn{margin-right:2px;margin-right:var(--number-picker-inline-s-button-margin,2px);border-top-left-radius:2px;border-top-left-radius:var(--number-picker-inline-s-button-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--number-picker-inline-s-button-corner,2px)}.next-number-picker-inline.next-small .next-after .next-btn{margin-left:2px;margin-left:var(--number-picker-inline-s-button-margin,2px);border-top-right-radius:2px;border-top-right-radius:var(--number-picker-inline-s-button-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--number-picker-inline-s-button-corner,2px)}.next-number-picker-inline.next-medium{width:140px;width:var(--number-picker-inline-m-input-width,140px);min-width:96px;min-width:calc(var(--form-element-medium-height, 32px)*3)}.next-number-picker-inline.next-medium .next-icon .next-icon-remote,.next-number-picker-inline.next-medium .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-number-picker-inline.next-medium .next-btn{height:32px;height:var(--form-element-medium-height,32px)}.next-number-picker-inline.next-medium .next-before .next-btn{margin-right:0;margin-right:var(--number-picker-inline-m-button-margin,0);border-top-left-radius:2px;border-top-left-radius:var(--number-picker-inline-m-button-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--number-picker-inline-m-button-corner,2px)}.next-number-picker-inline.next-medium .next-after .next-btn{margin-left:0;margin-left:var(--number-picker-inline-m-button-margin,0);border-top-right-radius:2px;border-top-right-radius:var(--number-picker-inline-m-button-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--number-picker-inline-m-button-corner,2px)}.next-number-picker-inline.next-large{width:128px;width:var(--number-picker-inline-l-input-width,128px);min-width:108px;min-width:calc(var(--form-element-large-height, 36px)*3)}.next-number-picker-inline.next-large .next-icon .next-icon-remote,.next-number-picker-inline.next-large .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-number-picker-inline.next-large .next-btn{height:36px;height:var(--form-element-large-height,36px)}.next-number-picker-inline.next-large .next-before .next-btn{margin-right:2px;margin-right:var(--number-picker-inline-l-button-margin,2px);border-top-left-radius:2px;border-top-left-radius:var(--number-picker-inline-l-button-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--number-picker-inline-l-button-corner,2px)}.next-number-picker-inline.next-large .next-after .next-btn{margin-left:2px;margin-left:var(--number-picker-inline-l-button-margin,2px);border-top-right-radius:2px;border-top-right-radius:var(--number-picker-inline-l-button-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--number-picker-inline-l-button-corner,2px)}.next-number-picker-inline .next-btn.next-small{width:24px;width:var(--form-element-small-height,24px)}.next-number-picker-inline .next-btn.next-medium{width:32px;width:var(--form-element-medium-height,32px)}.next-number-picker-inline .next-btn.next-large{width:36px;width:var(--form-element-large-height,36px)}@-moz-document url-prefix(){.next-number-picker-normal.next-small .next-number-picker-handler{height:22px;height:calc(var(--form-element-small-height, 24px) - 2px)}.next-number-picker-normal.next-medium .next-number-picker-handler{height:30px;height:calc(var(--form-element-medium-height, 32px) - 2px)}.next-number-picker-normal.next-large .next-number-picker-handler{height:34px;height:calc(var(--form-element-large-height, 36px) - 2px)}}.next-number-picker-normal[dir=rtl] .next-btn:first-child{border-right:1px solid #577899;border-right:1px solid var(--color-line1-3,#577899);border-left:0;border-top-right-radius:0}.next-number-picker-normal[dir=rtl] .next-btn:first-child.next-small{border-top-left-radius:2px;border-top-left-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:first-child.next-medium{border-top-left-radius:2px;border-top-left-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:first-child.next-large{border-top-left-radius:2px;border-top-left-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:last-child{border-right:1px solid #577899;border-right:1px solid var(--color-line1-3,#577899);border-left:0;border-bottom-right-radius:0}.next-number-picker-normal[dir=rtl] .next-btn:last-child.next-small{border-bottom-left-radius:2px;border-bottom-left-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:last-child.next-medium{border-bottom-left-radius:2px;border-bottom-left-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:last-child.next-large{border-bottom-left-radius:2px;border-bottom-left-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal[dir=rtl] .next-input .next-input-control{padding-left:0}.next-number-picker-inline[dir=rtl] .next-before .next-btn{margin-right:0}.next-number-picker-inline[dir=rtl] .next-before .next-btn.next-small{margin-left:2px;margin-left:var(--number-picker-inline-s-button-margin,2px);border-top-right-radius:2px!important;border-top-right-radius:var(--number-picker-inline-s-button-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--number-picker-inline-s-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-before .next-btn.next-medium{margin-left:0;margin-left:var(--number-picker-inline-m-button-margin,0);border-top-right-radius:2px!important;border-top-right-radius:var(--number-picker-inline-m-button-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--number-picker-inline-m-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-before .next-btn.next-large{margin-left:2px;margin-left:var(--number-picker-inline-l-button-margin,2px);border-top-right-radius:2px!important;border-top-right-radius:var(--number-picker-inline-l-button-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--number-picker-inline-l-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-after .next-btn{margin-left:0}.next-number-picker-inline[dir=rtl] .next-after .next-btn.next-small{margin-right:2px;margin-right:var(--number-picker-inline-s-button-margin,2px);border-top-left-radius:2px!important;border-top-left-radius:var(--number-picker-inline-s-button-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--number-picker-inline-s-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-after .next-btn.next-medium{margin-right:0;margin-right:var(--number-picker-inline-m-button-margin,0);border-top-left-radius:2px!important;border-top-left-radius:var(--number-picker-inline-m-button-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--number-picker-inline-m-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-after .next-btn.next-large{margin-right:2px;margin-right:var(--number-picker-inline-l-button-margin,2px);border-top-left-radius:2px!important;border-top-left-radius:var(--number-picker-inline-l-button-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--number-picker-inline-l-button-corner,2px)!important}.next-pagination[dir=rtl] .next-pagination-total{margin-right:0;margin-left:16px}.next-pagination[dir=rtl] .next-pagination-jump-go{margin-left:0;margin-right:4px}.next-pagination[dir=rtl] .next-pagination-size-selector-title{margin-right:0;margin-left:4px;margin-left:var(--pagination-size-selector-title-margin-right,4px)}.next-pagination[dir=rtl] .next-pagination-size-selector-btn.next-btn-text+.next-pagination-size-selector-btn{border-left:none;border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) solid var(--color-line1-2,#c0c6cc)}.next-pagination[dir=rtl] .next-pagination-pages+.next-pagination-size-selector,.next-pagination[dir=rtl] .next-pagination-size-selector+.next-pagination-pages{margin-left:0;margin-right:40px}.next-pagination[dir=rtl].next-start .next-pagination-pages{float:left}.next-pagination[dir=rtl].next-end .next-pagination-pages,.next-pagination[dir=rtl].next-start .next-pagination-size-selector{float:right}.next-pagination[dir=rtl].next-end .next-pagination-size-selector{float:left}.next-pagination[dir=rtl].next-small .next-pagination-list{margin:0 4px;margin:0 var(--pagination-small-item-split,4px)}.next-pagination[dir=rtl].next-small .next-pagination-total{line-height:24px;line-height:var(--form-element-small-height,24px);vertical-align:middle}.next-pagination[dir=rtl].next-small .next-pagination-item{padding:0 6px;border-width:1px;border-width:var(--pagination-small-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-small-item-corner,2px)}.next-pagination[dir=rtl].next-small .next-pagination-item+.next-pagination-item{margin:0 4px 0 0;margin:0 var(--pagination-small-item-split,4px) 0 0}.next-pagination[dir=rtl].next-small .next-pagination-ellipsis{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination[dir=rtl].next-small .next-pagination-ellipsis .next-icon-remote,.next-pagination[dir=rtl].next-small .next-pagination-ellipsis:before{width:8px;width:var(--pagination-small-ellipsis-size,8px);font-size:8px;font-size:var(--pagination-small-ellipsis-size,8px);line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-pagination[dir=rtl].next-small .next-pagination-ellipsis{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:4px;margin-left:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2);margin-right:4px;margin-right:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2)}.next-pagination[dir=rtl].next-small .next-pagination-ellipsis:before{width:16px;font-size:16px}}.next-pagination[dir=rtl].next-small .next-pagination-display{font-size:12px;font-size:var(--pagination-small-total-font-size,12px)}.next-pagination[dir=rtl].next-small .next-pagination-display em{font-size:12px;font-size:var(--pagination-small-current-font-size,12px)}.next-pagination[dir=rtl].next-small .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-small-jump-font-size,12px)}.next-pagination[dir=rtl].next-small .next-pagination-jump-input{width:28px;width:var(--pagination-small-input-width,28px)}.next-pagination[dir=rtl].next-small .next-pagination-size-selector-title{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);font-size:12px;font-size:var(--pagination-small-jump-font-size,12px);vertical-align:middle}.next-pagination[dir=rtl].next-small .next-pagination-size-selector-btn{padding:0 8px;padding:0 var(--pagination-small-size-selector-number-padding,8px)}.next-pagination[dir=rtl].next-small .next-pagination-item.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-small .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination[dir=rtl].next-small .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-small .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination[dir=rtl].next-medium .next-pagination-list{margin:0 8px;margin:0 var(--pagination-item-split,8px)}.next-pagination[dir=rtl].next-medium .next-pagination-total{line-height:32px;line-height:var(--form-element-medium-height,32px);vertical-align:middle}.next-pagination[dir=rtl].next-medium .next-pagination-item{padding:0 10px;border-width:1px;border-width:var(--pagination-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-item-corner,2px)}.next-pagination[dir=rtl].next-medium .next-pagination-item+.next-pagination-item{margin:0 8px 0 0;margin:0 var(--pagination-item-split,8px) 0 0}.next-pagination[dir=rtl].next-medium .next-pagination-ellipsis{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination[dir=rtl].next-medium .next-pagination-ellipsis .next-icon-remote,.next-pagination[dir=rtl].next-medium .next-pagination-ellipsis:before{width:12px;width:var(--pagination-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-ellipsis-size,12px);line-height:inherit}.next-pagination[dir=rtl].next-medium .next-pagination-display{font-size:12px;font-size:var(--pagination-total-font-size,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-display em{font-size:12px;font-size:var(--pagination-current-font-size,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-jump-font-size,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-jump-input{width:40px;width:var(--pagination-input-width,40px)}.next-pagination[dir=rtl].next-medium .next-pagination-size-selector-title{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);font-size:12px;font-size:var(--pagination-jump-font-size,12px);vertical-align:middle}.next-pagination[dir=rtl].next-medium .next-pagination-size-selector-btn{padding:0 12px;padding:0 var(--pagination-size-selector-number-padding,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-item.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-medium .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination[dir=rtl].next-medium .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-medium .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination[dir=rtl].next-large .next-pagination-list{margin:0 8px;margin:0 var(--pagination-large-item-split,8px)}.next-pagination[dir=rtl].next-large .next-pagination-total{line-height:36px;line-height:var(--form-element-large-height,36px);vertical-align:middle}.next-pagination[dir=rtl].next-large .next-pagination-item{padding:0 15px;border-width:1px;border-width:var(--pagination-large-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-large-item-corner,2px)}.next-pagination[dir=rtl].next-large .next-pagination-item+.next-pagination-item{margin:0 8px 0 0;margin:0 var(--pagination-large-item-split,8px) 0 0}.next-pagination[dir=rtl].next-large .next-pagination-ellipsis{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination[dir=rtl].next-large .next-pagination-ellipsis .next-icon-remote,.next-pagination[dir=rtl].next-large .next-pagination-ellipsis:before{width:12px;width:var(--pagination-large-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-large-ellipsis-size,12px);line-height:inherit}.next-pagination[dir=rtl].next-large .next-pagination-display{font-size:14px;font-size:var(--pagination-large-total-font-size,14px)}.next-pagination[dir=rtl].next-large .next-pagination-display em{font-size:14px;font-size:var(--pagination-large-current-font-size,14px)}.next-pagination[dir=rtl].next-large .next-pagination-jump-text{font-size:14px;font-size:var(--pagination-large-jump-font-size,14px)}.next-pagination[dir=rtl].next-large .next-pagination-jump-input{width:48px;width:var(--pagination-large-input-width,48px)}.next-pagination[dir=rtl].next-large .next-pagination-size-selector-title{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);font-size:14px;font-size:var(--pagination-large-jump-font-size,14px);vertical-align:middle}.next-pagination[dir=rtl].next-large .next-pagination-size-selector-btn{padding:0 16px;padding:0 var(--pagination-large-size-selector-number-padding,16px)}.next-pagination[dir=rtl].next-large .next-pagination-item.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-large .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination[dir=rtl].next-large .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-large .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination{font-size:0}.next-pagination,.next-pagination *,.next-pagination :after,.next-pagination :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-pagination:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-pagination-total{display:inline-block;font-size:14px;font-size:var(--font-size-body-2,14px);margin-right:16px}.next-pagination-pages{display:inline-block}.next-pagination-list{display:inline-block;vertical-align:top}.next-pagination .next-pagination-item:not([disabled]){display:inline-block;border-style:solid;border-style:var(--pagination-item-border-style,solid);border-color:transparent;border-color:var(--pagination-item-border-color,transparent);background:transparent;background:var(--pagination-item-bg,transparent);color:#333;color:var(--pagination-item-color,#333);-webkit-box-shadow:none;-webkit-box-shadow:var(--pagination-item-shadow,none);box-shadow:none;box-shadow:var(--pagination-item-shadow,none)}.next-pagination .next-pagination-item{-webkit-transition:none;transition:none}.next-pagination .next-pagination-item.next-current{border-color:#0064c8;border-color:var(--pagination-item-current-border-color,#0064c8);background:#fff;background:var(--pagination-item-current-bg,#fff);color:#0064c8;color:var(--pagination-item-current-color,#0064c8);-webkit-box-shadow:none;-webkit-box-shadow:var(--pagination-item-current-shadow,none);box-shadow:none;box-shadow:var(--pagination-item-current-shadow,none)}.next-pagination .next-pagination-item.next-current:focus,.next-pagination .next-pagination-item.next-current:hover{border-color:#0064c8;border-color:var(--pagination-item-current-hover-border-color,#0064c8);background:#fff;background:var(--pagination-item-current-hover-bg,#fff);color:#333;color:var(--pagination-item-current-hover-color,#333);-webkit-box-shadow:none;-webkit-box-shadow:var(--pagination-item-current-hover-shadow,none);box-shadow:none;box-shadow:var(--pagination-item-current-hover-shadow,none)}.next-pagination-ellipsis{display:inline-block;color:#333;color:var(--pagination-ellipsis-color,#333);vertical-align:top}.next-pagination-display{display:inline-block;margin:0 16px;color:#333;color:var(--pagination-total-color,#333);vertical-align:middle}.next-pagination-display em{font-style:normal;color:#0064c8;color:var(--pagination-current-color,#0064c8)}.next-pagination-jump-text{display:inline-block;vertical-align:middle;color:#333;color:var(--pagination-jump-color,#333)}.next-pagination-jump-input{margin:0 4px;margin:0 var(--pagination-input-margin,4px);vertical-align:top}.next-pagination-jump-go{margin-left:4px;vertical-align:top}.next-pagination-size-selector{display:inline-block;position:relative}.next-pagination-size-selector-title{margin-right:4px;margin-right:var(--pagination-size-selector-title-margin-right,4px);color:#888;color:var(--pagination-size-selector-title-color,#888)}.next-pagination-size-selector-filter{display:inline-block;vertical-align:middle}.next-pagination-size-selector-dropdown{vertical-align:top;min-width:64px}.next-pagination-size-selector-dropdown .next-select-inner,.next-pagination-size-selector-popup{min-width:64px}.next-pagination-size-selector-btn.next-btn-text{height:auto;line-height:normal;color:#555;color:var(--pagination-size-selector-filter-color,#555);border-radius:0}.next-pagination-size-selector-btn.next-btn-text.next-current{color:#0064c8;color:var(--pagination-size-selector-filter-current-color,#0064c8)}.next-pagination-size-selector-btn.next-btn-text+.next-pagination-size-selector-btn{border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) solid var(--color-line1-2,#c0c6cc)}.next-pagination-pages+.next-pagination-size-selector,.next-pagination-size-selector+.next-pagination-pages{margin-left:40px}.next-pagination.next-hide{display:none}.next-pagination.next-start .next-pagination-pages{float:right}.next-pagination.next-end .next-pagination-pages,.next-pagination.next-start .next-pagination-size-selector{float:left}.next-pagination.next-end .next-pagination-size-selector{float:right}.next-pagination.next-small .next-pagination-list{margin:0 4px;margin:0 var(--pagination-small-item-split,4px)}.next-pagination.next-small .next-pagination-total{line-height:24px;line-height:var(--form-element-small-height,24px);vertical-align:middle}.next-pagination.next-small .next-pagination-item{padding:0 6px;padding:0 var(--pagination-small-item-padding,6px);border-width:1px;border-width:var(--pagination-small-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-small-item-corner,2px)}.next-pagination.next-small .next-pagination-item+.next-pagination-item{margin:0 0 0 4px;margin:0 0 0 var(--pagination-small-item-split,4px)}.next-pagination.next-small .next-pagination-ellipsis{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination.next-small .next-pagination-ellipsis .next-icon-remote,.next-pagination.next-small .next-pagination-ellipsis:before{width:8px;width:var(--pagination-small-ellipsis-size,8px);font-size:8px;font-size:var(--pagination-small-ellipsis-size,8px);line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-pagination.next-small .next-pagination-ellipsis{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:4px;margin-left:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2);margin-right:4px;margin-right:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2)}.next-pagination.next-small .next-pagination-ellipsis:before{width:16px;font-size:16px}}.next-pagination.next-small .next-pagination-display{font-size:12px;font-size:var(--pagination-small-total-font-size,12px)}.next-pagination.next-small .next-pagination-display em{font-size:12px;font-size:var(--pagination-small-current-font-size,12px)}.next-pagination.next-small .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-small-jump-font-size,12px)}.next-pagination.next-small .next-pagination-jump-input{width:28px;width:var(--pagination-small-input-width,28px)}.next-pagination.next-small .next-pagination-size-selector-title{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);font-size:12px;font-size:var(--pagination-small-jump-font-size,12px);vertical-align:middle}.next-pagination.next-small .next-pagination-size-selector-btn{padding:0 8px;padding:0 var(--pagination-small-size-selector-number-padding,8px)}.next-pagination.next-small .next-pagination-item.next-next:not([disabled]) i,.next-pagination.next-small .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination.next-small .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination.next-small .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination.next-small.next-arrow-only .next-pagination-item.next-next,.next-pagination.next-small.next-arrow-only .next-pagination-item.next-prev{width:20px;padding:0}.next-pagination.next-small.next-arrow-only .next-pagination-item.next-next .next-icon,.next-pagination.next-small.next-arrow-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-small.next-arrow-prev-only .next-pagination-item.next-prev{width:20px;padding:0}.next-pagination.next-small.next-arrow-prev-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-small.next-no-border .next-pagination-item.next-next,.next-pagination.next-small.next-no-border .next-pagination-item.next-prev{padding:0;border:none;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.next-pagination.next-small.next-no-border .next-pagination-item.next-next .next-icon,.next-pagination.next-small.next-no-border .next-pagination-item.next-prev .next-icon{margin:0}.next-pagination.next-small.next-no-border .next-pagination-item.next-next:not([disabled]):hover i,.next-pagination.next-small.next-no-border .next-pagination-item.next-prev:not([disabled]):hover i{color:#0064c8;color:var(--pagination-arrow-hover-color-noboder,#0064c8)}.next-pagination.next-small.next-no-border .next-pagination-display{margin:0 8px}.next-pagination.next-small.next-mini .next-pagination-item.next-prev{margin-right:4px}.next-pagination.next-small.next-mini .next-pagination-item.next-next{margin-left:4px}.next-pagination.next-medium .next-pagination-list{margin:0 8px;margin:0 var(--pagination-item-split,8px)}.next-pagination.next-medium .next-pagination-total{line-height:32px;line-height:var(--form-element-medium-height,32px);vertical-align:middle}.next-pagination.next-medium .next-pagination-item{padding:0 10px;padding:0 var(--pagination-item-padding,10px);border-width:1px;border-width:var(--pagination-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-item-corner,2px)}.next-pagination.next-medium .next-pagination-item+.next-pagination-item{margin:0 0 0 8px;margin:0 0 0 var(--pagination-item-split,8px)}.next-pagination.next-medium .next-pagination-ellipsis{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination.next-medium .next-pagination-ellipsis .next-icon-remote,.next-pagination.next-medium .next-pagination-ellipsis:before{width:12px;width:var(--pagination-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-ellipsis-size,12px);line-height:inherit}.next-pagination.next-medium .next-pagination-display{font-size:12px;font-size:var(--pagination-total-font-size,12px)}.next-pagination.next-medium .next-pagination-display em{font-size:12px;font-size:var(--pagination-current-font-size,12px)}.next-pagination.next-medium .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-jump-font-size,12px)}.next-pagination.next-medium .next-pagination-jump-input{width:40px;width:var(--pagination-input-width,40px)}.next-pagination.next-medium .next-pagination-size-selector-title{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);font-size:12px;font-size:var(--pagination-jump-font-size,12px);vertical-align:middle}.next-pagination.next-medium .next-pagination-size-selector-btn{padding:0 12px;padding:0 var(--pagination-size-selector-number-padding,12px)}.next-pagination.next-medium .next-pagination-item.next-next:not([disabled]) i,.next-pagination.next-medium .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination.next-medium .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination.next-medium .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-next,.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-prev{width:28px;padding:0}.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-next .next-icon,.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-medium.next-arrow-prev-only .next-pagination-item.next-prev{width:28px;padding:0}.next-pagination.next-medium.next-arrow-prev-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-medium.next-no-border .next-pagination-item.next-next,.next-pagination.next-medium.next-no-border .next-pagination-item.next-prev{padding:0;border:none;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.next-pagination.next-medium.next-no-border .next-pagination-item.next-next .next-icon,.next-pagination.next-medium.next-no-border .next-pagination-item.next-prev .next-icon{margin:0}.next-pagination.next-medium.next-no-border .next-pagination-item.next-next:not([disabled]):hover i,.next-pagination.next-medium.next-no-border .next-pagination-item.next-prev:not([disabled]):hover i{color:#0064c8;color:var(--pagination-arrow-hover-color-noboder,#0064c8)}.next-pagination.next-medium.next-no-border .next-pagination-display{margin:0 12px}.next-pagination.next-medium.next-mini .next-pagination-item.next-prev{margin-right:4px}.next-pagination.next-medium.next-mini .next-pagination-item.next-next{margin-left:4px}.next-pagination.next-large .next-pagination-list{margin:0 8px;margin:0 var(--pagination-large-item-split,8px)}.next-pagination.next-large .next-pagination-total{line-height:36px;line-height:var(--form-element-large-height,36px);vertical-align:middle}.next-pagination.next-large .next-pagination-item{padding:0 15px;padding:0 var(--pagination-large-item-padding,15px);border-width:1px;border-width:var(--pagination-large-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-large-item-corner,2px)}.next-pagination.next-large .next-pagination-item+.next-pagination-item{margin:0 0 0 8px;margin:0 0 0 var(--pagination-large-item-split,8px)}.next-pagination.next-large .next-pagination-ellipsis{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination.next-large .next-pagination-ellipsis .next-icon-remote,.next-pagination.next-large .next-pagination-ellipsis:before{width:12px;width:var(--pagination-large-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-large-ellipsis-size,12px);line-height:inherit}.next-pagination.next-large .next-pagination-display{font-size:14px;font-size:var(--pagination-large-total-font-size,14px)}.next-pagination.next-large .next-pagination-display em{font-size:14px;font-size:var(--pagination-large-current-font-size,14px)}.next-pagination.next-large .next-pagination-jump-text{font-size:14px;font-size:var(--pagination-large-jump-font-size,14px)}.next-pagination.next-large .next-pagination-jump-input{width:48px;width:var(--pagination-large-input-width,48px)}.next-pagination.next-large .next-pagination-size-selector-title{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);font-size:14px;font-size:var(--pagination-large-jump-font-size,14px);vertical-align:middle}.next-pagination.next-large .next-pagination-size-selector-btn{padding:0 16px;padding:0 var(--pagination-large-size-selector-number-padding,16px)}.next-pagination.next-large .next-pagination-item.next-next:not([disabled]) i,.next-pagination.next-large .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination.next-large .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination.next-large .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination.next-large.next-arrow-only .next-pagination-item.next-next,.next-pagination.next-large.next-arrow-only .next-pagination-item.next-prev{width:40px;padding:0}.next-pagination.next-large.next-arrow-only .next-pagination-item.next-next .next-icon,.next-pagination.next-large.next-arrow-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-large.next-arrow-prev-only .next-pagination-item.next-prev{width:40px;padding:0}.next-pagination.next-large.next-arrow-prev-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-large.next-no-border .next-pagination-item.next-next,.next-pagination.next-large.next-no-border .next-pagination-item.next-prev{padding:0;border:none;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.next-pagination.next-large.next-no-border .next-pagination-item.next-next .next-icon,.next-pagination.next-large.next-no-border .next-pagination-item.next-prev .next-icon{margin:0}.next-pagination.next-large.next-no-border .next-pagination-item.next-next:not([disabled]):hover i,.next-pagination.next-large.next-no-border .next-pagination-item.next-prev:not([disabled]):hover i{color:#0064c8;color:var(--pagination-arrow-hover-color-noboder,#0064c8)}.next-pagination.next-large.next-no-border .next-pagination-display{margin:0 16px}.next-pagination.next-large.next-mini .next-pagination-item.next-prev{margin-right:8px}.next-pagination.next-large.next-mini .next-pagination-item.next-next{margin-left:8px}.next-pagination-icon-prev:before{content:"\ea2c";content:var(--pagination-icon-prev-content,"")}.next-pagination-icon-next:before{content:"\ea29";content:var(--pagination-icon-next-content,"")}.next-pagination-icon-ellipsis:before{content:"\ea24";content:var(--pagination-icon-ellipsis-content,"")}.next-paragraph{color:#111;color:var(--paragraph-text-color,#111)}.next-paragraph-short{line-height:1.5;line-height:var(--paragraph-s-line-height,1.5)}.next-paragraph-long{line-height:1.6;line-height:var(--paragraph-l-line-height,1.6)}.next-paragraph-small{font-size:12px;font-size:var(--paragraph-s-font-size,12px)}.next-paragraph-medium{font-size:14px;font-size:var(--paragraph-m-font-size,14px)}.next-progress-circle[dir=rtl] .next-progress-circle-container{-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.next-progress-line[dir=rtl] .next-progress-line-overlay{left:auto;right:0}.next-progress-line,.next-progress-line *,.next-progress-line :after,.next-progress-line :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-progress-line{width:100%;display:inline-block;position:relative}.next-progress-line-container{display:inline-block;width:100%;vertical-align:middle}.next-progress-line-underlay{position:relative;overflow:hidden;width:100%;background:#e3e4e6;background:var(--progress-line-underlay-color,#e3e4e6)}.next-progress-line-overlay{position:absolute;left:0;top:0;-webkit-transition:all .3s ease;transition:all .3s ease}.next-progress-line-overlay-normal{background:#0064c8;background:var(--progress-line-normal-color,#0064c8)}.next-progress-line-overlay-success{background:#00a700;background:var(--progress-line-success-color,#00a700)}.next-progress-line-overlay-error{background:#c80000;background:var(--progress-line-error-color,#c80000)}.next-progress-line-overlay-started{background:#0064c8;background:var(--progress-line-started-color,#0064c8)}.next-progress-line-overlay-middle{background:#0064c8;background:var(--progress-line-middle-color,#0064c8)}.next-progress-line-overlay-finishing{background:#0064c8;background:var(--progress-line-finishing-color,#0064c8)}.next-progress-line.next-small .next-progress-line-overlay,.next-progress-line.next-small .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-s,2px);height:4px;height:var(--progress-line-height-size-s,4px)}.next-progress-line.next-small .next-progress-line-overlay{top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-s, 4px)/2)}.next-progress-line.next-small .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-s,12px);line-height:4px;line-height:var(--progress-line-height-size-s,4px)}.next-progress-line.next-medium .next-progress-line-overlay,.next-progress-line.next-medium .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-m,2px);height:4px;height:var(--progress-line-height-size-m,4px)}.next-progress-line.next-medium .next-progress-line-overlay{top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-m, 4px)/2)}.next-progress-line.next-medium .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-m,12px);line-height:4px;line-height:var(--progress-line-height-size-m,4px)}.next-progress-line.next-large .next-progress-line-overlay,.next-progress-line.next-large .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-l,2px);height:8px;height:var(--progress-line-height-size-l,8px)}.next-progress-line.next-large .next-progress-line-overlay{top:50%;margin-top:-4px;margin-top:calc(0px - var(--progress-line-height-size-l, 8px)/2)}.next-progress-line.next-large .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-l,12px);line-height:8px;line-height:var(--progress-line-height-size-l,8px)}.next-progress-line-show-info .next-progress-line-container{padding-right:60px;margin-right:-60px}.next-progress-line-show-info .next-progress-line-text{width:50px;text-align:left;margin-left:10px;vertical-align:middle;display:inline-block;color:#333;color:var(--progress-line-font-color,#333)}.next-progress-line-show-border .next-progress-line-underlay{border:1px solid #c0c6cc;border:var(--progress-line-underlay-border-width,1px) solid var(--progress-line-underlay-border-color,#c0c6cc)}.next-progress-line-show-border.next-small .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-s,2px);height:6px;height:calc(var(--progress-line-height-size-s, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-small .next-progress-line-overlay{height:4px;height:var(--progress-line-height-size-s,4px);border-radius:2px;border-radius:var(--progress-line-radius-s,2px);top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-s, 4px)/2)}.next-progress-line-show-border.next-small .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-s,12px);line-height:6px;line-height:calc(var(--progress-line-height-size-s, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-medium .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-m,2px);height:6px;height:calc(var(--progress-line-height-size-m, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-medium .next-progress-line-overlay{height:4px;height:var(--progress-line-height-size-m,4px);border-radius:2px;border-radius:var(--progress-line-radius-m,2px);top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-m, 4px)/2)}.next-progress-line-show-border.next-medium .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-m,12px);line-height:6px;line-height:calc(var(--progress-line-height-size-m, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-large .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-l,2px);height:10px;height:calc(var(--progress-line-height-size-l, 8px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-large .next-progress-line-overlay{height:8px;height:var(--progress-line-height-size-l,8px);border-radius:2px;border-radius:var(--progress-line-radius-l,2px);top:50%;margin-top:-4px;margin-top:calc(0px - var(--progress-line-height-size-l, 8px)/2)}.next-progress-line-show-border.next-large .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-l,12px);line-height:10px;line-height:calc(var(--progress-line-height-size-l, 8px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-circle,.next-progress-circle *,.next-progress-circle :after,.next-progress-circle :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-progress-circle{position:relative;display:inline-block}.next-progress-circle-underlay{stroke-width:4px;stroke-width:var(--progress-circle-underlay-width,4px);stroke:#e3e4e6;stroke:var(--progress-circle-underlay-color,#e3e4e6)}.next-progress-circle-overlay{-webkit-transition:all .3s ease;transition:all .3s ease;stroke-linecap:round;stroke-linecap:var(--progress-circle-corner,round);stroke-width:4px;stroke-width:var(--progress-circle-overlay-width,4px)}.next-progress-circle-overlay-normal{stroke:#0064c8;stroke:var(--progress-circle-normal-color,#0064c8)}.next-progress-circle-overlay-success{stroke:#00a700;stroke:var(--progress-circle-success-color,#00a700)}.next-progress-circle-overlay-error{stroke:#c80000;stroke:var(--progress-circle-error-color,#c80000)}.next-progress-circle-overlay-started{stroke:#0064c8;stroke:var(--progress-circle-started-color,#0064c8)}.next-progress-circle-overlay-middle{stroke:#0064c8;stroke:var(--progress-circle-middle-color,#0064c8)}.next-progress-circle-overlay-finishing{stroke:#0064c8;stroke:var(--progress-circle-finishing-color,#0064c8)}.next-progress-circle.next-small{width:100px;width:var(--progress-circle-size-s,100px);height:100px;height:var(--progress-circle-size-s,100px);font-size:14px;font-size:var(--progress-circle-font-s,14px)}.next-progress-circle.next-medium{width:116px;width:var(--progress-circle-size-m,116px);height:116px;height:var(--progress-circle-size-m,116px);font-size:14px;font-size:var(--progress-circle-font-m,14px)}.next-progress-circle.next-large{width:132px;width:var(--progress-circle-size-l,132px);height:132px;height:var(--progress-circle-size-l,132px);font-size:20px;font-size:var(--progress-circle-font-l,20px)}.next-progress-circle-text{display:block;position:absolute;width:100%;top:50%;left:0;text-align:center;line-height:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;color:#666;color:var(--progress-circle-text-color,#666)}.next-range{width:100%;font-family:inherit;font-weight:400;font-size:inherit;line-height:inherit;vertical-align:baseline;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;cursor:pointer}.next-range,.next-range *,.next-range :after,.next-range :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-range .next-range-inner{position:relative}.next-range .next-range-inner:only-child{margin-top:auto;margin-bottom:auto}.next-range .next-range-track{width:100%}.next-range .next-range-selected,.next-range .next-range-track{position:absolute;top:50%;border-radius:0;border-radius:var(--range-size-m-track-radius,0)}.next-range .next-range-selected{width:0;left:0}.next-range .next-range-scale{position:relative;width:100%;height:12px;height:var(--range-size-m-scale-height,12px)}.next-range .next-range-scale .next-range-scale-item{position:absolute;left:0;width:2px;border:1px solid;border:var(--range-size-m-scale-item-border-width,1px) solid;border-radius:0;border-radius:var(--range-size-m-scale-radius,0)}.next-range .next-range-scale .next-range-scale-item:last-child{margin-left:-2px;margin-left:calc(0px - var(--range-size-m-scale-item-border-width, 1px)*2)}.next-range .next-range-slider{position:absolute;top:50%;left:0;border-radius:50%}.next-range .next-range-slider-inner{position:absolute;top:50%;left:50%;border:1px solid #577899;border:var(--range-size-slider-border-width,1px) var(--range-size-slider-border-style,solid) var(--range-normal-slider-border-color,#577899);border-radius:50%;-webkit-transition:border-color .1s linear,-webkit-transform .1s linear;transition:border-color .1s linear,-webkit-transform .1s linear;transition:transform .1s linear,border-color .1s linear;transition:transform .1s linear,border-color .1s linear,-webkit-transform .1s linear}.next-range .next-range-frag.next-range-active .next-range-slider .next-range-slider-inner,.next-range .next-range-slider.next-range-slider-moving .next-range-slider-inner{border:2px solid #0064c8;border:var(--line-2,2px) var(--line-solid,solid) var(--range-normal-selected-color,#0064c8);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range .next-range-mark{position:relative;cursor:auto}.next-range .next-range-mark .next-range-mark-text{position:absolute;left:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);padding-left:2px;text-align:center}.next-range .next-range-frag{position:absolute;top:0}.next-range .next-range-frag .next-range-slider{left:0}.next-range .next-range-frag .next-range-slider:nth-child(2){left:100%}.next-range .next-range-frag .next-range-selected{width:100%}.next-range.disabled{cursor:not-allowed}.next-range.disabled .next-range-mark{cursor:auto}.next-range .next-range-track{background:#e3e4e6;background:var(--range-normal-unselected-color,#e3e4e6)}.next-range .next-range-track:hover{background:#e3e4e6;background:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range .next-range-selected{background:#0064c8;background:var(--range-normal-selected-color,#0064c8)}.next-range .next-range-selected:hover{background:#0064c8;background:var(--range-normal-selected-color-hover,#0064c8)}.next-range .next-range-scale .next-range-scale-item{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color,#e3e4e6);background:#e3e4e6;background:var(--range-normal-unselected-color,#e3e4e6)}.next-range .next-range-scale .next-range-scale-item:hover{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range .next-range-scale .next-range-scale-item.activated{border-color:#0064c8;border-color:var(--range-normal-selected-color,#0064c8);background:#0064c8;background:var(--range-normal-selected-color,#0064c8)}.next-range .next-range-scale .next-range-scale-item.activated:hover{border-color:#0064c8;border-color:var(--range-normal-selected-color-hover,#0064c8)}.next-range .next-range-slider-inner{background:#fff;background:var(--range-normal-slider-bg-color,#fff);border-color:#577899;border-color:var(--range-normal-slider-border-color,#577899)}.next-range .next-range-slider-inner:hover{background:#fff;background:var(--range-normal-slider-bg-color-hover,#fff);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range .next-range-mark .next-range-mark-text{color:#333;color:var(--range-normal-mark-color,#333)}.next-range .next-range-mark .next-range-mark-text:hover{color:#888;color:var(--range-normal-mark-color-hover,#888)}.next-range .next-range-mark .next-range-mark-text.activated{color:#333;color:var(--range-normal-mark-selected-color,#333)}.next-range .next-range-mark .next-range-mark-text.activated:hover{color:#111;color:var(--range-normal-mark-selected-color-hover,#111)}.next-range.disabled .next-range-track{background:#e3e4e6;background:var(--range-normal-unselected-color-disabled,#e3e4e6)}.next-range.disabled .next-range-selected{background:#b3b3b3;background:var(--range-normal-selected-color-disabled,#b3b3b3)}.next-range.disabled .next-range-scale-item{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color-disabled,#e3e4e6)}.next-range.disabled .next-range-scale-item.activated{border-color:#b3b3b3;border-color:var(--range-normal-selected-color-disabled,#b3b3b3)}.next-range.disabled .next-range-slider-inner{background:#fff;background:var(--range-normal-slider-bg-color-disabled,#fff);border-color:#c0c6cc;border-color:var(--range-normal-slider-border-color-disabled,#c0c6cc);-webkit-transform:none;-ms-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.next-range.disabled .next-range-mark-text{color:#b3b3b3;color:var(--range-normal-mark-color-disabled,#b3b3b3)}.next-range.disabled .next-range-mark-text.activated{color:#b3b3b3;color:var(--range-normal-mark-selected-color-disabled,#b3b3b3)}.next-range .next-range-selected,.next-range .next-range-track{height:4px;height:var(--range-size-m-track-height,4px);margin-top:-2px;margin-top:calc(0px - var(--range-size-m-track-height, 4px)/2)}.next-range .next-range-frag{margin-top:4px;margin-top:calc(var(--range-size-m-scale-height, 12px)/2 - var(--range-size-m-track-height, 4px)/2);height:4px;height:var(--range-size-m-track-height,4px)}.next-range .next-range-slider{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--range-size-m-slider-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--range-size-m-slider-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-range .next-range-slider,.next-range .next-range-slider-inner{height:16px;height:var(--range-size-m-slider-hw,16px);width:16px;width:var(--range-size-m-slider-hw,16px);margin-top:-8px;margin-top:calc(0px - var(--range-size-m-slider-hw, 16px)/2);margin-left:-8px;margin-left:calc(0px - var(--range-size-m-slider-hw, 16px)/2)}.next-range .next-range-mark{display:block}.next-range .next-range-mark .next-range-mark-text{font-size:12px;font-size:var(--range-size-m-mark-font-size,12px);font-weight:400;font-weight:var(--range-size-m-mark-font-weight,normal);line-height:20px;line-height:var(--range-size-m-mark-font-lineheight,20px);height:20px;height:var(--range-size-m-mark-font-lineheight,20px)}.next-range .next-range-mark.next-range-mark-below{height:30px;height:var(--range-size-m-mark-top,30px)}.next-range .next-range-mark.next-range-mark-below .next-range-mark-text{bottom:0}.next-range .next-range-mark.next-range-mark-above{height:30px;height:var(--range-size-m-mark-top,30px)}.next-range .next-range-scale .next-range-scale-item{height:12px;height:var(--range-size-m-scale-height,12px)}.next-range.simulation-hover>.next-range-slider-inner{background:#fff;background:var(--range-normal-slider-bg-color-hover,#fff);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range.simulation-hover .next-range-selected{background:#0064c8;background:var(--range-normal-selected-color-hover,#0064c8)}.next-range.simulation-hover .next-range-track{background:#e3e4e6;background:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range.simulation-hover .next-range-scale-item{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range.simulation-hover .next-range-scale-item.activated{border-color:#0064c8;border-color:var(--range-normal-selected-color-hover,#0064c8)}.next-range.simulation-click>.next-range-slider-inner{border:2px solid #0064c8;border:2px solid var(--range-normal-selected-color,#0064c8);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range[dir=rtl] .next-range-mark{position:relative;cursor:auto}.next-range[dir=rtl] .next-range-mark .next-range-mark-text{position:absolute;right:0;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);padding-right:2px;text-align:center}.next-rating[dir=rtl] .next-rating-overlay{right:0;left:auto}.next-rating[dir=rtl] .next-rating-overlay .next-rating-icon,.next-rating[dir=rtl] .next-rating-underlay .next-rating-icon{margin-right:4px;margin-left:0}.next-rating[dir=rtl] .next-rating-overlay .next-rating-icon:last-child,.next-rating[dir=rtl] .next-rating-underlay .next-rating-icon:last-child{margin-left:4px}.next-rating{vertical-align:top;display:inline-block;position:relative}.next-rating:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-rating-base,.next-rating-text{float:left}.next-rating-base-disabled,.next-rating-base-disabled .next-rating-overlay .next-rating-icon,.next-rating-base-disabled .next-rating-underlay .next-rating-icon{cursor:not-allowed}.next-rating-symbol-icon:before{content:"\e814";content:var(--rating-grade-icon-content,"")}.next-rating-underlay{white-space:nowrap;overflow:hidden}.next-rating-underlay .next-icon{color:#fff;color:var(--rating-normal-underlay-color,#fff)}.next-rating-stroke-mode .next-rating-underlay .next-icon{color:transparent;-webkit-text-stroke:1px #0064c8;-webkit-text-stroke:1px var(--rating-normal-overlay-color,#0064c8)}.next-rating-overlay{white-space:nowrap;overflow:hidden;position:absolute;width:0;top:0;left:0}.next-rating-overlay .next-icon{color:#0064c8;color:var(--rating-normal-overlay-color,#0064c8)}.next-rating-overlay .next-rating-icon,.next-rating-underlay .next-rating-icon{cursor:pointer;margin-left:4px}.next-rating-overlay .next-rating-icon:last-child,.next-rating-underlay .next-rating-icon:last-child{margin-right:4px}.next-rating-overlay .next-icon,.next-rating-underlay .next-icon{-webkit-transition:all .1s linear;transition:all .1s linear}.next-rating-overlay .next-icon.hover,.next-rating-underlay .next-icon.hover{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}.next-rating-overlay .next-icon.clicked,.next-rating-underlay .next-icon.clicked{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}.next-rating-info{position:absolute;top:calc(100% + 4px);left:0;border:1px solid #004080;border:1px solid var(--color-fill1-4,#004080);background:#fff;padding:4px 8px 3px;font-size:12px;white-space:nowrap}.next-rating-info:after{position:absolute;content:"";width:4px;height:4px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);border-left:1px solid #004080;border-top:1px solid #004080;border:1px solid var(--color-fill1-4,#004080);background:#fff;border-bottom:1px solid transparent;border-right:1px solid transparent;top:-3px;left:4px}.next-rating.hover,.next-rating:focus .next-rating-base:not(.next-rating-base-disabled){outline:none}.next-rating.hover .next-rating-overlay .next-icon,.next-rating:focus .next-rating-base:not(.next-rating-base-disabled) .next-rating-overlay .next-icon{color:#fff;color:var(--rating-normal-overlay-hover-color,#fff)}.next-rating-grade-low.hover .next-rating-overlay .next-icon,.next-rating-grade-low .next-rating-overlay .next-icon{color:#fac800;color:var(--rating-grade-low-overlay-color,#fac800)}.next-rating-grade-high .next-rating-overlay .next-icon{color:#fac800;color:var(--rating-grade-high-overlay-color,#fac800)}.next-rating-grade-high.hover .next-rating-overlay .next-icon{color:#fac800;color:var(--rating-grade-high-overlay-hover-color,#fac800)}.next-rating-small{font-size:12px;font-size:var(--rating-small-font-size,12px)}.next-rating-small .next-icon .next-icon-remote,.next-rating-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-rating-small .next-rating-text{margin-left:8px;margin-left:var(--rating-small-text-margin-left,8px)}.next-rating-medium{font-size:12px;font-size:var(--rating-medium-font-size,12px)}.next-rating-medium .next-icon .next-icon-remote,.next-rating-medium .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-rating-medium .next-rating-text{margin-left:12px;margin-left:var(--rating-medium-text-margin-left,12px)}.next-rating-large{font-size:14px;font-size:var(--rating-large-font-size,14px)}.next-rating-large .next-icon .next-icon-remote,.next-rating-large .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-rating-large .next-rating-text{margin-left:16px;margin-left:var(--rating-large-text-margin-left,16px)}.next-search-simple[dir=rtl].next-large .next-search-icon{margin-left:12px;margin-right:0}.next-search-simple[dir=rtl].next-medium .next-search-icon{margin-left:8px;margin-right:0}.next-search-simple[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #e3e4e6;border-left:1px solid var(--search-simple-normal-split-color,#e3e4e6);border-right:none}.next-search-simple[dir=rtl].next-dark .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-color,#577899)}.next-search-simple[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-right:1px solid #577899;border-right:1px solid var(--search-simple-dark-split-color,#577899)}.next-search-simple[dir=rtl].next-dark:hover .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-hover-color,#577899)}.next-search-simple[dir=rtl].next-dark .next-search-icon{color:#888;color:var(--search-simple-dark-icon-text-color,#888)}.next-search-simple[dir=rtl].next-dark .next-search-icon:hover{color:#555;color:var(--search-simple-dark-icon-hover-text-color,#555)}.next-search-normal[dir=rtl] .next-search-left{border-left:none;border-top-right-radius:2px;border-top-right-radius:var(--search-normal-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--search-normal-corner,2px);border-top-left-radius:0;border-bottom-left-radius:0}.next-search-normal[dir=rtl] .next-search-btn.next-btn{border-radius:2px 0 0 2px!important;border-radius:var(--search-normal-corner,2px) 0 0 var(--search-normal-corner,2px)!important}.next-search-normal[dir=rtl] .next-input{border-radius:0 2px 2px 0;border-radius:0 var(--search-normal-corner,2px) var(--search-normal-corner,2px) 0}.next-search-normal[dir=rtl].next-primary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-top-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-right-radius:1px;border-bottom-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal[dir=rtl].next-primary .next-search-left .next-search-left-addon{border-left:1px solid #c0c6cc;border-left:1px solid var(--search-normal-primary-split-color,#c0c6cc);border-right:none}.next-search-normal[dir=rtl].next-secondary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-top-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-right-radius:1px;border-bottom-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal[dir=rtl].next-secondary .next-search-left .next-search-left-addon{border-left:1px solid #c0c6cc;border-left:1px solid var(--search-normal-secondary-split-color,#c0c6cc);border-right:none}.next-search-normal[dir=rtl].next-normal .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-top-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-right-radius:1px;border-bottom-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #e3e4e6;border-left:1px solid var(--search-normal-normal-split-color,#e3e4e6);border-right:none}.next-search-normal[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-left:1px solid #0064c8;border-left:1px solid var(--search-normal-dark-color,#0064c8);border-right:none}.next-search{width:100%;display:inline-block}.next-search,.next-search *,.next-search :after,.next-search :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-search .next-input,.next-search .next-select{border:none;-webkit-box-shadow:none;box-shadow:none}.next-search .next-select .next-input,.next-search .next-select .next-input .next-input-text-field{height:auto}.next-search .next-search-left{border-style:solid;-webkit-transition:all .1s linear;transition:all .1s linear}.next-search .next-search-left-addon .next-input,.next-search .next-search-left-addon .next-select-trigger-search{min-height:100%;border-bottom-right-radius:0;border-top-right-radius:0}.next-search .next-search-left-addon .next-select-values{line-height:1}.next-search .next-search-left-addon.next-input-group-addon .next-select{margin:0}.next-search .next-search-left-addon+.next-search-input .next-input{border-bottom-left-radius:0;border-top-left-radius:0}.next-search .next-search-input{width:100%}.next-search .next-search-btn{-webkit-box-shadow:none;box-shadow:none}.next-search .next-search-symbol-icon:before{content:"\ea20";content:var(--search-search-icon-content,"")}.next-search-normal{width:600px}.next-search-normal .next-search-left{border-top-left-radius:2px;border-top-left-radius:var(--search-normal-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--search-normal-corner,2px)}.next-search-normal .next-input{border-radius:2px 0 0 2px;border-radius:var(--search-normal-corner,2px) 0 0 var(--search-normal-corner,2px)}.next-search-normal .next-btn{border-radius:0 2px 2px 0;border-radius:0 var(--search-normal-corner,2px) var(--search-normal-corner,2px) 0}.next-search-normal.next-primary .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-primary-color,#c0c6cc)}.next-search-normal.next-primary .next-search-left .next-search-left-addon{border-right:1px solid #c0c6cc;border-right:1px solid var(--search-normal-primary-split-color,#c0c6cc)}.next-search-normal.next-primary:hover .next-btn,.next-search-normal.next-primary:hover .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-primary-hover-color,#c0c6cc)}.next-search-normal.next-primary .next-search-btn{background:#c0c6cc;background:var(--search-normal-primary-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-primary-color,#c0c6cc);color:#333;color:var(--search-normal-primary-btn-text-color,#333)}.next-search-normal.next-primary .next-search-btn:hover{background:#c0c6cc;background:var(--search-normal-primary-btn-hover-bg-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-primary-hover-color,#c0c6cc);color:#333;color:var(--search-normal-primary-btn-hover-text-color,#333)}.next-search-normal.next-primary .next-search-btn .next-icon{color:#333;color:var(--search-normal-primary-btn-text-color,#333)}.next-search-normal.next-primary .next-search-btn .next-icon:hover{color:#333;color:var(--search-normal-primary-btn-hover-text-color,#333)}.next-search-normal.next-primary.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-primary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-primary-shadow,none)}.next-search-normal.next-primary.next-large .next-search-btn,.next-search-normal.next-primary.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-primary-border-width,1px);height:36px;height:var(--search-normal-primary-l-height,36px)}.next-search-normal.next-primary.next-large .next-search-input{height:34px;height:calc(var(--search-normal-primary-l-height, 36px) - var(--search-normal-primary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-primary.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-primary-l-height, 36px) - var(--search-normal-primary-border-width, 1px)*2) \0 }.next-search-normal.next-primary.next-large .next-search-input input,.next-search-normal.next-primary.next-large .next-select{height:34px;height:calc(var(--search-normal-primary-l-height, 36px) - var(--search-normal-primary-border-width, 1px)*2)}.next-search-normal.next-primary.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-primary-l-btn-text-size,14px)}.next-search-normal.next-primary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-primary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-primary-btn-text-padding-left,0)}.next-search-normal.next-primary.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-primary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-primary-shadow,none)}.next-search-normal.next-primary.next-medium .next-search-btn,.next-search-normal.next-primary.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-primary-border-width,1px);height:32px;height:var(--search-normal-primary-m-height,32px)}.next-search-normal.next-primary.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-primary-m-height, 32px) - var(--search-normal-primary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-primary.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-primary-m-height, 32px) - var(--search-normal-primary-border-width, 1px)*2) \0 }.next-search-normal.next-primary.next-medium .next-search-input input,.next-search-normal.next-primary.next-medium .next-select{height:30px;height:calc(var(--search-normal-primary-m-height, 32px) - var(--search-normal-primary-border-width, 1px)*2)}.next-search-normal.next-primary.next-medium .next-search-btn{font-size:12px;font-size:var(--search-normal-primary-m-btn-text-size,12px)}.next-search-normal.next-primary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-medium .next-search-btn .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-normal.next-primary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-primary-btn-text-padding-left,0)}.next-search-normal.next-primary .next-input{border-top-left-radius:1px;border-top-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-left-radius:1px;border-bottom-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal.next-secondary .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-secondary-color,#c0c6cc)}.next-search-normal.next-secondary .next-search-left .next-search-left-addon{border-right:1px solid #c0c6cc;border-right:1px solid var(--search-normal-secondary-split-color,#c0c6cc)}.next-search-normal.next-secondary:hover .next-btn,.next-search-normal.next-secondary:hover .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-secondary-hover-color,#c0c6cc)}.next-search-normal.next-secondary .next-search-btn{background:#c0c6cc;background:var(--search-normal-secondary-btn-bg-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-secondary-btn-bg-color,#c0c6cc);color:#333;color:var(--search-normal-secondary-btn-text-color,#333)}.next-search-normal.next-secondary .next-search-btn:hover{background:#c0c6cc;background:var(--search-normal-secondary-btn-hover-bg-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-secondary-hover-color,#c0c6cc);color:#333;color:var(--search-normal-secondary-btn-hover-text-color,#333)}.next-search-normal.next-secondary .next-search-btn .next-icon{color:#333;color:var(--search-normal-secondary-btn-text-color,#333)}.next-search-normal.next-secondary .next-search-btn .next-icon:hover{color:#333;color:var(--search-normal-secondary-btn-hover-text-color,#333)}.next-search-normal.next-secondary.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-secondary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-secondary-shadow,none)}.next-search-normal.next-secondary.next-large .next-search-btn,.next-search-normal.next-secondary.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-secondary-border-width,1px);height:36px;height:var(--search-normal-secondary-l-height,36px)}.next-search-normal.next-secondary.next-large .next-search-input{height:34px;height:calc(var(--search-normal-secondary-l-height, 36px) - var(--search-normal-secondary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-secondary.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-secondary-l-height, 36px) - var(--search-normal-secondary-border-width, 1px)*2) \0 }.next-search-normal.next-secondary.next-large .next-search-input input,.next-search-normal.next-secondary.next-large .next-select{height:34px;height:calc(var(--search-normal-secondary-l-height, 36px) - var(--search-normal-secondary-border-width, 1px)*2)}.next-search-normal.next-secondary.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-secondary-l-btn-text-size,14px)}.next-search-normal.next-secondary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-secondary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-secondary-btn-text-padding-left,0)}.next-search-normal.next-secondary.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-secondary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-secondary-shadow,none)}.next-search-normal.next-secondary.next-medium .next-search-btn,.next-search-normal.next-secondary.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-secondary-border-width,1px);height:32px;height:var(--search-normal-secondary-m-height,32px)}.next-search-normal.next-secondary.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-secondary-m-height, 32px) - var(--search-normal-secondary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-secondary.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-secondary-m-height, 32px) - var(--search-normal-secondary-border-width, 1px)*2) \0 }.next-search-normal.next-secondary.next-medium .next-search-input input,.next-search-normal.next-secondary.next-medium .next-select{height:30px;height:calc(var(--search-normal-secondary-m-height, 32px) - var(--search-normal-secondary-border-width, 1px)*2)}.next-search-normal.next-secondary.next-medium .next-search-btn{font-size:12px;font-size:var(--search-normal-secondary-m-btn-text-size,12px)}.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-secondary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-secondary-btn-text-padding-left,0)}.next-search-normal.next-secondary .next-input{border-top-left-radius:1px;border-top-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-secondary-border-width, 1px));border-bottom-left-radius:1px;border-bottom-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-secondary-border-width, 1px))}.next-search-normal.next-normal .next-search-left{border-color:#e3e4e6;border-color:var(--search-normal-normal-color,#e3e4e6)}.next-search-normal.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #e3e4e6;border-right:1px solid var(--search-normal-normal-split-color,#e3e4e6)}.next-search-normal.next-normal:hover .next-btn,.next-search-normal.next-normal:hover .next-search-left{border-color:#d1d5d9;border-color:var(--search-normal-normal-hover-color,#d1d5d9)}.next-search-normal.next-normal .next-search-btn{background:#f8f8f9;background:var(--search-normal-normal-btn-bg-color,#f8f8f9);border-color:#e3e4e6;border-color:var(--search-normal-normal-color,#e3e4e6);color:#333;color:var(--search-normal-normal-btn-text-color,#333)}.next-search-normal.next-normal .next-search-btn:hover{background:#f8f8f9;background:var(--search-normal-normal-btn-hover-bg-color,#f8f8f9);border-color:#d1d5d9;border-color:var(--search-normal-normal-hover-color,#d1d5d9);color:#333;color:var(--search-normal-normal-btn-hover-text-color,#333)}.next-search-normal.next-normal .next-search-btn .next-icon{color:#333;color:var(--search-normal-normal-btn-text-color,#333)}.next-search-normal.next-normal .next-search-btn .next-icon:hover{color:#333;color:var(--search-normal-normal-btn-hover-text-color,#333)}.next-search-normal.next-normal.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-normal-shadow,none);box-shadow:none;box-shadow:var(--search-normal-normal-shadow,none)}.next-search-normal.next-normal.next-large .next-search-btn,.next-search-normal.next-normal.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-normal-border-width,1px);height:36px;height:var(--search-normal-normal-l-height,36px)}.next-search-normal.next-normal.next-large .next-search-input{height:34px;height:calc(var(--search-normal-normal-l-height, 36px) - var(--search-normal-normal-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-normal.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-normal-l-height, 36px) - var(--search-normal-normal-border-width, 1px)*2) \0 }.next-search-normal.next-normal.next-large .next-search-input input,.next-search-normal.next-normal.next-large .next-select{height:34px;height:calc(var(--search-normal-normal-l-height, 36px) - var(--search-normal-normal-border-width, 1px)*2)}.next-search-normal.next-normal.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-normal-l-btn-text-size,14px)}.next-search-normal.next-normal.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-normal.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-normal-btn-text-padding-left,0)}.next-search-normal.next-normal.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-normal-shadow,none);box-shadow:none;box-shadow:var(--search-normal-normal-shadow,none)}.next-search-normal.next-normal.next-medium .next-search-btn,.next-search-normal.next-normal.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-normal-border-width,1px);height:32px;height:var(--search-normal-normal-m-height,32px)}.next-search-normal.next-normal.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-normal-m-height, 32px) - var(--search-normal-normal-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-normal.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-normal-m-height, 32px) - var(--search-normal-normal-border-width, 1px)*2) \0 }.next-search-normal.next-normal.next-medium .next-search-input input,.next-search-normal.next-normal.next-medium .next-select{height:30px;height:calc(var(--search-normal-normal-m-height, 32px) - var(--search-normal-normal-border-width, 1px)*2)}.next-search-normal.next-normal.next-medium .next-search-btn{font-size:14px;font-size:var(--search-normal-normal-m-btn-text-size,14px)}.next-search-normal.next-normal.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-normal.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-normal-btn-text-padding-left,0)}.next-search-normal.next-normal .next-input{border-top-left-radius:1px;border-top-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-normal-border-width, 1px));border-bottom-left-radius:1px;border-bottom-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-normal-border-width, 1px))}.next-search-normal.next-dark .next-search-left{border-color:#0064c8;border-color:var(--search-normal-dark-color,#0064c8)}.next-search-normal.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #0064c8;border-right:1px solid var(--search-normal-dark-color,#0064c8)}.next-search-normal.next-dark:hover .next-btn,.next-search-normal.next-dark:hover .next-search-left{border-color:#0050a0;border-color:var(--search-normal-dark-hover-color,#0050a0)}.next-search-normal.next-dark .next-search-btn{background:#0064c8;background:var(--search-normal-dark-color,#0064c8);border-color:#0064c8;border-color:var(--search-normal-dark-color,#0064c8);color:#fff;color:var(--search-normal-dark-btn-text-color,#fff)}.next-search-normal.next-dark .next-search-btn:hover{background:#0050a0;background:var(--search-normal-dark-btn-hover-bg-color,#0050a0);border-color:#0050a0;border-color:var(--search-normal-dark-hover-color,#0050a0);color:#fff;color:var(--search-normal-dark-btn-hover-text-color,#fff)}.next-search-normal.next-dark .next-search-btn .next-icon{color:#fff;color:var(--search-normal-dark-btn-text-color,#fff)}.next-search-normal.next-dark .next-search-btn .next-icon:hover{color:#fff;color:var(--search-normal-dark-btn-hover-text-color,#fff)}.next-search-normal.next-dark .next-select-inner,.next-search-normal.next-dark input{color:#fff;color:var(--search-normal-dark-text-color,#fff)}.next-search-normal.next-dark .next-input,.next-search-normal.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-normal.next-dark.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-dark-shadow,none);box-shadow:none;box-shadow:var(--search-normal-dark-shadow,none)}.next-search-normal.next-dark.next-large .next-search-btn,.next-search-normal.next-dark.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-dark-border-width,1px);height:36px;height:var(--search-normal-dark-l-height,36px)}.next-search-normal.next-dark.next-large .next-search-input{height:34px;height:calc(var(--search-normal-dark-l-height, 36px) - var(--search-normal-dark-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-dark.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-dark-l-height, 36px) - var(--search-normal-dark-border-width, 1px)*2) \0 }.next-search-normal.next-dark.next-large .next-search-input input,.next-search-normal.next-dark.next-large .next-select{height:34px;height:calc(var(--search-normal-dark-l-height, 36px) - var(--search-normal-dark-border-width, 1px)*2)}.next-search-normal.next-dark.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-dark-l-btn-text-size,14px)}.next-search-normal.next-dark.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-dark.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-dark-btn-text-padding-left,0)}.next-search-normal.next-dark.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-dark-shadow,none);box-shadow:none;box-shadow:var(--search-normal-dark-shadow,none)}.next-search-normal.next-dark.next-medium .next-search-btn,.next-search-normal.next-dark.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-dark-border-width,1px);height:32px;height:var(--search-normal-dark-m-height,32px)}.next-search-normal.next-dark.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-dark-m-height, 32px) - var(--search-normal-dark-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-dark.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-dark-m-height, 32px) - var(--search-normal-dark-border-width, 1px)*2) \0 }.next-search-normal.next-dark.next-medium .next-search-input input,.next-search-normal.next-dark.next-medium .next-select{height:30px;height:calc(var(--search-normal-dark-m-height, 32px) - var(--search-normal-dark-border-width, 1px)*2)}.next-search-normal.next-dark.next-medium .next-search-btn{font-size:14px;font-size:var(--search-normal-dark-m-btn-text-size,14px)}.next-search-normal.next-dark.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-dark.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-dark-btn-text-padding-left,0)}.next-search-normal:not([dir=rtl]) .next-search-left{border-right:none}.next-search-simple{width:300px;-webkit-box-shadow:none;-webkit-box-shadow:var(--search-simple-normal-shadow,none);box-shadow:none;box-shadow:var(--search-simple-normal-shadow,none);border-radius:2px;border-radius:var(--search-simple-corner,2px)}.next-search-simple .next-search-icon{cursor:pointer;-webkit-transition:all .1s linear;transition:all .1s linear}.next-search-simple .next-input,.next-search-simple .next-search-left{border-radius:2px;border-radius:var(--search-simple-corner,2px)}.next-search-simple.next-large .next-search-icon{margin-right:12px}.next-search-simple.next-medium .next-search-icon{margin-right:8px}.next-search-simple.next-normal .next-search-left{border-color:#e3e4e6;border-color:var(--search-simple-normal-color,#e3e4e6)}.next-search-simple.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #e3e4e6;border-right:1px solid var(--search-simple-normal-split-color,#e3e4e6)}.next-search-simple.next-normal:hover .next-search-left{border-color:#d1d5d9;border-color:var(--search-simple-normal-hover-color,#d1d5d9)}.next-search-simple.next-normal .next-search-icon{color:#888;color:var(--search-simple-normal-icon-text-color,#888)}.next-search-simple.next-normal .next-search-icon:hover{color:#555;color:var(--search-simple-normal-icon-hover-text-color,#555)}.next-search-simple.next-normal .next-search-left{border-width:1px;border-width:var(--search-simple-normal-border-width,1px)}.next-search-simple.next-normal.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-large .next-search-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-simple.next-normal.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-medium .next-search-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-simple.next-dark .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-color,#577899)}.next-search-simple.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #577899;border-right:1px solid var(--search-simple-dark-split-color,#577899)}.next-search-simple.next-dark:hover .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-hover-color,#577899)}.next-search-simple.next-dark .next-search-icon{color:#888;color:var(--search-simple-dark-icon-text-color,#888)}.next-search-simple.next-dark .next-search-icon:hover{color:#555;color:var(--search-simple-dark-icon-hover-text-color,#555)}.next-search-simple.next-dark .next-select-inner,.next-search-simple.next-dark input{color:#fff;color:var(--search-simple-dark-text-color,#fff)}.next-search-simple.next-dark .next-input,.next-search-simple.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-simple.next-dark .next-search-left{border-width:1px;border-width:var(--search-simple-dark-border-width,1px)}.next-search-simple.next-dark.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-large .next-search-icon:before,.next-search-simple.next-dark.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-medium .next-search-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-simple .next-select.next-large{height:34px;height:calc(var(--form-element-large-height, 36px) - 2px)}.next-search-simple .next-select.next-medium{height:30px;height:calc(var(--form-element-medium-height, 32px) - 2px)}.next-slick{position:relative;display:block;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.next-slick,.next-slick *,.next-slick :after,.next-slick :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-slick-initialized .next-slick-slide{display:block}.next-slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0;-webkit-transform:translateZ(0);transform:translateZ(0)}.next-slick-list:focus{outline:none}.next-slick-list.dragging{cursor:pointer;cursor:hand}.next-slick-track{position:relative;top:0;left:0;display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.next-slick-slide{float:left;height:100%;min-height:1px;outline:0;-webkit-transition:all .1s linear;transition:all .1s linear}.next-slick[dir=rtl] .next-slick-slide{float:right}.next-slick-slide img{display:block}.next-slick-arrow{display:block;position:absolute;cursor:pointer;text-align:center;-webkit-transition:all .1s linear;transition:all .1s linear}.next-slick-arrow.inner{color:#fff;color:var(--slick-arrow-icon-color-normal,#fff);background:#000;background:var(--slick-arrow-bg-color-normal,#000);opacity:.2;opacity:var(--slick-arrow-bg-opacity-normal,.2);padding:0;border:none}.next-slick-arrow.inner:focus,.next-slick-arrow.inner:hover{color:#fff;color:var(--slick-arrow-icon-color-hover,#fff);background:#000;background:var(--slick-arrow-bg-color-hover,#000);opacity:.4;opacity:var(--slick-arrow-bg-opacity-hover,.4)}.next-slick-arrow.inner.disabled{color:#c1c1c1;color:var(--slick-arrow-icon-color-disabled,#c1c1c1);background:#000;background:var(--slick-arrow-bg-color-disabled,#000);opacity:.05;opacity:var(--slick-arrow-bg-opacity-disabled,.05)}.next-slick-arrow.outer{color:#555;color:var(--slick-arrow-icon-color-normal-outer,#555);background:transparent;background:var(--slick-arrow-bg-color-normal-outer,transparent);opacity:.32;opacity:var(--slick-arrow-bg-opacity-normal-outer,.32);padding:0;border:none;border-radius:0;border-radius:var(--slick-arrow-corner-radius-outer,0)}.next-slick-arrow.outer:focus,.next-slick-arrow.outer:hover{color:#111;color:var(--slick-arrow-icon-color-hover-outer,#111);background:transparent;background:var(--slick-arrow-bg-color-hover-outer,transparent);opacity:.32;opacity:var(--slick-arrow-bg-opacity-hover-outer,.32)}.next-slick-arrow.outer.disabled{color:#c1c1c1;color:var(--slick-arrow-icon-color-disabled-outer,#c1c1c1);background:transparent;background:var(--slick-arrow-bg-color-disabled-outer,transparent);opacity:.32;opacity:var(--slick-arrow-bg-opacity-disabled-outer,.32)}.next-slick-arrow.disabled{cursor:not-allowed}.next-slick-dots{display:block;position:absolute;margin:0;padding:0}.next-slick-dots-item{position:relative;display:inline-block;cursor:pointer}.next-slick-dots-item button{cursor:pointer;border:0 solid #fff;border-width:var(--slick-dots-border-width,0);outline:none;padding:0;height:8px;height:var(--slick-dots-height,8px);width:8px;width:var(--slick-dots-width,8px);border-radius:50%;border-radius:var(--slick-dots-border-radius,50%);background:rgba(0,0,0,.32)}.next-slick-dots-item button:hover{background-color:rgba(0,0,0,.32);border-color:#fff}.next-slick-dots-item button:focus,.next-slick-dots-item button:hover{background:hsla(0,0%,100%,.5)}.next-slick-dots-item.active button{background:#0064c8;border-color:#fff;-webkit-animation:zoom .3s cubic-bezier(.86,0,.07,1);animation:zoom .3s cubic-bezier(.86,0,.07,1)}.next-slick-dots.hoz{width:100%;bottom:12px;bottom:var(--slick-dots-position-bottom,12px);left:0;text-align:center}.next-slick-dots.hoz .next-slick-dots-item{margin:0 4px;margin:0 var(--slick-dots-margin-lr,4px)}.next-slick-dots.ver{width:16px;width:calc(var(--slick-dots-width, 8px) + 8px);top:0;right:20px;right:var(--slick-dots-position-right,20px);bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.next-slick-dots.ver .next-slick-dots-item{margin:0;margin:var(--slick-dots-margin-tb,0) 0}.next-slick.next-slick-hoz.next-slick-outer{padding:0 24px;padding:0 var(--slick-track-padding-lr,24px)}.next-slick.next-slick-hoz .next-slick-arrow.medium{width:28px;width:var(--slick-arrow-width-m,28px);height:56px;height:var(--slick-arrow-height-m,56px);line-height:56px;line-height:var(--slick-arrow-height-m,56px)}.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner{top:calc(50% - 28px);top:calc(50% - var(--slick-arrow-height-m, 56px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer{top:calc(50% - 28px);top:calc(50% - var(--slick-arrow-height-m, 56px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-prev{left:-4px;left:calc(0px - var(--slick-arrow-position-lr-m, 4px))}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-next{right:-4px;right:calc(0px - var(--slick-arrow-position-lr-m, 4px))}.next-slick.next-slick-hoz .next-slick-arrow.large{width:48px;width:var(--slick-arrow-width-l,48px);height:96px;height:var(--slick-arrow-height-l,96px);line-height:96px;line-height:var(--slick-arrow-height-l,96px)}.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.large.inner{top:calc(50% - 48px);top:calc(50% - var(--slick-arrow-height-l, 96px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.large.outer{top:calc(50% - 48px);top:calc(50% - var(--slick-arrow-height-l, 96px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-prev{left:-8px;left:calc(0px - var(--slick-arrow-position-lr-l, 8px))}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-next{right:-8px;right:calc(0px - var(--slick-arrow-position-lr-l, 8px))}.next-slick.next-slick-ver.next-slick-outer{padding:24px 0;padding:var(--slick-ver-track-padding-tb,24px) 0}.next-slick.next-slick-ver .next-slick-slide{display:block;height:auto}.next-slick.next-slick-ver .next-slick-arrow.medium{width:56px;width:var(--slick-ver-arrow-width-m,56px);height:28px;height:var(--slick-ver-arrow-height-m,28px);line-height:28px;line-height:var(--slick-ver-arrow-height-m,28px)}.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.medium.inner{left:calc(50% - 28px);left:calc(50% - var(--slick-ver-arrow-width-m, 56px)/2)}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.medium.outer{left:calc(50% - 28px);left:calc(50% - var(--slick-ver-arrow-width-m, 56px)/2)}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-prev{top:-4px;top:calc(0px - var(--slick-ver-arrow-position-tb-m, 4px))}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-next{bottom:-4px;bottom:calc(0px - var(--slick-ver-arrow-position-tb-m, 4px))}.next-slick.next-slick-ver .next-slick-arrow.large{width:96px;width:var(--slick-ver-arrow-width-l,96px);height:48px;height:var(--slick-ver-arrow-height-l,48px);line-height:48px;line-height:var(--slick-ver-arrow-height-l,48px)}.next-slick.next-slick-ver .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.large.inner{left:calc(50% - 48px);left:calc(50% - var(--slick-ver-arrow-width-l, 96px)/2)}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.large.outer{left:calc(50% - 48px);left:calc(50% - var(--slick-ver-arrow-width-l, 96px)/2)}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-prev{top:-16px;top:calc(0px - var(--slick-ver-arrow-position-tb-l, 16px))}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-next{bottom:-16px;bottom:calc(0px - var(--slick-ver-arrow-position-tb-l, 16px))}.next-split-btn{display:inline-block;position:relative}.next-split-btn-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-split-btn-trigger .next-icon{-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.next-split-btn-trigger.next-expand .next-split-btn-symbol-fold{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-split-btn-trigger.next-btn-normal:not(:disabled):not(.disabled) .next-icon{color:#888;color:var(--split-btn-trigger-normal-icon-color,#888)}.next-split-btn-trigger.next-small{padding-left:4px;padding-right:4px}.next-split-btn-trigger.next-medium{padding-left:8px;padding-right:8px}.next-split-btn-symbol-fold:before{content:"\ea1f";content:var(--split-btn-fold-icon-content,"")}.next-split-btn-symbol-unfold:before{content:"";content:var(--split-btn-unfold-icon-content,"")}.next-step,.next-step *,.next-step:after,.next-step :after,.next-step:before,.next-step :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-step{width:100%;position:relative;border:none}.next-step-item{position:relative;vertical-align:middle;outline:0;height:100%}.next-step-item-body{outline:0}.next-step-item-node{-webkit-transition:all .1s linear;transition:all .1s linear}.next-step-item-node.clicked{-webkit-transform:scale3d(.8,.8,.8);transform:scale3d(.8,.8,.8)}.next-step-horizontal{overflow:hidden}.next-step-horizontal>.next-step-item{display:inline-block;text-align:left}.next-step-vertical>.next-step-item{display:block;text-align:center}.next-step-arrow{display:-webkit-box;display:-ms-flexbox;display:flex}.next-step-arrow .next-step-item{-webkit-box-flex:1;-ms-flex:1;flex:1;height:32px;height:var(--step-arrow-item-height,32px);line-height:32px;line-height:var(--step-arrow-item-height,32px);margin-left:16px;margin-left:calc(var(--step-arrow-item-height, 32px)/2);margin-right:4px;margin-right:calc(var(--step-arrow-item-height, 32px)/8)}.next-step-arrow .next-step-item:before{content:"";position:absolute;left:-16px;left:calc(0px - var(--step-arrow-item-height, 32px)/2);top:0;z-index:1;border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow .next-step-item:after{content:"";position:absolute;right:-16px;right:calc(0px - var(--step-arrow-item-height, 32px)/2);top:0;z-index:1;border-top:16px solid transparent;border-top:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-bottom:16px solid transparent;border-bottom:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-left:16px solid transparent;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow .next-step-item .next-step-item-container{min-width:100px;height:32px;height:var(--step-arrow-item-height,32px);cursor:pointer}.next-step-arrow .next-step-item .next-step-item-container .next-step-item-title{height:32px;height:var(--step-arrow-item-height,32px);line-height:32px;line-height:var(--step-arrow-item-height,32px);font-weight:400;font-weight:var(--step-arrow-item-title-weight,normal);font-size:14px;font-size:var(--step-arrow-item-title-size,14px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.next-step-arrow>.next-step-item-wait{background:#f7f9fa;background:var(--step-arrow-item-wait-background,#f7f9fa)}.next-step-arrow>.next-step-item-wait .next-step-item-tail-overlay{background:#000}.next-step-arrow>.next-step-item-wait .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-node-circle,.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-node-dot{background:#f7f9fa;background:var(--step-arrow-item-wait-background,#f7f9fa);border-color:#000}.next-step-arrow>.next-step-item-wait .next-step-item-content,.next-step-arrow>.next-step-item-wait .next-step-item-title{color:#888;color:var(--step-arrow-item-title-wait-color,#888);word-break:break-word}.next-step-arrow>.next-step-item-wait .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow>.next-step-item-wait .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow>.next-step-item-wait .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow>.next-step-item-wait .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow>.next-step-item-wait .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow>.next-step-item-wait .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow>.next-step-item-wait .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow>.next-step-item-wait:before{border:16px solid #f7f9fa;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow>.next-step-item-wait:after{border-left-color:#f7f9fa;border-left-color:var(--step-arrow-item-wait-background,#f7f9fa)}.next-step-arrow>.next-step-item-process{background:#0064c8;background:var(--step-arrow-item-process-background,#0064c8)}.next-step-arrow>.next-step-item-process .next-step-item-tail-overlay{background:#000}.next-step-arrow>.next-step-item-process .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-node-circle,.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-arrow-item-process-background,#0064c8);border-color:#000}.next-step-arrow>.next-step-item-process .next-step-item-content,.next-step-arrow>.next-step-item-process .next-step-item-title{color:#fff;color:var(--step-arrow-item-title-process-color,#fff);word-break:break-word}.next-step-arrow>.next-step-item-process .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow>.next-step-item-process .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow>.next-step-item-process .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow>.next-step-item-process .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow>.next-step-item-process .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow>.next-step-item-process .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow>.next-step-item-process .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow>.next-step-item-process:before{border:16px solid #0064c8;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow>.next-step-item-process:after{border-left-color:#0064c8;border-left-color:var(--step-arrow-item-process-background,#0064c8)}.next-step-arrow>.next-step-item-finish{background:#0064c8;background:var(--step-arrow-item-finish-background,#0064c8)}.next-step-arrow>.next-step-item-finish .next-step-item-tail-overlay{background:#000}.next-step-arrow>.next-step-item-finish .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-node-circle,.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-arrow-item-finish-background,#0064c8);border-color:#000}.next-step-arrow>.next-step-item-finish .next-step-item-content,.next-step-arrow>.next-step-item-finish .next-step-item-title{color:#fff;color:var(--step-arrow-item-title-finish-color,#fff);word-break:break-word}.next-step-arrow>.next-step-item-finish .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow>.next-step-item-finish .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow>.next-step-item-finish .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow>.next-step-item-finish .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow>.next-step-item-finish .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow>.next-step-item-finish .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow>.next-step-item-finish .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow>.next-step-item-finish:before{border:16px solid #0064c8;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow>.next-step-item-finish:after{border-left-color:#0064c8;border-left-color:var(--step-arrow-item-finish-background,#0064c8)}.next-step-arrow .next-step-item-disabled{cursor:not-allowed;background:#f8f8f9;background:var(--step-arrow-item-disabled-background,#f8f8f9)}.next-step-arrow .next-step-item-disabled .next-step-item-tail-overlay{background:#000}.next-step-arrow .next-step-item-disabled .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-node-circle,.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-node-dot{background:#f8f8f9;background:var(--step-arrow-item-disabled-background,#f8f8f9);border-color:#000}.next-step-arrow .next-step-item-disabled .next-step-item-content,.next-step-arrow .next-step-item-disabled .next-step-item-title{color:#c1c1c1;color:var(--step-arrow-item-title-disabled-color,#c1c1c1);word-break:break-word}.next-step-arrow .next-step-item-disabled .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow .next-step-item-disabled .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow .next-step-item-disabled .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow .next-step-item-disabled .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow .next-step-item-disabled .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow .next-step-item-disabled .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow .next-step-item-disabled .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow .next-step-item-disabled:before{border:16px solid #f8f8f9;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow .next-step-item-disabled:after{border-left-color:#f8f8f9;border-left-color:var(--step-arrow-item-disabled-background,#f8f8f9)}.next-step-arrow .next-step-item-disabled .next-step-item-container{cursor:not-allowed}.next-step-arrow .next-step-item-read-only,.next-step-arrow .next-step-item-read-only .next-step-item-container{cursor:default}.next-step-arrow .next-step-item-first{margin-left:0}.next-step-arrow .next-step-item-first:before{border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow .next-step-item-last{margin-right:0}.next-step-arrow .next-step-item-last:after{border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-circle .next-step-item-container{display:inline-block;vertical-align:middle;position:relative;padding:0 12px;padding:0 var(--step-circle-item-node-padding,12px)}.next-step-circle .next-step-item-container .next-step-item-progress .next-progress-circle-text{color:#0064c8;color:var(--step-circle-item-node-process-percent-color,#0064c8);font-size:12px;font-size:var(--step-circle-item-node-process-percent-size,12px)}.next-step-circle .next-step-item-container .next-step-item-progress .next-progress-circle-underlay{stroke:#c0c6cc;stroke:var(--step-circle-item-node-wait-border-color,#c0c6cc);stroke-width:3px;stroke-width:calc(var(--step-circle-item-node-border-width, 1px)*3)}.next-step-circle .next-step-item-container .next-step-item-progress .next-progress-circle-overlay-normal{stroke:#0064c8;stroke:var(--step-circle-item-node-finish-border-color,#0064c8);stroke-width:3px;stroke-width:calc(var(--step-circle-item-node-border-width, 1px)*3)}.next-step-circle .next-step-item-container .next-step-item-node-placeholder{display:inline-block}.next-step-circle>.next-step-item-wait .next-step-item-tail-overlay{background:#c0c6cc;background:var(--step-circle-item-tail-wait-color,#c0c6cc)}.next-step-circle>.next-step-item-wait .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-node{color:#333;color:var(--step-circle-item-node-wait-color,#333)}.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-node-circle,.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-circle-item-node-wait-background,#fff);border-color:#c0c6cc;border-color:var(--step-circle-item-node-wait-border-color,#c0c6cc)}.next-step-circle>.next-step-item-wait .next-step-item-content,.next-step-circle>.next-step-item-wait .next-step-item-title{color:#333;color:var(--step-circle-item-title-wait-color,#333);word-break:break-word}.next-step-circle>.next-step-item-wait .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle>.next-step-item-wait .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle>.next-step-item-wait .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle>.next-step-item-wait .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle>.next-step-item-wait .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle>.next-step-item-wait .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle>.next-step-item-wait .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle>.next-step-item-process .next-step-item-tail-overlay{background:#c0c6cc;background:var(--step-circle-item-tail-process-color,#c0c6cc)}.next-step-circle>.next-step-item-process .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-node{color:#fff;color:var(--step-circle-item-node-process-color,#fff)}.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-node-circle,.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-circle-item-node-process-background,#0064c8);border-color:#0064c8;border-color:var(--step-circle-item-node-process-border-color,#0064c8)}.next-step-circle>.next-step-item-process .next-step-item-content,.next-step-circle>.next-step-item-process .next-step-item-title{color:#333;color:var(--step-circle-item-title-process-color,#333);word-break:break-word}.next-step-circle>.next-step-item-process .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle>.next-step-item-process .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle>.next-step-item-process .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle>.next-step-item-process .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle>.next-step-item-process .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle>.next-step-item-process .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle>.next-step-item-process .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle>.next-step-item-finish .next-step-item-tail-overlay{background:#0064c8;background:var(--step-circle-item-tail-finish-color,#0064c8)}.next-step-circle>.next-step-item-finish .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-node{color:#0064c8;color:var(--step-circle-item-node-finish-color,#0064c8)}.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-node-circle,.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-circle-item-node-finish-background,#fff);border-color:#0064c8;border-color:var(--step-circle-item-node-finish-border-color,#0064c8)}.next-step-circle>.next-step-item-finish .next-step-item-content,.next-step-circle>.next-step-item-finish .next-step-item-title{color:#333;color:var(--step-circle-item-title-finish-color,#333);word-break:break-word}.next-step-circle>.next-step-item-finish .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle>.next-step-item-finish .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle>.next-step-item-finish .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle>.next-step-item-finish .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle>.next-step-item-finish .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle>.next-step-item-finish .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle>.next-step-item-finish .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle .next-step-item-disabled .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-circle-item-tail-disabled-color,#e3e4e6)}.next-step-circle .next-step-item-disabled .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-node{color:#b3b3b3;color:var(--step-circle-item-node-disabled-color,#b3b3b3)}.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-node-circle,.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-circle-item-node-disabled-background,#fff);border-color:#e3e4e6;border-color:var(--step-circle-item-node-disabled-border-color,#e3e4e6)}.next-step-circle .next-step-item-disabled .next-step-item-content,.next-step-circle .next-step-item-disabled .next-step-item-title{color:#b3b3b3;color:var(--step-circle-item-title-disabled-color,#b3b3b3);word-break:break-word}.next-step-circle .next-step-item-disabled .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle .next-step-item-disabled .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle .next-step-item-disabled .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle .next-step-item-disabled .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle .next-step-item-disabled .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle .next-step-item-disabled .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle .next-step-item-disabled .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle .next-step-item-disabled .next-step-item-node,.next-step-circle .next-step-item-disabled .next-step-item-node-placeholder{cursor:not-allowed}.next-step-circle .next-step-item-read-only .next-step-item-node,.next-step-circle .next-step-item-read-only .next-step-item-node-placeholder{cursor:default}.next-step-circle .next-step-item-last .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal{text-align:center;white-space:nowrap}.next-step-circle.next-step-horizontal>.next-step-item .next-step-item-content,.next-step-circle.next-step-horizontal>.next-step-item .next-step-item-title{white-space:normal}.next-step-circle.next-step-horizontal>.next-step-item-wait .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-wait>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal>.next-step-item-process .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-process>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal>.next-step-item-finish .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-finish>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal>.next-step-item-disabled .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-disabled>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item{vertical-align:unset}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-vertical{font-size:0;display:table-cell;vertical-align:middle;position:relative}.next-step-circle.next-step-vertical .next-step-item-container{padding:0}.next-step-circle.next-step-vertical>.next-step-item:last-child .next-step-item-tail{display:block;visibility:hidden}.next-step-circle.next-step-vertical>.next-step-item-wait .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-wait>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-circle.next-step-vertical>.next-step-item-process .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-process>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-circle.next-step-vertical>.next-step-item-finish .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-finish>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-circle.next-step-vertical>.next-step-item-disabled .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-disabled>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-dot .next-step-item-container{display:inline-block;vertical-align:middle;position:relative;padding:0 8px;padding:0 var(--step-dot-item-dot-padding,8px);margin-top:-1px;margin-bottom:-1px}.next-step-dot .next-step-item-container .next-step-item-node-placeholder{display:inline-block}.next-step-dot .next-step-item-container .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot .next-step-item-container .next-step-item-node .next-icon .next-icon-remote,.next-step-dot .next-step-item-container .next-step-item-node .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-step-dot>.next-step-item-wait .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-dot-item-tail-wait-color,#e3e4e6)}.next-step-dot>.next-step-item-wait .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-node{color:#888;color:var(--step-dot-item-node-wait-color,#888)}.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-node-circle,.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-dot-item-node-wait-background,#fff);border-color:#e3e4e6;border-color:var(--step-dot-item-node-wait-border-color,#e3e4e6)}.next-step-dot>.next-step-item-wait .next-step-item-content,.next-step-dot>.next-step-item-wait .next-step-item-title{color:#888;color:var(--step-dot-item-title-wait-color,#888);word-break:break-word}.next-step-dot>.next-step-item-wait .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot>.next-step-item-wait .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot>.next-step-item-wait .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot>.next-step-item-wait .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot>.next-step-item-wait .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot>.next-step-item-wait .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot>.next-step-item-wait .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot>.next-step-item-wait .next-step-item-content,.next-step-dot>.next-step-item-wait .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot>.next-step-item-wait .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot>.next-step-item-process .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-dot-item-tail-process-color,#e3e4e6)}.next-step-dot>.next-step-item-process .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-node{color:#0064c8;color:var(--step-dot-item-node-process-color,#0064c8)}.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-node-circle,.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-dot-item-node-process-background,#0064c8);border-color:#0064c8;border-color:var(--step-dot-item-node-process-border-color,#0064c8)}.next-step-dot>.next-step-item-process .next-step-item-content,.next-step-dot>.next-step-item-process .next-step-item-title{color:#b3b3b3;color:var(--step-dot-item-title-process-color,#b3b3b3);word-break:break-word}.next-step-dot>.next-step-item-process .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot>.next-step-item-process .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot>.next-step-item-process .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot>.next-step-item-process .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot>.next-step-item-process .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot>.next-step-item-process .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot>.next-step-item-process .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot>.next-step-item-process .next-step-item-content,.next-step-dot>.next-step-item-process .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot>.next-step-item-process .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot>.next-step-item-finish .next-step-item-tail-overlay{background:#0064c8;background:var(--step-dot-item-tail-finish-color,#0064c8)}.next-step-dot>.next-step-item-finish .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-node{color:#0064c8;color:var(--step-dot-item-node-finish-color,#0064c8)}.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-node-circle,.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-dot-item-node-finish-background,#fff);border-color:#0064c8;border-color:var(--step-dot-item-node-finish-border-color,#0064c8)}.next-step-dot>.next-step-item-finish .next-step-item-content,.next-step-dot>.next-step-item-finish .next-step-item-title{color:#b3b3b3;color:var(--step-dot-item-title-finish-color,#b3b3b3);word-break:break-word}.next-step-dot>.next-step-item-finish .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot>.next-step-item-finish .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot>.next-step-item-finish .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot>.next-step-item-finish .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot>.next-step-item-finish .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot>.next-step-item-finish .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot>.next-step-item-finish .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot>.next-step-item-finish .next-step-item-content,.next-step-dot>.next-step-item-finish .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot>.next-step-item-finish .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot .next-step-item-disabled .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-dot-item-tail-disabled-color,#e3e4e6)}.next-step-dot .next-step-item-disabled .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-node{color:#e3e4e6;color:var(--step-dot-item-node-disabled-color,#e3e4e6)}.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-node-circle,.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-dot-item-node-disabled-background,#fff);border-color:#c0c6cc;border-color:var(--step-dot-item-node-disabled-border-color,#c0c6cc)}.next-step-dot .next-step-item-disabled .next-step-item-content,.next-step-dot .next-step-item-disabled .next-step-item-title{color:#c1c1c1;color:var(--step-dot-item-title-disabled-color,#c1c1c1);word-break:break-word}.next-step-dot .next-step-item-disabled .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot .next-step-item-disabled .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot .next-step-item-disabled .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot .next-step-item-disabled .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot .next-step-item-disabled .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot .next-step-item-disabled .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot .next-step-item-disabled .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot .next-step-item-disabled .next-step-item-content,.next-step-dot .next-step-item-disabled .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot .next-step-item-disabled .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot .next-step-item-disabled .next-step-item-node,.next-step-dot .next-step-item-disabled .next-step-item-node-placeholder{cursor:not-allowed}.next-step-dot .next-step-item-read-only .next-step-item-node,.next-step-dot .next-step-item-read-only .next-step-item-node-placeholder{cursor:default}.next-step-dot .next-step-item-last .next-step-item-tail{display:none}.next-step-dot.next-step-horizontal{text-align:center;white-space:nowrap}.next-step-dot.next-step-horizontal>.next-step-item .next-step-item-content,.next-step-dot.next-step-horizontal>.next-step-item .next-step-item-title{white-space:normal}.next-step-dot.next-step-horizontal .next-step-item-node .next-icon{vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-wait .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-wait>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-horizontal>.next-step-item-process .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-process>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-horizontal>.next-step-item-finish .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-finish>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-horizontal>.next-step-item-disabled .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-disabled>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-vertical{padding:0 0 0 4px;font-size:0;display:table-cell;position:relative}.next-step-dot.next-step-vertical .next-step-item-container{padding:0}.next-step-dot.next-step-vertical>.next-step-item:last-child .next-step-item-tail{display:block;visibility:hidden}.next-step-dot.next-step-vertical>.next-step-item-wait .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-wait>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-dot.next-step-vertical>.next-step-item-process .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-process>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-dot.next-step-vertical>.next-step-item-finish .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-finish>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-dot.next-step-vertical>.next-step-item-disabled .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-disabled>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-horizontal[dir=rtl]>.next-step-item{text-align:right}.next-step-arrow[dir=rtl] .next-step-item{height:32px;height:var(--step-arrow-item-height,32px);line-height:32px;line-height:var(--step-arrow-item-height,32px);margin-left:4px;margin-left:calc(var(--step-arrow-item-height, 32px)/8);margin-right:16px;margin-right:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl] .next-step-item:before{right:-16px;right:calc(0px - var(--step-arrow-item-height, 32px)/2);left:auto;border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow[dir=rtl] .next-step-item:after{left:-32px;left:calc(0px - var(--step-arrow-item-height, 32px)/2*2);right:auto;border-top:16px solid transparent;border-top:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-bottom:16px solid transparent;border-bottom:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-right:16px solid transparent;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow[dir=rtl]>.next-step-item-wait{background:#f7f9fa;background:var(--step-arrow-item-wait-background,#f7f9fa)}.next-step-arrow[dir=rtl]>.next-step-item-wait .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl]>.next-step-item-wait:before{border:16px solid #f7f9fa;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl]>.next-step-item-wait:after{border-right-color:#f7f9fa;border-right-color:var(--step-arrow-item-wait-background,#f7f9fa);border-left-color:transparent}.next-step-arrow[dir=rtl]>.next-step-item-process{background:#0064c8;background:var(--step-arrow-item-process-background,#0064c8)}.next-step-arrow[dir=rtl]>.next-step-item-process .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl]>.next-step-item-process:before{border:16px solid #0064c8;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl]>.next-step-item-process:after{border-right-color:#0064c8;border-right-color:var(--step-arrow-item-process-background,#0064c8);border-left-color:transparent}.next-step-arrow[dir=rtl]>.next-step-item-finish{background:#0064c8;background:var(--step-arrow-item-finish-background,#0064c8)}.next-step-arrow[dir=rtl]>.next-step-item-finish .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl]>.next-step-item-finish:before{border:16px solid #0064c8;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl]>.next-step-item-finish:after{border-right-color:#0064c8;border-right-color:var(--step-arrow-item-finish-background,#0064c8);border-left-color:transparent}.next-step-arrow[dir=rtl] .next-step-item-disabled{background:#f8f8f9;background:var(--step-arrow-item-disabled-background,#f8f8f9)}.next-step-arrow[dir=rtl] .next-step-item-disabled .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl] .next-step-item-disabled:before{border:16px solid #f8f8f9;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl] .next-step-item-disabled:after{border-right-color:#f8f8f9;border-right-color:var(--step-arrow-item-disabled-background,#f8f8f9);border-left-color:transparent}.next-step-arrow[dir=rtl] .next-step-item-first{margin-right:0}.next-step-arrow[dir=rtl] .next-step-item-last{margin-left:0}.next-step-circle[dir=rtl] .next-step-item-disabled .next-step-item-node-dot,.next-step-circle[dir=rtl]>.next-step-item-finish .next-step-item-node-dot,.next-step-circle[dir=rtl]>.next-step-item-process .next-step-item-node-dot,.next-step-circle[dir=rtl]>.next-step-item-wait .next-step-item-node-dot{right:50%;left:auto}.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-disabled>.next-step-item-body,.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-finish>.next-step-item-body,.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-process>.next-step-item-body,.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-wait>.next-step-item-body{right:-22px;right:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);left:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl] .next-step-item-disabled .next-step-item-node-dot,.next-step-dot[dir=rtl]>.next-step-item-finish .next-step-item-node-dot,.next-step-dot[dir=rtl]>.next-step-item-process .next-step-item-node-dot,.next-step-dot[dir=rtl]>.next-step-item-wait .next-step-item-node-dot{right:50%;left:auto}.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-disabled>.next-step-item-body,.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-finish>.next-step-item-body,.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-process>.next-step-item-body,.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-wait>.next-step-item-body{right:-34px;right:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);left:auto}.next-step-dot[dir=rtl].next-step-vertical{padding:0 4px 0 0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{text-align:right}.next-switch:after[dir=rtl]{content:" ";-webkit-transition:all .1s linear;transition:all .1s linear;-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}.next-switch-medium[dir=rtl]:after,.next-switch-small[dir=rtl]:after{right:100%;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.next-switch-on[dir=rtl]>.next-switch-children{color:#fff;color:var(--switch-normal-on-color-font,#fff)}.next-switch-on[disabled][dir=rtl]:after{left:0;right:100%;-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none)}.next-switch-off[dir=rtl]:after{right:0;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-box-shadow:0 0 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--switch-rtl-on-shadow,0 0 4px 0 rgba(0,0,0,.16));box-shadow:0 0 4px 0 rgba(0,0,0,.16);box-shadow:var(--switch-rtl-on-shadow,0 0 4px 0 rgba(0,0,0,.16))}.next-switch-off.next-switch-small[dir=rtl]>.next-switch-children,.next-switch-off[dir=rtl]>.next-switch-children{right:auto}.next-switch{outline:none;text-align:left;cursor:pointer;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-transition:background .1s cubic-bezier(.4,0,.2,1),border-color .1s cubic-bezier(.4,0,.2,1);transition:background .1s cubic-bezier(.4,0,.2,1),border-color .1s cubic-bezier(.4,0,.2,1)}.next-switch,.next-switch *,.next-switch :after,.next-switch :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-switch-btn{-webkit-transition:all .15s cubic-bezier(.4,0,.2,1);transition:all .15s cubic-bezier(.4,0,.2,1);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}.next-switch:after{content:""}.next-switch-loading{pointer-events:none}.next-switch-loading .next-icon-loading{color:#0064c8;color:var(--color-brand1-6,#0064c8);text-align:center;-webkit-transform:translate(-1px,-1px);-webkit-transform:translate(calc(0px - var(--switch-border-width-trigger, 1px)),calc(0px - var(--switch-border-width-trigger, 1px)));-ms-transform:translate(-1px,-1px);-ms-transform:translate(calc(0px - var(--switch-border-width-trigger, 1px)),calc(0px - var(--switch-border-width-trigger, 1px)));transform:translate(-1px,-1px);transform:translate(calc(0px - var(--switch-border-width-trigger, 1px)),calc(0px - var(--switch-border-width-trigger, 1px)))}.next-switch-loading .next-icon-loading.next-switch-inner-icon:before{vertical-align:top}.next-switch-medium{position:relative;display:inline-block;border:2px solid transparent;border:var(--switch-border-width-container,2px) solid transparent;width:48px;width:var(--switch-size-m-width,48px);height:24px;height:calc(var(--switch-size-m-trigger, 20px) + var(--switch-border-width-container, 2px)*2);border-radius:12px;border-radius:var(--switch-size-m-radius-container,12px)}.next-switch-medium:not([disabled]):active .next-switch-btn{width:26px;width:calc(var(--switch-size-m-trigger, 20px)*1.3)}.next-switch-medium.next-switch-on:not([disabled]):active .next-switch-btn{left:calc(100% - 26px);left:calc(100% - var(--switch-size-m-trigger, 20px)*1.3)}.next-switch-medium.next-switch-auto-width{min-width:48px;min-width:var(--switch-size-m-width,48px);width:auto;overflow:initial}.next-switch-medium:after{content:""}.next-switch-medium>.next-switch-btn{border:1px solid transparent;border:var(--switch-border-width-trigger,1px) solid transparent;position:absolute;left:calc(100% - 20px);left:calc(100% - var(--switch-size-m-trigger, 20px));width:20px;width:var(--switch-size-m-trigger,20px);height:20px;height:var(--switch-size-m-trigger,20px);border-radius:50%;border-radius:var(--switch-size-m-radius-trigger,50%);-webkit-box-sizing:border-box;box-sizing:border-box}.next-switch-medium>.next-switch-children{font-size:12px;font-size:var(--font-size-body-1,12px);height:20px;height:var(--switch-size-m-trigger,20px);line-height:20px;line-height:var(--switch-size-m-trigger,20px)}.next-switch-medium.next-switch.next-switch-on>.next-switch-children{margin:0 28px 0 8px;margin:0 calc(var(--switch-size-m-trigger, 20px) + var(--switch-size-m-trigger-padding-r, 8px)) 0 var(--switch-size-m-trigger-padding-l,8px)}.next-switch-medium.next-switch.next-switch-off>.next-switch-children{margin:0 8px 0 28px;margin:0 var(--switch-size-m-trigger-padding-r,8px) 0 calc(var(--switch-size-m-trigger, 20px) + var(--switch-size-m-trigger-padding-l, 8px))}.next-switch-medium.next-switch-loading .next-icon-loading{line-height:20px;line-height:var(--switch-size-m-trigger,20px);height:20px;height:var(--switch-size-m-trigger,20px);width:20px;width:var(--switch-size-m-trigger,20px)}.next-switch-medium.next-switch-loading .next-icon-loading .next-icon-remote,.next-switch-medium.next-switch-loading .next-icon-loading:before{width:16px;width:var(--switch-size-m-inner-icon,16px);font-size:16px;font-size:var(--switch-size-m-inner-icon,16px);line-height:inherit}.next-switch-small{position:relative;display:inline-block;border:2px solid transparent;border:var(--switch-border-width-container,2px) solid transparent;width:40px;width:var(--switch-size-s-width,40px);height:20px;height:calc(var(--switch-size-s-trigger, 16px) + var(--switch-border-width-container, 2px)*2);border-radius:12px;border-radius:var(--switch-size-s-radius-container,12px)}.next-switch-small:not([disabled]):active .next-switch-btn{width:20.8px;width:calc(var(--switch-size-s-trigger, 16px)*1.3)}.next-switch-small.next-switch-on:not([disabled]):active .next-switch-btn{left:calc(100% - 20.8px);left:calc(100% - var(--switch-size-s-trigger, 16px)*1.3)}.next-switch-small.next-switch-auto-width{min-width:40px;min-width:var(--switch-size-s-width,40px);width:auto;overflow:initial}.next-switch-small:after{content:""}.next-switch-small>.next-switch-btn{border:1px solid transparent;border:var(--switch-border-width-trigger,1px) solid transparent;position:absolute;left:calc(100% - 16px);left:calc(100% - var(--switch-size-s-trigger, 16px));width:16px;width:var(--switch-size-s-trigger,16px);height:16px;height:var(--switch-size-s-trigger,16px);border-radius:50%;border-radius:var(--switch-size-s-radius-trigger,50%);-webkit-box-sizing:border-box;box-sizing:border-box}.next-switch-small>.next-switch-children{font-size:12px;font-size:var(--font-size-body-1,12px);height:16px;height:var(--switch-size-s-trigger,16px);line-height:16px;line-height:var(--switch-size-s-trigger,16px)}.next-switch-small.next-switch.next-switch-on>.next-switch-children{margin:0 24px 0 8px;margin:0 calc(var(--switch-size-s-trigger, 16px) + var(--switch-size-s-trigger-padding-r, 8px)) 0 var(--switch-size-s-trigger-padding-l,8px)}.next-switch-small.next-switch.next-switch-off>.next-switch-children{margin:0 8px 0 24px;margin:0 var(--switch-size-s-trigger-padding-r,8px) 0 calc(var(--switch-size-s-trigger, 16px) + var(--switch-size-s-trigger-padding-l, 8px))}.next-switch-small.next-switch-loading .next-icon-loading{line-height:16px;line-height:var(--switch-size-s-trigger,16px);height:16px;height:var(--switch-size-s-trigger,16px);width:16px;width:var(--switch-size-s-trigger,16px)}.next-switch-small.next-switch-loading .next-icon-loading .next-icon-remote,.next-switch-small.next-switch-loading .next-icon-loading:before{width:12px;width:var(--switch-size-s-inner-icon,12px);font-size:12px;font-size:var(--switch-size-s-inner-icon,12px);line-height:inherit}.next-switch-on{background-color:#00a700;background-color:var(--switch-normal-on-bg-color,#00a700)}.next-switch-on .next-switch-btn{-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none);background-color:#fff;background-color:var(--switch-normal-on-trigger-bg-color,#fff);border-color:transparent;border-color:var(--switch-handle-on-border-color,transparent)}.next-switch-on>.next-switch-children{color:#fff;color:var(--switch-normal-on-color-font,#fff)}.next-switch-on.hover,.next-switch-on:focus,.next-switch-on:hover{background-color:#00a700;background-color:var(--switch-hover-on-bg-color,#00a700)}.next-switch-on.hover .next-switch-btn,.next-switch-on:focus .next-switch-btn,.next-switch-on:hover .next-switch-btn{background-color:#fff;background-color:var(--switch-hover-on-trigger-bg-color,#fff)}.next-switch-on[disabled]{background-color:#d1d5d9;background-color:var(--switch-disabled-on-bg-color,#d1d5d9);cursor:not-allowed}.next-switch-on[disabled] .next-switch-btn{right:0;-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none);background-color:#fff;background-color:var(--switch-disabled-on-trigger-bg-color,#fff);border-color:transparent;border-color:var(--switch-handle-disabled-border-color,transparent)}.next-switch-on[disabled]>.next-switch-children{color:#b3b3b3;color:var(--switch-disabled-on-color-font,#b3b3b3)}.next-switch-off{background-color:#666;background-color:var(--switch-normal-off-bg-color,#666);border-color:transparent;border-color:var(--switch-normal-off-border-color,transparent)}.next-switch-off.hover,.next-switch-off:focus,.next-switch-off:hover{background-color:#577899;background-color:var(--switch-hover-off-bg-color,#577899);border-color:transparent;border-color:var(--switch-hover-off-border-color,transparent)}.next-switch-off .next-switch-btn{left:0;-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none);background-color:#fff;background-color:var(--switch-normal-off-trigger-bg-color,#fff);border-color:transparent;border-color:var(--switch-handle-off-border-color,transparent)}.next-switch-off.hover .next-switch-btn,.next-switch-off:focus .next-switch-btn,.next-switch-off:hover .next-switch-btn{background-color:#fff;background-color:var(--switch-hover-off-trigger-bg-color,#fff)}.next-switch-off>.next-switch-children{color:#f8f8f9;color:var(--switch-normal-off-color-font,#f8f8f9)}.next-switch-off[disabled]{background-color:#d1d5d9;background-color:var(--switch-disabled-off-bg-color,#d1d5d9);cursor:not-allowed}.next-switch-off[disabled] .next-switch-btn{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--switch-off-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--switch-off-shadow,0 2px 4px 0 rgba(0,0,0,.16));background-color:#f8f8f9;background-color:var(--switch-disabled-off-trigger-bg-color,#f8f8f9);border-color:transparent;border-color:var(--switch-handle-disabled-border-color,transparent)}.next-switch-off[disabled]>.next-switch-children{color:#555;color:var(--switch-disabled-off-color-font,#555)}.next-tabs{width:100%}.next-tabs,.next-tabs *,.next-tabs :after,.next-tabs :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tabs-bar{outline:none}.next-tabs-bar-popup{overflow-y:auto;max-height:480px}.next-tabs-nav-container{position:relative}.next-tabs-nav-container:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-tabs-nav-wrap{overflow:hidden}.next-tabs-nav-scroll{overflow:hidden;white-space:nowrap}.next-tabs-scrollable .next-tabs-nav-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.next-tabs-scrollable .next-tabs-nav-scroll::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;-webkit-appearance:none;opacity:0!important}.next-tabs-nav{display:inline-block;position:relative;-webkit-transition:all .3s ease;transition:all .3s ease;list-style:none;padding:0;margin:0}.next-tabs-nav-appear,.next-tabs-nav-enter{-webkit-animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-tabs-nav-leave{-webkit-animation:fadeOutLeft .2s cubic-bezier(.78,.14,.15,.86);animation:fadeOutLeft .2s cubic-bezier(.78,.14,.15,.86);-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-tabs-nav.next-disable-animation .next-tabs-tab:before{-webkit-transition:none;transition:none}.next-tabs-tab{display:inline-block;position:relative;-webkit-transition:all .1s linear;transition:all .1s linear}.next-tabs-tab-inner{position:relative;cursor:pointer;text-decoration:none}.next-tabs-tab:before{content:"";position:absolute;-webkit-transition:all .3s ease;transition:all .3s ease}.next-tabs-tab.active{font-weight:600;font-weight:var(--tab-item-font-weight-selected,600)}.next-tabs-tab .next-tabs-tab-close{color:#555;color:var(--tab-close-icon-color,#555)}.next-tabs-tab .next-tabs-tab-close:hover{color:#111;color:var(--tab-close-icon-color-hover,#111)}.next-tabs-tab .next-tabs-tab-close:focus{outline:none}.next-tabs-tab.active .next-tabs-tab-close{color:#0064c8;color:var(--tab-close-icon-color-selected,#0064c8)}.next-tabs-tab.disabled .next-tabs-tab-close{color:#c0c6cc;color:var(--tab-close-icon-color-disabled,#c0c6cc)}.next-tabs-tab:focus{outline:none}.next-tabs-tabpane{visibility:hidden;opacity:0}.next-tabs-tabpane.active{visibility:visible;opacity:1;height:auto}.next-tabs-tabpane.hidden{overflow:hidden;height:0!important;margin:0!important;padding:0!important;border:0!important}.next-tabs-btn-down,.next-tabs-btn-next,.next-tabs-btn-prev{position:absolute;top:0;cursor:pointer;padding:0;border:0;outline:none;height:100%;background:transparent;border-color:transparent}.next-tabs-btn-down,.next-tabs-btn-down.visited,.next-tabs-btn-down:link,.next-tabs-btn-down:visited,.next-tabs-btn-next,.next-tabs-btn-next.visited,.next-tabs-btn-next:link,.next-tabs-btn-next:visited,.next-tabs-btn-prev,.next-tabs-btn-prev.visited,.next-tabs-btn-prev:link,.next-tabs-btn-prev:visited{color:#333;color:var(--tab-nav-arrow-color-normal,#333)}.next-tabs-btn-down.active,.next-tabs-btn-down.hover,.next-tabs-btn-down:active,.next-tabs-btn-down:focus,.next-tabs-btn-down:hover,.next-tabs-btn-next.active,.next-tabs-btn-next.hover,.next-tabs-btn-next:active,.next-tabs-btn-next:focus,.next-tabs-btn-next:hover,.next-tabs-btn-prev.active,.next-tabs-btn-prev.hover,.next-tabs-btn-prev:active,.next-tabs-btn-prev:focus,.next-tabs-btn-prev:hover{color:#0064c8;color:var(--tab-nav-arrow-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-tabs-btn-down.disabled,.next-tabs-btn-next.disabled,.next-tabs-btn-prev.disabled{cursor:not-allowed;color:#555;color:var(--tab-nav-arrow-color-disabled,#555)}.next-tabs-btn-next{right:12px;right:var(--tab-nav-arrow-right-positon-right,12px)}.next-tabs-btn-prev{right:32px;right:var(--tab-nav-arrow-left-positon-right,32px)}.next-tabs-btn-down{right:8px;right:var(--tab-nav-arrow-down-positon-right,8px)}.next-tabs .next-tab-icon-dropdown:before{content:"\ea1f";content:var(--tab-icon-dropdown-content,"")}.next-tabs .next-tab-icon-prev:before{content:"\ea2c";content:var(--tab-icon-prev-content,"")}.next-tabs .next-tab-icon-next:before{content:"\ea29";content:var(--tab-icon-next-content,"")}.next-tabs-content{overflow:hidden}.next-tabs-vertical>.next-tabs-bar .next-tabs-nav{width:100%}.next-tabs-vertical>.next-tabs-bar .next-tabs-tab{display:block}.next-tabs.next-medium .next-tabs-nav-container-scrolling{padding-right:60px;padding-right:var(--tab-nav-scroll-padding-right-m,60px)}.next-tabs.next-medium .next-tabs-tab-inner{font-size:14px;font-size:var(--tab-item-text-size-m,14px);padding:12px 16px;padding:var(--tab-item-padding-tb-size-m,12px) var(--tab-item-padding-lr-size-m,16px)}.next-tabs.next-medium .next-tabs-tab-inner .next-icon{line-height:1}.next-tabs.next-medium .next-tabs-tab-inner .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-tab-inner .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tabs.next-medium .next-tabs-tab-inner .next-tabs-tab-close{margin-left:8px;margin-left:var(--tab-nav-close-icon-padding-l-size-m,8px)}.next-tabs.next-medium .next-tabs-btn-down .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-btn-down .next-icon:before,.next-tabs.next-medium .next-tabs-btn-next .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-btn-next .next-icon:before,.next-tabs.next-medium .next-tabs-btn-prev .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-btn-prev .next-icon:before,.next-tabs.next-medium .next-tabs-tab-inner .next-tabs-tab-close .next-icon-remote,.next-tabs.next-medium .next-tabs-tab-inner .next-tabs-tab-close:before{width:12px;font-size:12px;line-height:inherit}.next-tabs.next-small .next-tabs-nav-container-scrolling{padding-right:56px;padding-right:var(--tab-nav-scroll-padding-right-s,56px)}.next-tabs.next-small .next-tabs-tab-inner{font-size:12px;font-size:var(--tab-item-text-size-s,12px);padding:8px 16px;padding:var(--tab-item-padding-tb-size-s,8px) var(--tab-item-padding-lr-size-s,16px)}.next-tabs.next-small .next-tabs-tab-inner .next-icon{line-height:1}.next-tabs.next-small .next-tabs-tab-inner .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-tab-inner .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close{margin-left:8px;margin-left:var(--tab-nav-close-icon-padding-l-size-s,8px)}.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close .next-icon-remote,.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close:before{width:16px;font-size:16px}}.next-tabs.next-small .next-tabs-btn-down .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-btn-down .next-icon:before,.next-tabs.next-small .next-tabs-btn-next .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-btn-next .next-icon:before,.next-tabs.next-small .next-tabs-btn-prev .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-btn-prev .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tabs-pure>.next-tabs-bar{border-bottom:1px solid #e3e4e6;border-bottom:var(--line-solid,solid) var(--tab-pure-divider-line-width,1px) var(--tab-pure-divider-border-color,#e3e4e6);background-color:transparent;background-color:var(--tab-pure-bg-color,transparent)}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container{margin-bottom:-1px;margin-bottom:calc(0px - var(--tab-pure-divider-line-width, 1px));-webkit-box-shadow:none;-webkit-box-shadow:var(--tab-pure-divider-shadow,none);box-shadow:none;box-shadow:var(--tab-pure-divider-shadow,none)}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab{color:#333;color:var(--tab-pure-text-color-normal,#333);background-color:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab:hover{cursor:pointer;color:#0064c8;color:var(--tab-pure-text-color-hover,#0064c8);background-color:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-pure-text-color-selected,#0064c8);background-color:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c0c6cc;color:var(--tab-pure-text-color-disabled,#c0c6cc);background:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab:before{border-radius:0;width:0;border-bottom:2px solid #0064c8;border-bottom:var(--tab-pure-ink-bar-width,2px) solid var(--tab-pure-ink-bar-color,#0064c8);left:50%;bottom:0}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab.active:before{width:100%;left:0}.next-tabs-wrapped>.next-tabs-bar{background:transparent;background:var(--tab-wrapped-bar-bg-color,transparent)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab{color:#333;color:var(--tab-wrapped-text-color,#333);background-color:#fff;background-color:var(--tab-wrapped-bg-color,#fff)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab:hover{cursor:pointer;color:#333;color:var(--tab-wrapped-text-color-hover,#333);background-color:#f8f8f9;background-color:var(--tab-wrapped-bg-color-hover,#f8f8f9)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-wrapped-text-color-selected,#0064c8);background-color:#fff;background-color:var(--tab-wrapped-bg-color-selected,#fff)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c1c1c1;color:var(--tab-wrapped-text-color-disabled,#c1c1c1);background:#f8f8f9;background:var(--tab-wrapped-bg-color-disabled,#f8f8f9)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab .next-tabs-tab-close{color:#555;color:var(--tab-close-icon-color,#555)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab .next-tabs-tab-close:hover{color:#111;color:var(--tab-close-icon-color-hover,#111)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab .next-tabs-tab-close:focus{outline:none}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.active .next-tabs-tab-close{color:#0064c8;color:var(--tab-close-icon-color-selected,#0064c8)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.disabled .next-tabs-tab-close{color:#c0c6cc;color:var(--tab-close-icon-color-disabled,#c0c6cc)}.next-tabs-wrapped:after,.next-tabs-wrapped:before{content:"";display:table}.next-tabs-wrapped:after{clear:both}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar,.next-tabs-wrapped>.next-tabs-content{position:relative}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab{margin-right:-1px;margin-right:var(--tab-wrapped-tab-margin-right,-1px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:var(--tab-wrapped-tab-corner-radius,0) var(--tab-wrapped-tab-corner-radius,0) 0 0;border-width:1px;border-width:var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab.active{border-color:#e3e4e6 #e3e4e6 #fff;border-color:var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-bg-color-selected,#fff)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);width:0;border-top:2px solid #0064c8;border-top:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);left:50%;top:-1px;top:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab.active:before{width:100%;left:0;left:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab.active{border-width:1px;border-width:var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar:before{content:"";position:absolute;top:100%;width:100%;height:0;border-bottom:1px solid #e3e4e6;border-bottom:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6);-webkit-transform:translateY(-1px);-webkit-transform:translateY(calc(0px - var(--tab-wrapped-content-border-line-width, 1px)));-ms-transform:translateY(-1px);-ms-transform:translateY(calc(0px - var(--tab-wrapped-content-border-line-width, 1px)));transform:translateY(-1px);transform:translateY(calc(0px - var(--tab-wrapped-content-border-line-width, 1px)));display:block}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar{position:relative}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab{margin-right:-1px;margin-right:var(--tab-wrapped-tab-margin-right,-1px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:0 0 var(--tab-wrapped-tab-corner-radius,0) var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab.active{border-color:#fff #e3e4e6 #e3e4e6;border-color:var(--tab-wrapped-bg-color-selected,#fff) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);width:0;border-bottom:2px solid #0064c8;border-bottom:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);left:50%;bottom:-1px;bottom:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab.active:before{width:100%;left:0;left:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-content{top:1px;top:var(--tab-wrapped-border-line-width,1px);border-bottom:1px solid #e3e4e6;border-bottom:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar{float:left}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab{float:none;margin-bottom:4px;margin-bottom:var(--tab-wrapped-tab-margin-bottom,4px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:var(--tab-wrapped-tab-corner-radius,0) 0 0 var(--tab-wrapped-tab-corner-radius,0);border-width:1px;border-width:var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab.active{border-color:#e3e4e6 #fff #e3e4e6 #e3e4e6;border-color:var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-bg-color-selected,#fff) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);height:0;border-left:2px solid #0064c8;border-left:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);top:50%;left:-1px;left:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab.active:before{height:100%;top:0;top:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab.active{border-width:1px;border-width:var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-left>.next-tabs-content{right:1px;right:var(--tab-wrapped-border-line-width,1px);border-left:1px solid #e3e4e6;border-left:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar{float:right}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab{float:none;margin-bottom:4px;margin-bottom:var(--tab-wrapped-tab-margin-bottom,4px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:0 var(--tab-wrapped-tab-corner-radius,0) var(--tab-wrapped-tab-corner-radius,0) 0;border-width:1px;border-width:var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab.active{border-color:#e3e4e6 #e3e4e6 #e3e4e6 #fff;border-color:var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-bg-color-selected,#fff)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);height:0;border-right:2px solid #0064c8;border-right:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);top:50%;right:-1px;right:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab.active:before{height:100%;top:0;top:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab.active{border-width:1px;border-width:var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-right>.next-tabs-content{right:-1px;right:calc(0px - var(--tab-wrapped-border-line-width, 1px));border-right:1px solid #e3e4e6;border-right:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab{-webkit-transition:background-color .1s linear;transition:background-color .1s linear;border:1px solid #c0c6cc;border:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc);border-right-color:transparent;margin-right:-1px;margin-right:calc(0px - var(--tab-capsule-tab-border-line-width, 1px));color:#333;color:var(--tab-capsule-text-color,#333);background-color:#fff;background-color:var(--tab-capsule-bg-color,#fff)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:first-child{border-radius:2px 0 0 2px;border-radius:var(--tab-capsule-corner-radius,2px) 0 0 var(--tab-capsule-corner-radius,2px)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-radius:0 2px 2px 0;border-radius:0 var(--tab-capsule-corner-radius,2px) var(--tab-capsule-corner-radius,2px) 0}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active,.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-right:1px solid #c0c6cc;border-right:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active{border-color:#c0c6cc;border-color:var(--tab-capsule-tab-border-line-color-active,#c0c6cc)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.disabled{border-color:#e3e4e6;border-color:var(--tab-capsule-tab-border-line-color-disabled,#e3e4e6)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:hover{z-index:2;border-right:1px solid #c0c6cc;border-right:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--tab-capsule-tab-border-line-color-hover,#c0c6cc);cursor:pointer;color:#333;color:var(--tab-capsule-text-color-hover,#333);background-color:#f7f9fa;background-color:var(--tab-capsule-bg-color-hover,#f7f9fa)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-capsule-text-color-selected,#0064c8);background-color:#eff3f8;background-color:var(--tab-capsule-bg-color-selected,#eff3f8)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c1c1c1;color:var(--tab-capsule-text-color-disabled,#c1c1c1);background:#f8f8f9;background:var(--tab-capsule-bg-color-disabled,#f8f8f9)}.next-tabs-text>.next-tabs-bar .next-tabs-tab{color:#555;color:var(--tab-text-text-color-normal,#555);background-color:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab:hover{cursor:pointer;color:#0064c8;color:var(--tab-text-text-color-hover,#0064c8);background-color:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-text-text-color-selected,#0064c8);background-color:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c1c1c1;color:var(--tab-text-text-color-disabled,#c1c1c1);background:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab:not(:last-child):after{content:"";position:absolute;right:0;top:calc(50% - 6px);top:calc(50% - var(--tab-text-item-sep-height, 12px)/2);width:1px;width:var(--tab-text-item-sep-width,1px);height:12px;height:var(--tab-text-item-sep-height,12px);background-color:#c0c6cc;background-color:var(--tab-text-item-sep-color,#c0c6cc)}.next-tabs-pure>.next-tabs-bar{position:relative}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-capsule>.next-tabs-bar{position:relative}.next-tabs-capsule>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-text>.next-tabs-bar{position:relative}.next-tabs-text>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs[dir=rtl].next-medium .next-tabs-nav-container-scrolling{padding-left:60px;padding-left:var(--tab-nav-scroll-padding-right-m,60px);padding-right:0}.next-tabs[dir=rtl].next-medium .next-tabs-tab-close{padding-right:8px;padding-right:var(--tab-nav-close-icon-padding-l-size-m,8px);padding-left:0}.next-tabs[dir=rtl].next-small .next-tabs-nav-container-scrolling{padding-left:56px;padding-left:var(--tab-nav-scroll-padding-right-s,56px);padding-right:0}.next-tabs[dir=rtl].next-small .next-tabs-tab-close{padding-right:8px;padding-right:var(--tab-nav-close-icon-padding-l-size-s,8px);padding-left:0}.next-tabs[dir=rtl].next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-nav-extra,.next-tabs[dir=rtl].next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-nav-extra,.next-tabs[dir=rtl]>.next-tabs-bar .next-tabs-nav-extra{right:auto;left:0}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab{border-top:1px solid #c0c6cc;border-bottom:1px solid #c0c6cc;border-right:1px solid #c0c6cc;border:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc);border-left:0}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab:first-child{border-left:0;border-radius:0 2px 2px 0;border-radius:0 var(--tab-capsule-corner-radius,2px) var(--tab-capsule-corner-radius,2px) 0}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-radius:2px 0 0 2px;border-radius:var(--tab-capsule-corner-radius,2px) 0 0 var(--tab-capsule-corner-radius,2px)}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active,.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-left:1px solid #c0c6cc;border-left:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc)}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active{margin-left:-1px;margin-left:calc(0px - var(--tab-capsule-tab-border-line-width, 1px));margin-right:auto;border-color:#c0c6cc;border-color:var(--tab-capsule-tab-border-line-color-active,#c0c6cc)}.next-tabs[dir=rtl] .next-tabs-btn-next{left:12px;left:var(--tab-nav-arrow-right-positon-right,12px);right:auto}.next-tabs[dir=rtl] .next-tabs-btn-prev{left:32px;left:var(--tab-nav-arrow-left-positon-right,32px);right:auto}.next-tabs[dir=rtl] .next-tabs-btn-down{left:8px;left:var(--tab-nav-arrow-down-positon-right,8px);right:auto}.next-tabs-text[dir=rtl]>.next-tabs-bar .next-tabs-tab:not(:last-child):after{content:"";position:absolute;left:0;right:auto}@-webkit-keyframes fadeInRightForTag{0%{opacity:0;-webkit-transform:rotate(45deg) translateX(20px);transform:rotate(45deg) translateX(20px)}to{opacity:1;-webkit-transform:rotate(45deg) translateX(0);transform:rotate(45deg) translateX(0)}}@keyframes fadeInRightForTag{0%{opacity:0;-webkit-transform:rotate(45deg) translateX(20px);transform:rotate(45deg) translateX(20px)}to{opacity:1;-webkit-transform:rotate(45deg) translateX(0);transform:rotate(45deg) translateX(0)}}.next-tag>.next-tag-body{overflow:hidden;text-overflow:ellipsis}.next-tag-checkable.next-tag-level-secondary{color:#111;color:var(--tag-normal-text-color,#111);border-color:transparent;background-color:transparent}.next-tag-checkable.next-tag-level-secondary:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-secondary:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-normal-text-color-hover,#0064c8)}.next-tag-default.next-tag-level-primary{color:#555;color:var(--tag-fill-text-color,#555);border-color:#c0c6cc;border-color:var(--tag-fill-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-fill-bg-color,#fff)}.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]).hover,.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]):hover{color:#333;color:var(--tag-fill-text-color-hover,#333);border-color:#c0c6cc;border-color:var(--tag-fill-border-color-hover,#c0c6cc);background-color:#fff;background-color:var(--tag-fill-bg-color-hover,#fff)}.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color-hover,#333)}.disabled.next-tag-default.next-tag-level-primary,.next-tag-default.next-tag-level-primary[disabled]{color:#b3b3b3;color:var(--tag-fill-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-fill-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-fill-bg-color-disabled,#fff)}.disabled.next-tag-default.next-tag-level-primary>.next-tag-close-btn,.next-tag-default.next-tag-level-primary[disabled]>.next-tag-close-btn{color:#b3b3b3;color:var(--tag-fill-tail-color-disabled,#b3b3b3)}.next-tag-default.next-tag-level-primary>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color,#333)}.next-tag-closable.next-tag-level-primary{color:#333;color:var(--tag-closable-primary-fill-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-closable-primary-fill-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-closable-primary-fill-bg-color,#fff)}.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]).hover,.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-closable-primary-fill-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-closable-primary-fill-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-closable-primary-fill-bg-color-hover,#f7f9fa)}.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color-hover,#333)}.disabled.next-tag-closable.next-tag-level-primary,.next-tag-closable.next-tag-level-primary[disabled]{color:#b3b3b3;color:var(--tag-closable-primary-fill-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-closable-primary-fill-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-closable-primary-fill-bg-color-disabled,#fff)}.disabled.next-tag-closable.next-tag-level-primary>.next-tag-close-btn,.next-tag-closable.next-tag-level-primary[disabled]>.next-tag-close-btn{color:#b3b3b3;color:var(--tag-fill-tail-color-disabled,#b3b3b3)}.next-tag-closable.next-tag-level-primary>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color,#333)}.next-tag-checkable.next-tag-level-primary{color:#333;color:var(--tag-checkable-fill-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-checkable-fill-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-checkable-fill-bg-color,#fff)}.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-checkable-fill-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-checkable-fill-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-checkable-fill-bg-color-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#111;color:var(--tag-checkable-fill-tail-color-hover,#111)}.disabled.next-tag-checkable.next-tag-level-primary,.next-tag-checkable.next-tag-level-primary[disabled]{color:#b3b3b3;color:var(--tag-checkable-fill-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-checkable-fill-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-checkable-fill-bg-color-disabled,#fff)}.disabled.next-tag-checkable.next-tag-level-primary>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary[disabled]>.next-tag-close-btn{color:#c1c1c1;color:var(--tag-checkable-fill-tail-color-disabled,#c1c1c1)}.next-tag-checkable.next-tag-level-primary>.next-tag-close-btn{color:#555;color:var(--tag-checkable-fill-tail-color,#555)}.next-tag-checkable.next-tag-level-primary.checked{color:#0064c8;color:var(--tag-checkable-primary-text-color,#0064c8);border-color:#0064c8;border-color:var(--tag-checkable-primary-border-color,#0064c8);background-color:#fff;background-color:var(--tag-checkable-primary-bg-color,#fff)}.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-checkable-primary-text-color-hover,#0064c8);border-color:#0064c8;border-color:var(--tag-checkable-primary-border-color-hover,#0064c8);background-color:#f7f9fa;background-color:var(--tag-checkable-primary-bg-color-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#fff;color:var(--tag-checkable-primary-tail-color-hover,#fff)}.disabled.next-tag-checkable.next-tag-level-primary.checked,.next-tag-checkable.next-tag-level-primary.checked[disabled]{color:#b3b3b3;color:var(--tag-checkable-primary-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-checkable-primary-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-checkable-primary-bg-color-disabled,#fff)}.disabled.next-tag-checkable.next-tag-level-primary.checked>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary.checked>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary.checked[disabled]>.next-tag-close-btn{color:#fff;color:var(--tag-checkable-primary-tail-color,#fff)}.next-tag-default.next-tag-level-normal{color:#333;color:var(--tag-bordered-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-bordered-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-bordered-bg,#fff)}.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]).hover,.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]):hover{color:#333;color:var(--tag-bordered-text-color-hover,#333);border-color:#c0c6cc;border-color:var(--tag-bordered-border-color-hover,#c0c6cc);background-color:#fff;background-color:var(--tag-bordered-bg-hover,#fff)}.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#111;color:var(--tag-bordered-tail-color-hover,#111)}.disabled.next-tag-default.next-tag-level-normal,.next-tag-default.next-tag-level-normal[disabled]{color:#b3b3b3;color:var(--tag-bordered-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-bordered-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-bordered-bg-disabled,#fff)}.disabled.next-tag-default.next-tag-level-normal>.next-tag-close-btn,.next-tag-default.next-tag-level-normal[disabled]>.next-tag-close-btn{color:#c1c1c1;color:var(--tag-bordered-tail-color-disabled,#c1c1c1)}.next-tag-default.next-tag-level-normal>.next-tag-close-btn{color:#555;color:var(--tag-bordered-tail-color,#555)}.next-tag-closable.next-tag-level-normal{color:#333;color:var(--tag-closable-bordered-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-closable-bordered-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-closable-bordered-bg,#fff)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-closable-bordered-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-closable-bordered-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-closable-bordered-bg-hover,#f7f9fa)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#333;color:var(--tag-closable-bordered-tail-color-hover,#333)}.disabled.next-tag-closable.next-tag-level-normal,.next-tag-closable.next-tag-level-normal[disabled]{color:#b3b3b3;color:var(--tag-closable-bordered-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-closable-bordered-border-color-disabled,#d1d5d9);background-color:transparent;background-color:var(--tag-closable-bordered-bg-disabled,transparent)}.disabled.next-tag-closable.next-tag-level-normal>.next-tag-close-btn,.next-tag-closable.next-tag-level-normal[disabled]>.next-tag-close-btn{color:#c1c1c1;color:var(--tag-closable-bordered-tail-color-disabled,#c1c1c1)}.next-tag-closable.next-tag-level-normal>.next-tag-close-btn{color:#333;color:var(--tag-closable-bordered-tail-color,#333)}.next-tag-checkable.next-tag-level-normal.checked{color:#0064c8;color:var(--tag-secondary-text-color,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color,#0064c8);background-color:transparent;background-color:var(--tag-secondary-bg,transparent)}.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-secondary-text-color-hover,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color-hover,#0064c8);background-color:#f7f9fa;background-color:var(--tag-secondary-bg-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-secondary.checked{color:#0064c8;color:var(--tag-secondary-text-color,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color,#0064c8);background-color:transparent;background-color:var(--tag-secondary-bg,transparent)}.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-secondary-text-color-hover,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color-hover,#0064c8);background-color:#f7f9fa;background-color:var(--tag-secondary-bg-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-secondary.checked:before{position:absolute;content:"";-webkit-font-smoothing:antialiased;background-color:#0064c8;background-color:var(--tag-checkable-secondary-bg-selected,#0064c8);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.next-tag-checkable.next-tag-level-secondary.checked:after{position:absolute;font-family:NextIcon;-webkit-font-smoothing:antialiased;content:"\e632";content:var(--icon-content-select,"");-webkit-transform:scale(.6);-ms-transform:scale(.6);transform:scale(.6);color:#fff;color:var(--tag-checkable-secondary-icon-color-selected,#fff)}.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]).hover:before,.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]):hover:before{background-color:#002850;background-color:var(--tag-checkable-secondary-bg-selected-hover,#002850)}.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]).hover:after,.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]):hover:after{color:#fff;color:var(--tag-checkable-secondary-icon-color-selected-hover,#fff)}.next-tag-checkable.next-tag-level-secondary.checked:disabled:before,.next-tag-checkable.next-tag-level-secondary.checked[disabled]:before{background-color:#e3e4e6;background-color:var(--tag-checkable-secondary-bg-selected-disabled,#e3e4e6)}.next-tag-checkable.next-tag-level-secondary.checked:disabled:after,.next-tag-checkable.next-tag-level-secondary.checked[disabled]:after{color:#fff;color:var(--tag-checkable-secondary-icon-color-selected-disabled,#fff)}.next-tag-checkable.next-tag-level-normal{color:#333;color:var(--tag-checkable-normal-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-checkable-normal-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-checkable-normal-bg,#fff)}.next-tag-checkable.next-tag-level-normal:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-normal:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-checkable-normal-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-checkable-normal-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-checkable-normal-bg-hover,#f7f9fa)}.disabled.next-tag-checkable.next-tag-level-normal,.next-tag-checkable.next-tag-level-normal[disabled]{color:#b3b3b3;color:var(--tag-checkable-normal-text-selected-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-checkable-normal-border-selected-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-checkable-normal-bg-selected-disabled,#fff)}.next-tag-checkable.next-tag-level-normal.checked:before{position:absolute;content:"";-webkit-font-smoothing:antialiased;background-color:#fff;background-color:var(--tag-checkable-normal-bg-selected,#fff);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.next-tag-checkable.next-tag-level-normal.checked:after{position:absolute;font-family:NextIcon;-webkit-font-smoothing:antialiased;content:"\e632";content:var(--icon-content-select,"");-webkit-transform:scale(.6);-ms-transform:scale(.6);transform:scale(.6);color:transparent;color:var(--tag-checkable-normal-icon-color-selected,transparent)}.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]).hover:before,.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]):hover:before{background-color:transparent;background-color:var(--tag-checkable-normal-bg-selected-hover,transparent)}.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]).hover:after,.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]):hover:after{color:transparent;color:var(--tag-checkable-normal-icon-color-selected-hover,transparent)}.next-tag-checkable.next-tag-level-normal.checked:disabled:before,.next-tag-checkable.next-tag-level-normal.checked[disabled]:before{background-color:#e3e4e6;background-color:var(--tag-checkable-normal-tick-bg-selected-disabled,#e3e4e6)}.next-tag-checkable.next-tag-level-normal.checked:disabled:after,.next-tag-checkable.next-tag-level-normal.checked[disabled]:after{color:#fff;color:var(--tag-checkable-normal-icon-color-selected-disabled,#fff)}.next-tag-closable.next-tag-level-normal:before{position:absolute;content:"";-webkit-font-smoothing:antialiased;background-color:#577899;background-color:var(--tag-closable-normal-bg,#577899);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.next-tag-closable.next-tag-level-normal:after{position:absolute;font-family:NextIcon;-webkit-font-smoothing:antialiased;content:"\e626";content:var(--icon-content-close,"");-webkit-transform:scale(.6);-ms-transform:scale(.6);transform:scale(.6);color:#fff;color:var(--tag-closable-normal-icon-color,#fff)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover:before,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover:before{background-color:#f7f9fa;background-color:var(--tag-closable-normal-bg-hover,#f7f9fa)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover:after,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover:after{color:#333;color:var(--tag-closable-normal-icon-color-hover,#333)}.next-tag-closable.next-tag-level-normal:disabled:before,.next-tag-closable.next-tag-level-normal[disabled]:before{background-color:#e3e4e6;background-color:var(--tag-closable-normal-bg-disabled,#e3e4e6)}.next-tag-closable.next-tag-level-normal:disabled:after,.next-tag-closable.next-tag-level-normal[disabled]:after{color:#fff;color:var(--tag-closable-normal-icon-color-disabled,#fff)}.next-tag-group .next-tag-large,.next-tag-group .next-tag-medium{margin-right:8px;margin-bottom:8px}.next-tag-group .next-tag-small{margin-right:4px;margin-bottom:4px}.next-tag{display:inline-block;max-width:100%;vertical-align:middle;border-width:1px;border-width:var(--tag-border-width,1px);border-radius:12px;border-radius:var(--tag-corner-radius,12px);-webkit-box-shadow:none;-webkit-box-shadow:var(--tag-shadow,none);box-shadow:none;box-shadow:var(--tag-shadow,none);border-style:solid;overflow:hidden;white-space:nowrap;-webkit-transition:all .1s linear;transition:all .1s linear;font-size:0;outline:0}.next-tag,.next-tag *,.next-tag :after,.next-tag :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tag>.next-tag-body{position:relative;display:inline-block;height:100%;text-align:center;vertical-align:middle;max-width:100%;cursor:default}.next-tag>.next-tag-body>a{text-decoration:none;color:inherit}.next-tag>.next-tag-body>a:before{content:" ";position:absolute;display:block;top:0;left:0;right:0;bottom:0}.next-tag>.next-tag-body .next-icon{line-height:1;vertical-align:baseline}.next-tag>.next-tag-body .next-icon:before{font-size:inherit}.next-tag.next-tag-body-pointer{cursor:pointer}.next-tag.disabled,.next-tag[disabled]{cursor:not-allowed;pointer-events:none}.next-tag-blue{background-color:#4494f9;border-color:#4494f9;color:#fff}.next-tag-blue-inverse{background-color:rgba(68,148,249,.25);border-color:#4494f9;color:#4494f9}.next-tag-green{background-color:#46bc15;border-color:#46bc15;color:#fff}.next-tag-green-inverse{background-color:rgba(70,188,21,.25);border-color:#46bc15;color:#46bc15}.next-tag-orange{background-color:#ff9300;border-color:#ff9300;color:#fff}.next-tag-orange-inverse{background-color:rgba(255,147,0,.25);border-color:#ff9300;color:#ff9300}.next-tag-red{background-color:#ff3000;border-color:#ff3000;color:#fff}.next-tag-red-inverse{background-color:rgba(255,48,0,.25);border-color:#ff3000;color:#ff3000}.next-tag-turquoise{background-color:#01c1b2;border-color:#01c1b2;color:#fff}.next-tag-turquoise-inverse{background-color:rgba(1,193,178,.25);border-color:#01c1b2;color:#01c1b2}.next-tag-yellow{background-color:#fccc12;border-color:#fccc12;color:#fff}.next-tag-yellow-inverse{background-color:rgba(252,204,18,.25);border-color:#fccc12;color:#fccc12}.next-tag-large{height:28px;height:var(--tag-size-l-height,28px);padding:0;line-height:26px;line-height:calc(var(--tag-size-l-height, 28px) - var(--tag-border-width, 1px)*2);font-size:0}.next-tag-large>.next-tag-body{font-size:14px;font-size:var(--tag-size-l-text-size,14px);padding:0 16px;padding:0 var(--tag-size-l-padding-lr,16px);min-width:48px;min-width:var(--tag-size-l-content-min-width,48px)}.next-tag-large.next-tag-closable>.next-tag-body{padding:0 0 0 16px;padding:0 0 0 var(--tag-size-l-padding-lr,16px);max-width:calc(100% - 44px);max-width:calc(100% - var(--tag-size-l-spacing, 16px) - var(--tag-size-l-icon-font, 12px) - var(--tag-size-l-padding-lr, 16px))}.next-tag-large[dir=rtl].next-tag-closable>.next-tag-body{padding:0 16px 0 0;padding:0 var(--tag-size-l-padding-lr,16px) 0 0}.next-tag-large.next-tag-closable>.next-tag-close-btn{margin-left:16px;margin-left:var(--tag-size-l-spacing,16px);padding-right:16px;padding-right:var(--tag-size-l-padding-lr,16px)}.next-tag-large.next-tag-closable>.next-tag-close-btn .next-icon .next-icon-remote,.next-tag-large.next-tag-closable>.next-tag-close-btn .next-icon:before{width:12px;width:var(--tag-size-l-icon-font,12px);font-size:12px;font-size:var(--tag-size-l-icon-font,12px);line-height:inherit}.next-tag-large[dir=rtl]>.next-tag-close-btn{margin-right:16px;margin-right:var(--tag-size-l-spacing,16px);margin-left:0;padding-right:0;padding-left:16px;padding-left:var(--tag-size-l-padding-lr,16px)}.next-tag-medium{height:24px;height:var(--tag-size-m-height,24px);padding:0;line-height:22px;line-height:calc(var(--tag-size-m-height, 24px) - var(--tag-border-width, 1px)*2);font-size:0}.next-tag-medium>.next-tag-body{font-size:12px;font-size:var(--tag-size-m-text-size,12px);padding:0 8px;padding:0 var(--tag-size-m-padding-lr,8px);min-width:40px;min-width:var(--tag-size-m-content-min-width,40px)}.next-tag-medium.next-tag-closable>.next-tag-body{padding:0 0 0 8px;padding:0 0 0 var(--tag-size-m-padding-lr,8px);max-width:calc(100% - 32px);max-width:calc(100% - var(--tag-size-m-spacing, 12px) - var(--tag-size-m-icon-font, 12px) - var(--tag-size-m-padding-lr, 8px))}.next-tag-medium[dir=rtl].next-tag-closable>.next-tag-body{padding:0 8px 0 0;padding:0 var(--tag-size-m-padding-lr,8px) 0 0}.next-tag-medium.next-tag-closable>.next-tag-close-btn{margin-left:12px;margin-left:var(--tag-size-m-spacing,12px);padding-right:8px;padding-right:var(--tag-size-m-padding-lr,8px)}.next-tag-medium.next-tag-closable>.next-tag-close-btn .next-icon .next-icon-remote,.next-tag-medium.next-tag-closable>.next-tag-close-btn .next-icon:before{width:12px;width:var(--tag-size-m-icon-font,12px);font-size:12px;font-size:var(--tag-size-m-icon-font,12px);line-height:inherit}.next-tag-medium[dir=rtl]>.next-tag-close-btn{margin-right:12px;margin-right:var(--tag-size-m-spacing,12px);margin-left:0;padding-right:0;padding-left:8px;padding-left:var(--tag-size-m-padding-lr,8px)}.next-tag-small{height:20px;height:var(--tag-size-s-height,20px);padding:0;line-height:18px;line-height:calc(var(--tag-size-s-height, 20px) - var(--tag-border-width, 1px)*2);font-size:0}.next-tag-small>.next-tag-body{font-size:12px;font-size:var(--tag-size-s-text-size,12px);padding:0 8px;padding:0 var(--tag-size-s-padding-lr,8px);min-width:28px;min-width:var(--tag-size-s-content-min-width,28px)}.next-tag-small.next-tag-closable>.next-tag-body{padding:0 0 0 8px;padding:0 0 0 var(--tag-size-s-padding-lr,8px);max-width:calc(100% - 28px);max-width:calc(100% - var(--tag-size-s-spacing, 8px) - var(--tag-size-s-icon-font, 12px) - var(--tag-size-s-padding-lr, 8px))}.next-tag-small[dir=rtl].next-tag-closable>.next-tag-body{padding:0 8px 0 0;padding:0 var(--tag-size-s-padding-lr,8px) 0 0}.next-tag-small.next-tag-closable>.next-tag-close-btn{margin-left:8px;margin-left:var(--tag-size-s-spacing,8px);padding-right:8px;padding-right:var(--tag-size-s-padding-lr,8px)}.next-tag-small.next-tag-closable>.next-tag-close-btn .next-icon .next-icon-remote,.next-tag-small.next-tag-closable>.next-tag-close-btn .next-icon:before{width:12px;width:var(--tag-size-s-icon-font,12px);font-size:12px;font-size:var(--tag-size-s-icon-font,12px);line-height:inherit}.next-tag-small[dir=rtl]>.next-tag-close-btn{margin-right:8px;margin-right:var(--tag-size-s-spacing,8px);margin-left:0;padding-right:0;padding-left:8px;padding-left:var(--tag-size-s-padding-lr,8px)}.next-tag-default{cursor:default}.next-tag-closable{position:relative}.next-tag-closable>.next-tag-close-btn{display:inline-block;vertical-align:middle;height:100%;text-align:center;cursor:pointer}.next-tag-checkable{cursor:pointer;position:relative;border-radius:12px;border-radius:var(--tag-corner-radius,12px)}.next-tag-checkable.checked:before{-webkit-animation:fadeInRightForTag .4s cubic-bezier(.78,.14,.15,.86);animation:fadeInRightForTag .4s cubic-bezier(.78,.14,.15,.86)}.next-tag-checkable.checked:after{-webkit-animation:zoomIn .4s cubic-bezier(.78,.14,.15,.86);animation:zoomIn .4s cubic-bezier(.78,.14,.15,.86)}.next-tag-checkable.next-tag-small:not(.next-tag-level-primary):before{right:0;right:calc(0px - var(--tag-size-s-tick-icon-bg-size, 0px)/2);bottom:0;bottom:calc(0px - var(--tag-size-s-tick-icon-bg-size, 0px)/2);width:0;width:var(--tag-size-s-tick-icon-bg-size,0);height:0;height:var(--tag-size-s-tick-icon-bg-size,0)}.next-tag-checkable.next-tag-small:not(.next-tag-level-primary):after{font-size:8px;line-height:8px;right:0;bottom:0}.next-tag-checkable.next-tag-medium:not(.next-tag-level-primary):before{right:0;right:calc(0px - var(--tag-size-m-tick-icon-bg-size, 0px)/2);bottom:0;bottom:calc(0px - var(--tag-size-m-tick-icon-bg-size, 0px)/2);width:0;width:var(--tag-size-m-tick-icon-bg-size,0);height:0;height:var(--tag-size-m-tick-icon-bg-size,0)}.next-tag-checkable.next-tag-medium:not(.next-tag-level-primary):after{font-size:12px;line-height:12px;right:0;bottom:0}.next-tag-checkable.next-tag-large:not(.next-tag-level-primary):before{right:-18px;right:calc(0px - var(--tag-size-l-tick-icon-bg-size, 36px)/2);bottom:-18px;bottom:calc(0px - var(--tag-size-l-tick-icon-bg-size, 36px)/2);width:36px;width:var(--tag-size-l-tick-icon-bg-size,36px);height:36px;height:var(--tag-size-l-tick-icon-bg-size,36px)}.next-tag-checkable.next-tag-large:not(.next-tag-level-primary):after{font-size:16px;line-height:16px;right:0;bottom:0}.next-tag-checkable.next-tag-level-secondary.disabled,.next-tag-checkable.next-tag-level-secondary[disabled]{color:#c1c1c1;color:var(--tag-text-color-disabled,#c1c1c1);border-color:#e3e4e6;border-color:var(--tag-border-color-disabled,#e3e4e6);background-color:#fff;background-color:var(--tag-fill-bg-color-disabled,#fff)}.next-tag-zoom-appear,.next-tag-zoom-enter{-webkit-animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-tag-zoom-leave{-webkit-animation:zoomOut .3s ease-in;animation:zoomOut .3s ease-in;-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-timeline,.next-timeline *,.next-timeline:after,.next-timeline :after,.next-timeline:before,.next-timeline :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-timeline ul{margin:0;padding:0;list-style:none}.next-timeline p{margin:0}.next-timeline-hide{display:none}.next-timeline[dir=rtl] .next-timeline-item-folder{padding-left:0;padding-right:24px;padding-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline[dir=rtl] .next-timeline-item-dot-tail{left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2);border-left:none;border-right:1px dotted #c0c6cc;border-right:var(--timeline-item-tail-size,1px) dotted var(--timeline-item-tail-color,#c0c6cc)}.next-timeline[dir=rtl] .next-timeline-item-has-left-content.next-timeline-item-folder{margin-left:0;margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px)}.next-timeline[dir=rtl] .next-timeline-item-done{position:relative}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-done-dot-size,8px);height:8px;height:var(--timeline-item-done-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-done-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-done-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-icon{background:#c0c6cc;background:var(--timeline-item-done-background,#c0c6cc)}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-icon{color:#fff;color:var(--timeline-item-done-color,#fff)}.next-timeline[dir=rtl] .next-timeline-item-process{position:relative}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-process-dot-size,8px);height:8px;height:var(--timeline-item-process-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-process-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-process-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-icon{background:#0064c8;background:var(--timeline-item-process-background,#0064c8)}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-icon{color:#fff;color:var(--timeline-item-process-color,#fff)}.next-timeline[dir=rtl] .next-timeline-item-success{position:relative}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-success-dot-size,8px);height:8px;height:var(--timeline-item-success-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-success-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-success-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-icon{background:#00a700;background:var(--timeline-item-success-background,#00a700)}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-icon{color:#fff;color:var(--timeline-item-success-color,#fff)}.next-timeline[dir=rtl] .next-timeline-item-error{position:relative}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-error-dot-size,8px);height:8px;height:var(--timeline-item-error-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-error-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-error-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-icon{background:#c80000;background:var(--timeline-item-error-background,#c80000)}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-icon{color:#fff;color:var(--timeline-item-error-color,#fff)}.next-timeline{margin:0;padding:0;list-style:none}.next-timeline>li{outline:0}.next-timeline-item-folder{padding-left:24px;padding-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));padding-top:4px;padding-top:var(--timeline-item-folder-margin-top,4px);padding-bottom:4px;padding-bottom:var(--timeline-item-folder-margin-bottom,4px);font-size:12px;font-size:var(--timeline-item-folder-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-folder-font-size, 12px) + 4px);position:relative}.next-timeline-item-dot-tail{position:absolute;top:0;left:4px;left:calc(var(--timeline-item-node-size, 8px)/2);height:100%;border:0;border-left:var(--timeline-item-tail-size,1px) dotted var(--timeline-item-tail-color,#c0c6cc)}.next-timeline-item-dot-tail-solid{border-style:solid}.next-timeline-item-has-left-content.next-timeline-item-folder{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-done{position:relative}.next-timeline-item-done .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-done-dot-size,8px);height:8px;height:var(--timeline-item-done-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-done-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-done-dot-size, 8px)/2)}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-done .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-done .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-done .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-done .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-done .next-timeline-item-dot,.next-timeline-item-done .next-timeline-item-icon{background:#c0c6cc;background:var(--timeline-item-done-background,#c0c6cc)}.next-timeline-item-done .next-timeline-item-icon{color:#fff;color:var(--timeline-item-done-color,#fff)}.next-timeline-item-process{position:relative}.next-timeline-item-process .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-process-dot-size,8px);height:8px;height:var(--timeline-item-process-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-process-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-process-dot-size, 8px)/2)}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-process .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-process .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-process .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-process .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-process .next-timeline-item-dot,.next-timeline-item-process .next-timeline-item-icon{background:#0064c8;background:var(--timeline-item-process-background,#0064c8)}.next-timeline-item-process .next-timeline-item-icon{color:#fff;color:var(--timeline-item-process-color,#fff)}.next-timeline-item-success{position:relative}.next-timeline-item-success .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-success-dot-size,8px);height:8px;height:var(--timeline-item-success-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-success-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-success-dot-size, 8px)/2)}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-success .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-success .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-success .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-success .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-success .next-timeline-item-dot,.next-timeline-item-success .next-timeline-item-icon{background:#00a700;background:var(--timeline-item-success-background,#00a700)}.next-timeline-item-success .next-timeline-item-icon{color:#fff;color:var(--timeline-item-success-color,#fff)}.next-timeline-item-error{position:relative}.next-timeline-item-error .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-error-dot-size,8px);height:8px;height:var(--timeline-item-error-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-error-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-error-dot-size, 8px)/2)}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-error .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-error .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-error .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-error .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-error .next-timeline-item-dot,.next-timeline-item-error .next-timeline-item-icon{background:#c80000;background:var(--timeline-item-error-background,#c80000)}.next-timeline-item-error .next-timeline-item-icon{color:#fff;color:var(--timeline-item-error-color,#fff)}.next-timeline.next-alternate .next-timeline-item-left .next-timeline-item-left-content,.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-left-content{width:50%;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline.next-alternate .next-timeline-item-left .next-timeline-item-timeline,.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-timeline{margin-left:50%}.next-timeline.next-alternate .next-timeline-item-left .next-timeline-item-content,.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-content{margin-left:calc(50% + 24px);margin-left:calc(50% + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline.next-alternate .next-timeline-item-folder{margin-left:50%}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-title{margin:4px 0 0;font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-body{margin:8px 0 0;font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-left-content{display:inline-block;position:relative}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-left-content .next-timeline-item-title{margin-top:0}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-content{margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));position:absolute}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-content .next-timeline-item-body{margin-top:4px;color:#888;color:var(--timeline-item-left-body-color,#888)}.next-timeline[dir=rtl].next-alternate .next-timeline-item-left .next-timeline-item-left-content,.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-left-content{width:50%;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px)}.next-timeline[dir=rtl].next-alternate .next-timeline-item-left .next-timeline-item-timeline,.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-timeline{margin-right:50%}.next-timeline[dir=rtl].next-alternate .next-timeline-item-left .next-timeline-item-content,.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-content{width:50%;margin-right:calc(50% + 24px);margin-right:calc(50% + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline[dir=rtl].next-alternate .next-timeline-item-folder{margin-right:50%}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-title{margin:0;font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-body{margin:0;font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-left-content{display:inline-block;position:relative}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-content{margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));position:absolute}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-content .next-timeline-item-body{text-align:right}.next-timeline-item-last .next-timeline-item-tail{display:none}.next-timeline-item-has-left-content{min-height:48px}.next-timeline-item-folder.next-timeline-item-has-left-content{min-height:auto}.next-transfer{display:inline-block}.next-transfer,.next-transfer *,.next-transfer :after,.next-transfer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-transfer-panel{display:inline-block;border:1px solid #c0c6cc;border:var(--transfer-panel-border-width,1px) var(--line-solid,solid) var(--transfer-panel-border-color,#c0c6cc);border-radius:2px;border-radius:var(--transfer-panel-border-corner,2px);background-color:#fff;background-color:var(--transfer-panel-background-color,#fff);vertical-align:middle}.next-transfer-panel-header{padding:8px 16px;padding:var(--transfer-panel-header-padding-top-bottom,8px) var(--transfer-panel-header-padding-left-right,16px);border-bottom:1px solid #c0c6cc;border-bottom:var(--transfer-panel-border-width,1px) var(--line-solid,solid) var(--transfer-panel-border-color,#c0c6cc);background-color:#fff;background-color:var(--transfer-panel-header-background-color,#fff);color:#333;color:var(--transfer-panel-header-text-color,#333);font-size:12px;font-size:var(--transfer-panel-header-text-size,12px)}.next-transfer-panel-search{padding:0 8px;padding:0 var(--transfer-panel-search-margin-left-right,8px);margin-top:8px;margin-top:var(--transfer-panel-search-margin-top,8px);margin-bottom:8px;margin-bottom:var(--transfer-panel-search-margin-bottom,8px);width:100%}.next-transfer .next-transfer-panel-list{width:180px;width:var(--transfer-panel-list-width,180px);height:160px;height:var(--transfer-panel-list-height,160px);padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;overflow-y:auto}.next-transfer-panel-not-found-container{display:table;width:100%;height:100%}.next-transfer-panel-not-found{display:table-cell;vertical-align:middle;text-align:center;color:#888;color:var(--color-text1-2,#888);font-size:14px;font-size:var(--font-size-body-2,14px)}.next-transfer-panel-item.next-focused{-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-transfer-panel-item:not(.next-disabled).next-simple:hover{color:#0064c8;color:var(--transfer-simple-panel-item-hover-text-color,#0064c8)}.next-transfer-panel-item.next-insert-before:before{position:absolute;top:0;left:0;content:"";width:100%;border-top:1px solid #0064c8;border-top:var(--line-1,1px) solid var(--color-brand1-6,#0064c8)}.next-transfer-panel-item.next-insert-after:after{position:absolute;left:0;bottom:0;content:"";width:100%;border-bottom:1px solid #0064c8;border-bottom:var(--line-1,1px) solid var(--color-brand1-6,#0064c8)}.next-transfer-panel-footer{position:relative;padding:8px 16px;padding:var(--transfer-panel-footer-padding-top-bottom,8px) var(--transfer-panel-footer-padding-left-right,16px);border-top:1px solid #c0c6cc;border-top:var(--transfer-panel-border-width,1px) var(--line-solid,solid) var(--transfer-panel-border-color,#c0c6cc);background-color:#fff;background-color:var(--transfer-panel-footer-background-color,#fff);font-size:0;-webkit-box-shadow:none;-webkit-box-shadow:var(--transfer-panel-footer-shadow,none);box-shadow:none;box-shadow:var(--transfer-panel-footer-shadow,none)}.next-transfer-panel-count{margin-left:4px;font-size:12px;font-size:var(--font-size-body-1,12px);vertical-align:middle;color:#333;color:var(--transfer-panel-footer-text-color,#333)}.next-transfer-panel-move-all{font-size:12px;font-size:var(--font-size-body-1,12px);color:#333;color:var(--transfer-simple-panel-footer-text-color,#333);cursor:pointer}.next-transfer-panel-move-all.next-disabled{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);cursor:not-allowed}.next-transfer-operations{display:inline-block;vertical-align:middle;margin:0 8px;margin:0 var(--transfer-operation-margin-left-right,8px)}.next-transfer-move.next-icon{color:#333;color:var(--transfer-simple-move-icon-color,#333)}.next-transfer-move.next-icon:before{content:"\e989";content:var(--transfer-simple-move-icon,"")}.next-transfer-operation.next-btn{display:block}.next-transfer-operation.next-btn+.next-transfer-operation.next-btn{margin-top:4px;margin-top:var(--transfer-operation-margin-gutter,4px)}.next-transfer-operation.next-btn .next-icon .next-icon-remote,.next-transfer-operation.next-btn .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tree,.next-tree *,.next-tree :after,.next-tree :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tree,.next-tree-child-tree{margin:0;padding:0;list-style:none}.next-tree-node{white-space:nowrap}.next-tree-node-inner{font-size:0;outline:none}.next-tree-node-label-wrapper{display:inline-block;margin:0 4px;margin:0 var(--tree-node-title-margin,4px);vertical-align:middle}.next-tree-node-label{height:20px;line-height:20px;padding:0 4px;padding:0 var(--tree-node-title-padding,4px);border-radius:2px;border-radius:var(--tree-node-title-border-radius,2px);font-size:12px;font-size:var(--tree-node-title-font-size,12px)}.next-tree-node-label .next-icon{font-size:14px;font-size:calc(var(--tree-node-title-font-size, 12px) + 2px)}.next-tree-node-label .next-icon:before{font-size:12px;font-size:var(--tree-node-title-font-size,12px);width:12px;width:var(--tree-node-title-font-size,12px);margin-right:.5em}.next-tree-node-input.next-input{margin:0 4px;margin:0 var(--tree-node-title-margin,4px)}.next-tree-node-indent-unit{display:inline-block;width:24px;vertical-align:middle;position:relative}.next-tree-node-indent-unit.next-line:before{content:"";position:absolute;display:inline-block;border-left:1px solid #e3e4e6;border-left:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6);height:28px;height:calc(var(--tree-node-padding, 4px) + var(--line-2, 2px)*2 + 20px);left:7.5px;left:calc(var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2)}.next-tree-switcher{position:relative;display:inline-block;vertical-align:middle;margin-right:4px;margin-right:var(--tree-switch-margint-right,4px)}.next-tree .next-tree-unfold-icon:before{content:"";content:var(--tree-unfold-icon-content,"")}.next-tree-switcher.next-noline{width:12px;width:var(--tree-switch-arrow-size,12px);height:12px;height:var(--tree-switch-arrow-size,12px);line-height:12px;line-height:var(--tree-switch-arrow-size,12px);cursor:pointer}.next-tree-switcher.next-noline .next-tree-switcher-icon{-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;color:#c0c6cc;color:var(--tree-switch-arrow-color,#c0c6cc)}.next-tree-switcher.next-noline .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-noline .next-tree-switcher-icon:before{width:12px;width:var(--tree-switch-arrow-size,12px);font-size:12px;font-size:var(--tree-switch-arrow-size,12px);line-height:inherit}.next-tree-switcher.next-noline .next-tree-fold-icon:before{content:"\e783";content:var(--tree-fold-icon-content,"")}.next-tree-switcher.next-noline.next-close .next-tree-switcher-icon{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.next-tree-switcher.next-noline.next-close .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-noline.next-close .next-tree-switcher-icon:before{width:12px;width:var(--tree-switch-arrow-size,12px);font-size:12px;font-size:var(--tree-switch-arrow-size,12px);line-height:inherit}.next-tree-switcher.next-noline:not(.next-disabled):hover .next-tree-switcher-icon{color:#0064c8;color:var(--tree-switch-hover-arrow-color,#0064c8)}.next-tree-switcher.next-noline.next-disabled{cursor:not-allowed}.next-tree-switcher.next-noline.next-disabled .next-tree-switcher-icon{color:#555;color:var(--tree-node-disabled-color,#555)}.next-tree-switcher.next-noop-noline{width:12px;width:var(--tree-switch-arrow-size,12px);height:12px;height:var(--tree-switch-arrow-size,12px)}.next-tree-switcher.next-line{width:16px;width:var(--tree-switch-size,16px);height:16px;height:var(--tree-switch-size,16px);line-height:14px;line-height:calc(var(--tree-switch-size, 16px) - var(--tree-switch-border-width, 1px)*2);border:1px solid #003c78;border:var(--tree-switch-border-width,1px) var(--line-solid,solid) var(--tree-switch-border-color,#003c78);border-radius:2px;border-radius:var(--tree-switch-corner,2px);background-color:#fff;background-color:var(--tree-switch-bg-color,#fff);cursor:pointer}.next-tree-switcher.next-line .next-tree-switcher-icon{margin-left:1px;margin-left:calc(var(--tree-switch-size, 16px)/2 - 6px - var(--tree-switch-border-width, 1px)*2/2);color:#555;color:var(--tree-switch-icon-color,#555)}.next-tree-switcher.next-line .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-line .next-tree-switcher-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tree-switcher.next-line .next-tree-switcher-fold-icon:before{content:"\e655";content:var(--tree-switcher-fold-icon-content,"")}.next-tree-switcher.next-line .next-tree-switcher-unfold-icon:before{content:"\e601";content:var(--tree-switcher-unfold-icon-content,"")}.next-tree-switcher.next-line:not(.next-disabled):hover{border-color:#555;border-color:var(--tree-switch-hover-border-color,#555);background-color:#fff;background-color:var(--tree-switch-hover-bg-color,#fff)}.next-tree-switcher.next-line:not(.next-disabled):hover .next-tree-switcher-icon{color:#555;color:var(--tree-switch-hover-icon-color,#555)}.next-tree-switcher.next-line.next-disabled{border-color:#e3e4e6;border-color:var(--color-line1-1,#e3e4e6);background-color:#fff;cursor:not-allowed}.next-tree-switcher.next-line.next-disabled .next-tree-switcher-icon{color:#555;color:var(--tree-node-disabled-color,#555)}.next-tree-switcher.next-noop-line{width:16px;width:var(--tree-switch-size,16px);height:16px;height:var(--tree-switch-size,16px)}.next-tree-switcher.next-noop-line-noroot{height:0;border-left:1px solid #e3e4e6;border-left:var(--tree-switch-border-width,1px) var(--line-solid,solid) var(--tree-line-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6)}.next-tree-switcher.next-noop-line-noroot .next-tree-right-angle{bottom:-1px;bottom:calc(0px - var(--tree-line-width, 1px))}.next-tree-switcher.next-loading.next-loading-noline{width:12px;width:var(--tree-switch-arrow-size,12px);height:12px;height:var(--tree-switch-arrow-size,12px);line-height:12px;line-height:var(--tree-switch-arrow-size,12px)}.next-tree-switcher.next-loading.next-loading-line{width:16px;width:var(--tree-switch-size,16px);height:16px;height:var(--tree-switch-size,16px);line-height:14px;line-height:calc(var(--tree-switch-size, 16px) - var(--tree-switch-border-width, 1px)*2);border:1px solid transparent;border:var(--tree-switch-border-width,1px) var(--line-solid,solid) transparent}.next-tree-switcher.next-loading .next-tree-switcher-icon{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-tree-switcher.next-loading .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-loading .next-tree-switcher-icon:before{width:12px;width:var(--tree-switch-arrow-size,12px);font-size:12px;font-size:var(--tree-switch-arrow-size,12px);line-height:inherit}.next-tree-right-angle{position:absolute;bottom:6.5px;bottom:calc(var(--tree-switch-size, 16px)/2 - var(--tree-switch-border-width, 1px)*2/2 - var(--tree-line-width, 1px)/2);left:-17.5px;left:calc(-24px + var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2 - var(--tree-switch-border-width, 1px));display:block;width:16.5px;width:calc(24px - var(--tree-switch-size, 16px)/2 + var(--tree-line-width, 1px)/2);height:22px;height:calc(20px + var(--tree-node-padding, 4px) - var(--tree-line-width, 1px)*2);border-left:1px solid #e3e4e6;border-left:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6)}.next-tree.next-label-block .next-tree-node-inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;outline:none}.next-tree.next-label-block .next-tree-node-label-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.next-tree.next-node-indent .next-tree-node .next-tree-node{margin-left:24px}.next-tree.next-node-indent .next-tree-node-inner{padding-top:2px;padding-top:calc(var(--tree-node-padding, 4px)/2);padding-bottom:2px;padding-bottom:calc(var(--tree-node-padding, 4px)/2)}.next-tree.next-node-indent .next-tree-node-inner:focus .next-tree-node-label{color:#333;color:var(--tree-node-hover-color,#333);background-color:#f7f9fa;background-color:var(--tree-node-hover-bg-color,#f7f9fa)}.next-tree.next-node-indent .next-tree-node-label-wrapper{border-top:2px solid transparent;border-top:var(--line-2,2px) solid transparent;border-bottom:2px solid transparent;border-bottom:var(--line-2,2px) solid transparent}.next-tree.next-node-indent .next-tree-node-label{-webkit-transition:color .1s linear,background-color .1s linear;transition:color .1s linear,background-color .1s linear;cursor:default;color:#333;color:var(--tree-node-normal-color,#333);background-color:#fff;background-color:var(--tree-node-normal-background,#fff)}.next-tree.next-node-indent .next-tree-node-label-selectable{cursor:pointer}.next-tree.next-node-indent .next-tree-node-label:hover{color:#333;color:var(--tree-node-hover-color,#333);background-color:#f7f9fa;background-color:var(--tree-node-hover-bg-color,#f7f9fa)}.next-tree.next-node-indent .next-tree-node-inner.next-selected .next-tree-node-label{color:#0064c8;color:var(--tree-node-selected-color,#0064c8);background-color:transparent;background-color:var(--tree-node-selected-background,transparent)}.next-tree.next-node-indent .next-tree-node-inner.next-disabled .next-tree-node-label,.next-tree.next-node-indent .next-tree-node-inner.next-disabled .next-tree-node-label:hover{color:#555;color:var(--tree-node-disabled-color,#555);background-color:transparent;background-color:var(--tree-node-disabled-background,transparent);cursor:not-allowed}.next-tree.next-node-indent .next-tree-node-inner.next-drag-over .next-tree-node-label{background-color:#0064c8;background-color:var(--color-brand1-6,#0064c8);color:#fff;opacity:.8}.next-tree.next-node-indent .next-tree-node-inner.next-drag-over-gap-top .next-tree-node-label-wrapper{border-top-color:#0064c8;border-top-color:var(--color-brand1-6,#0064c8)}.next-tree.next-node-indent .next-tree-node-inner.next-drag-over-gap-bottom .next-tree-node-label-wrapper{border-bottom-color:#0064c8;border-bottom-color:var(--color-brand1-6,#0064c8)}.next-tree.next-node-block .next-tree-node-inner{padding-top:4px;padding-top:var(--tree-node-padding,4px);padding-bottom:4px;padding-bottom:var(--tree-node-padding,4px);-webkit-transition:color .1s linear,background-color .1s linear;transition:color .1s linear,background-color .1s linear;cursor:pointer;color:#333;color:var(--tree-node-normal-color,#333);background-color:#fff;background-color:var(--tree-node-normal-background,#fff)}.next-tree.next-node-block .next-tree-node-inner:focus,.next-tree.next-node-block .next-tree-node-inner:hover{color:#333;color:var(--tree-node-hover-color,#333);background-color:#f7f9fa;background-color:var(--tree-node-hover-bg-color,#f7f9fa)}.next-tree.next-node-block .next-tree-node-inner.next-selected{color:#0064c8;color:var(--tree-node-selected-color,#0064c8);background-color:transparent;background-color:var(--tree-node-selected-background,transparent)}.next-tree.next-node-block .next-tree-node-inner.next-disabled,.next-tree.next-node-block .next-tree-node-inner.next-disabled:hover{color:#555;color:var(--tree-node-disabled-color,#555);background-color:transparent;background-color:var(--tree-node-disabled-background,transparent);cursor:not-allowed}.next-tree.next-show-line .next-tree-node .next-tree-node:not(:last-child){margin-left:7.5px;margin-left:calc(var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2);border-left:1px solid #e3e4e6;border-left:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6);padding-left:15.5px;padding-left:calc(24px - var(--tree-line-width, 1px) - var(--tree-switch-size, 16px)/2 + var(--tree-line-width, 1px)/2)}.next-tree-node.next-filtered>.next-tree-node-inner .next-tree-node-label,.next-tree-node.next-filtered>.next-tree-node-inner .next-tree-node-label:hover{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-tree[dir=rtl] .next-tree-switcher{margin-left:4px;margin-left:var(--tree-switch-margint-right,4px);margin-right:0}.next-tree[dir=rtl] .next-tree-switcher.next-noop-line-noroot{border-left:none;border-right:1px solid #e3e4e6;border-right:var(--tree-switch-border-width,1px) var(--line-solid,solid) var(--tree-line-color,#e3e4e6)}.next-tree[dir=rtl] .next-tree-right-angle{left:auto;right:-17.5px;right:calc(-24px + var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2 - var(--tree-switch-border-width, 1px))}.next-tree[dir=rtl].next-show-line .next-tree-node .next-tree-node:not(:last-child),.next-tree[dir=rtl] .next-tree-right-angle{border-left:none;border-right:1px solid #e3e4e6;border-right:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6)}.next-tree[dir=rtl].next-show-line .next-tree-node .next-tree-node:not(:last-child){margin-left:0;margin-right:7.5px;margin-right:calc(var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2);padding-left:0;padding-right:15.5px;padding-right:calc(24px - var(--tree-line-width, 1px) - var(--tree-switch-size, 16px)/2 + var(--tree-line-width, 1px)/2)}.next-tree[dir=rtl].next-node-indent .next-tree-node .next-tree-node{margin-left:0;margin-right:24px}.next-tree-select,.next-tree-select *,.next-tree-select :after,.next-tree-select :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tree-select-dropdown{background:#fff;background:var(--tree-select-background,#fff);border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));max-height:260px;overflow:auto}.next-tree-select-dropdown>.next-tree,.next-tree-select-dropdown>.next-tree-select-not-found,.next-tree-select-dropdown>.next-virtual-tree-container{padding:8px 20px;padding:var(--tree-select-padding-vertical,8px) var(--tree-select-padding-horizontal,20px)}.next-tree-select-not-found{font-size:12px;font-size:var(--font-size-body-1,12px);color:#888;color:var(--color-text1-2,#888)}.next-upload-list[dir=rtl].next-upload-list-text .next-upload-list-item{padding:4px 16px;padding:4px var(--upload-text-list-padding-left-right,16px);padding-left:36px;padding-left:calc(var(--upload-text-list-close-icon-right, 12px)*2 + 12px)}.next-upload-list[dir=rtl].next-upload-list-text .next-icon{left:12px;left:var(--upload-text-list-close-icon-right,12px);right:auto}.next-upload-list[dir=rtl].next-upload-list-image .next-icon-close{float:left;margin-left:4px;margin-left:var(--upload-image-list-close-icon-right,4px);margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-thumbnail{float:right;margin-left:8px;margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-progress{margin-right:56px;margin-right:calc(var(--upload-image-list-item-picture-size, 48px) + 8px);margin-left:20px;margin-left:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2)}.next-upload,.next-upload *,.next-upload :after,.next-upload :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-upload-inner{outline:0;display:inline-block}.next-upload-inner.next-hidden{display:none}.next-upload-list{overflow:hidden}.next-upload-list,.next-upload-list *,.next-upload-list :after,.next-upload-list :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-upload-list-item{position:relative}.next-upload-list-item.next-hidden{display:none}.next-upload-list-item-name{text-decoration:none}.next-upload.next-disabled{border-color:#e3e4e6!important;border-color:var(--color-line1-1,#e3e4e6)!important;color:#c1c1c1!important;color:var(--color-text1-1,#c1c1c1)!important}.next-upload.next-disabled .next-icon-close{cursor:not-allowed!important}.next-upload.next-disabled .next-upload-inner *{color:#c1c1c1!important;color:var(--color-text1-1,#c1c1c1)!important;border-color:#e3e4e6!important;border-color:var(--color-line1-1,#e3e4e6)!important;cursor:not-allowed!important}.next-upload-list-text .next-upload-list-item{background-color:transparent;background-color:var(--upload-text-list-bg-color,transparent);padding:4px 16px;padding:4px var(--upload-text-list-padding-left-right,16px);padding-right:36px;padding-right:calc(var(--upload-text-list-close-icon-right, 12px)*2 + 12px);height:44px;height:var(--upload-text-list-height,44px);line-height:36px;line-height:calc(var(--upload-text-list-height, 44px) - 8px);font-size:12px;font-size:var(--upload-text-list-font-size,12px);overflow:hidden;-webkit-transition:all .1s linear;transition:all .1s linear;border-radius:0;border-radius:var(--upload-text-list-corner,0)}.next-upload-list-text .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-text .next-upload-list-item-op{position:absolute;top:0;right:12px;right:var(--upload-text-list-close-icon-right,12px)}.next-upload-list-text .next-upload-list-item .next-icon-close{color:#333;color:var(--upload-text-list-close-icon-color,#333);cursor:pointer;text-align:center;-webkit-transition:all .1s linear;transition:all .1s linear;line-height:44px;line-height:var(--upload-text-list-height,44px)}.next-upload-list-text .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-text .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-text .next-upload-list-item:hover{background-color:transparent;background-color:var(--upload-text-list-bg-color-hover,transparent)}.next-upload-list-text .next-upload-list-item:hover .next-icon{color:#0064c8;color:var(--upload-text-list-close-icon-color-hover,#0064c8)}.next-upload-list-text .next-upload-list-item-name-wrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:4px}.next-upload-list-text .next-upload-list-item-name{color:#333;color:var(--upload-text-list-name-font-color,#333);-webkit-transition:all .1s linear;transition:all .1s linear}.next-upload-list-text .next-upload-list-item-size{color:#666;color:var(--upload-text-list-size-font-color,#666);margin-left:8px}.next-upload-list-text .next-upload-list-item-uploading{line-height:18px;line-height:calc(var(--upload-text-list-height, 44px)/2 - 4px)}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress{line-height:0;padding-top:7px;padding-top:calc(var(--upload-text-list-height, 44px)/2/2 - 2px - var(--upload-text-list-progressbar-height, 4px)/2);padding-bottom:7px;padding-bottom:calc(var(--upload-text-list-height, 44px)/2/2 - 2px - var(--upload-text-list-progressbar-height, 4px)/2)}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:4px;height:var(--upload-text-list-progressbar-height,4px)}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:4px;height:var(--upload-text-list-progressbar-height,4px);margin-top:-2px;margin-top:calc(0px - var(--upload-text-list-progressbar-height, 4px)/2)}.next-upload-list-text .next-upload-list-item-done{line-height:36px;line-height:calc(var(--upload-text-list-height, 44px) - 8px)}.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-name{color:#0064c8;color:var(--upload-text-list-name-font-color-hover,#0064c8)}.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-size{color:#0064c8;color:var(--upload-text-list-size-font-color-hover,#0064c8)}.next-upload-list-text .next-upload-list-item-error{background-color:transparent!important;background-color:var(--upload-text-list-bg-color-error,transparent)!important}.next-upload-list-text .next-upload-list-item-error.next-upload-list-item-error-with-msg{line-height:18px;line-height:calc(var(--upload-text-list-height, 44px)/2 - 4px)}.next-upload-list-text .next-upload-list-item-error-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#c80000;color:var(--upload-text-list-error-text-color,#c80000)}.next-upload-list-image .next-upload-list-item{-webkit-box-sizing:content-box;box-sizing:content-box;border:1px solid transparent;border:var(--upload-image-list-item-border-width,1px) solid var(--upload-image-list-item-border-color,transparent);background-color:#f8f8f9;background-color:var(--upload-image-list-item-bg-color,#f8f8f9);padding:8px;padding:var(--upload-image-list-item-padding,8px);height:48px;height:var(--upload-image-list-item-picture-size,48px);line-height:48px;line-height:var(--upload-image-list-item-picture-size,48px);font-size:12px;font-size:var(--upload-image-list-item-font-size,12px);-webkit-transition:all .1s linear;transition:all .1s linear;overflow:hidden;border-radius:0;border-radius:var(--upload-card-list-corner,0)}.next-upload-list-image .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-image .next-upload-list-item:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-upload-list-image .next-upload-list-item-op{float:right;margin-right:4px}.next-upload-list-image .next-upload-list-item .next-icon-close{cursor:pointer;color:#333;color:var(--upload-image-list-close-icon-color,#333);text-align:center}.next-upload-list-image .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-image .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-image .next-upload-list-item:hover{border-color:transparent;border-color:var(--upload-image-list-item-border-color-hover,transparent)}.next-upload-list-image .next-upload-list-item:hover .next-icon-close{color:#333;color:var(--upload-image-list-close-icon-color-hover,#333)}.next-upload-list-image .next-upload-list-item-name{display:block;color:#333;color:var(--upload-text-list-name-font-color,#333);margin-left:56px;margin-left:calc(var(--upload-image-list-item-picture-size, 48px) + var(--upload-image-list-item-padding, 8px));margin-right:20px;margin-right:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-transition:all .1s linear;transition:all .1s linear}.next-upload-list-image .next-upload-list-item-size{color:#666;color:var(--upload-text-list-size-font-color,#666);margin-left:8px}.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-name{color:#0064c8;color:var(--upload-text-list-name-font-color-hover,#0064c8)}.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-size{color:#0064c8;color:var(--upload-text-list-size-font-color-hover,#0064c8)}.next-upload-list-image .next-upload-list-item-thumbnail{float:left;width:48px;width:var(--upload-image-list-item-picture-size,48px);height:48px;height:var(--upload-image-list-item-picture-size,48px);color:#c1c1c1;color:var(--upload-image-list-item-thumbnail-font-color,#c1c1c1);border:1px solid #e3e4e6;border:var(--upload-image-list-item-picture-border-width,1px) solid var(--upload-image-list-item-picture-border-color,#e3e4e6);border-radius:0;border-radius:var(--upload-image-list-item-picture-corner,0);background-color:#f8f8f9;background-color:var(--upload-image-list-item-picture-background-color,#f8f8f9);margin-right:8px;vertical-align:middle;text-align:center;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.next-upload-list-image .next-upload-list-item-thumbnail img{width:100%;height:100%}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon{display:block;margin:0;line-height:48px;line-height:var(--upload-image-list-item-picture-size,48px)}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-image .next-upload-list-item-thumbnail .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-upload-list-image .next-upload-list-item-error{border-color:transparent!important;border-color:var(--upload-image-list-item-border-color-error,transparent)!important;background-color:#fdfbfb;background-color:var(--upload-image-list-item-error-bg-color,#fdfbfb)}.next-upload-list-image .next-upload-list-item-uploading{background-color:#f8f8f9;background-color:var(--upload-image-list-item-uploading-bg-color,#f8f8f9)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-name{height:24px;height:calc(var(--upload-image-list-item-picture-size, 48px)/2);line-height:24px;line-height:calc(var(--upload-image-list-item-picture-size, 48px)/2)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress{margin-left:56px;margin-left:calc(var(--upload-image-list-item-picture-size, 48px) + 8px);margin-right:20px;margin-right:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2);line-height:0;padding-top:10px;padding-top:calc(var(--upload-image-list-item-picture-size, 48px)/2/2 - var(--upload-image-list-progressbar-height, 4px)/2);padding-bottom:10px;padding-bottom:calc(var(--upload-image-list-item-picture-size, 48px)/2/2 - var(--upload-image-list-progressbar-height, 4px)/2)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:4px;height:var(--upload-image-list-progressbar-height,4px)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:4px;height:var(--upload-image-list-progressbar-height,4px);margin-top:-2px;margin-top:calc(0px - var(--upload-image-list-progressbar-height, 4px)/2)}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg,.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-name{height:24px;height:calc(var(--upload-image-list-item-picture-size, 48px)/2);line-height:24px;line-height:calc(var(--upload-image-list-item-picture-size, 48px)/2)}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg{margin-left:56px;margin-left:calc(var(--upload-image-list-item-picture-size, 48px) + 8px);margin-right:20px;margin-right:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2);color:#c80000;color:var(--upload-text-list-error-text-color,#c80000);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card{display:inline-block}.next-upload-list-card .next-upload-list-item{vertical-align:middle;float:left}.next-upload-list-card .next-upload-list-item:not(:last-child){margin-right:12px;margin-right:var(--upload-card-list-margin-right,12px)}.next-upload-list-card .next-upload-list-item-wrapper{position:relative;border:1px solid #e3e4e6;border:1px solid var(--upload-card-list-border-color,#e3e4e6);width:88px;width:var(--upload-card-size,88px);height:88px;height:var(--upload-card-size,88px);padding:0;padding:var(--upload-card-list-padding,0);background-color:transparent;background-color:var(--upload-card-list-bg-color,transparent)}.next-upload-list-card .next-upload-list-item-thumbnail{text-align:center;width:100%;height:100%;color:#0064c8;color:var(--upload-card-list-thumbnail-font-color,#0064c8);font-size:12px;font-size:var(--upload-card-list-thumbnail-font-size,12px)}.next-upload-list-card .next-upload-list-item-thumbnail img{max-width:100%;max-height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.next-upload-list-card .next-upload-list-item-thumbnail img:focus{outline:0}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon{width:100%}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item-thumbnail .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-list-card .next-upload-list-item-handler{margin-top:7px;margin-top:calc(var(--upload-card-size, 88px)/2 - 37px)}.next-upload-list-card .next-upload-list-item-handler .next-icon-cry{margin-top:10px}.next-upload-list-card .next-upload-list-item-name{display:block;width:88px;width:var(--upload-card-size,88px);text-align:center;margin-top:4px;margin-top:var(--upload-card-list-name-margin-top,4px);font-size:12px;font-size:var(--upload-card-list-name-font-size,12px);color:#333;color:var(--upload-card-list-name-font-color,#333);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card .next-upload-list-item-progress{position:absolute;font-size:0;bottom:0;left:0;width:100%}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-underlay{border-radius:0;height:4px;height:var(--upload-card-list-progressbar-height,4px)}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-overlay{border-radius:0;height:4px;height:var(--upload-card-list-progressbar-height,4px);margin-top:-2px;margin-top:calc(0px - var(--upload-card-list-progressbar-height, 4px)/2)}.next-upload-list-card .next-upload-list-item-uploading .next-upload-list-item-wrapper{background-color:#fff;background-color:var(--upload-card-list-uploading-bg-color,#fff)}.next-upload-list-card .next-upload-list-item:hover .next-upload-tool{opacity:.8}.next-upload-list-card .next-upload-list-item .next-upload-tool{position:absolute;z-index:1;background-color:rgba(0,0,0,.7);background-color:rgba(0,0,0,var(--upload-select-card-tool-bg-opacity,.7));-webkit-transition:all .1s linear;transition:all .1s linear;opacity:0;width:100%;height:28px;left:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon{line-height:28px;color:#fff;cursor:pointer}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-list-card .next-upload-list-item .next-upload-tool-item{width:100%;text-align:center}.next-upload-list-card .next-upload-list-item .next-upload-tool-item:not(:last-child){border-right:1px solid #fff}.next-upload-list-card .next-upload-list-item .next-upload-tool-reupload{display:inline-block}.next-upload-list-card .next-upload-list-item-error .next-upload-list-item-wrapper{border-color:#c80000;border-color:var(--upload-card-list-border-color-error,#c80000)}.next-upload-list-card.next-upload-ie9 .next-upload-tool{display:table}.next-upload-list-card.next-upload-ie9 .next-upload-tool-item{display:table-cell;width:1%}.next-upload-card{border:1px dashed #c0c6cc;border:1px var(--upload-card-border-style,dashed) var(--upload-card-border-color,#c0c6cc);width:88px;width:var(--upload-card-size,88px);height:88px;height:var(--upload-card-size,88px);background-color:#fff;background-color:var(--upload-card-bg-color,#fff);text-align:center;cursor:pointer;-webkit-transition:border-color .1s linear;transition:border-color .1s linear;display:table-cell;vertical-align:middle}.next-upload-card .next-icon{color:#333;color:var(--upload-card-icon-color,#333)}.next-upload-card .next-icon .next-icon-remote,.next-upload-card .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-card .next-upload-add-icon:before{content:"\e655";content:var(--upload-card-add-icon,"")}.next-upload-card .next-upload-text{font-size:12px;font-size:var(--upload-card-add-text-size,12px);margin-top:8px;margin-top:var(--upload-card-add-text-margin-top,8px);color:#333;color:var(--upload-card-font-color,#333);outline:none}.next-upload-card:hover{border-color:#0064c8;border-color:var(--upload-card-hover-border-color,#0064c8)}.next-upload-card:hover .next-icon,.next-upload-card:hover .next-upload-text{color:#0064c8;color:var(--upload-card-hover-font-color,#0064c8)}.next-upload-dragable .next-upload-inner{display:block}.next-upload-dragable .next-upload-drag{border:1px dashed #d1d5d9;border:1px dashed var(--upload-drag-zone-border-color,#d1d5d9);-webkit-transition:border-color .1s linear;transition:border-color .1s linear;cursor:pointer;border-radius:2px;border-radius:var(--upload-drag-zone-corner,2px);background-color:transparent;background-color:var(--upload-drag-zone-bg-color,transparent);text-align:center;margin-bottom:4px}.next-upload-dragable .next-upload-drag-icon{margin:20px 0 0;color:#0064c8;color:var(--upload-drag-zone-upload-icon-color,#0064c8)}.next-upload-dragable .next-upload-drag-icon .next-upload-drag-upload-icon:before{content:"\ea25";content:var(--upload-drag-zone-upload-icon,"");font-size:16px}.next-upload-dragable .next-upload-drag-text{margin:12px 0 0;font-size:12px;font-size:var(--upload-drag-zone-font-size,12px);color:#333;color:var(--upload-drag-zone-upload-normal-title-color,#333)}.next-upload-dragable .next-upload-drag-hint{margin:4px 0 20px;font-size:12px;font-size:var(--upload-drag-zone-hint-font-size,12px);color:#333;color:var(--upload-drag-zone-upload-normal-hint-color,#333)}.next-upload-dragable .next-upload-drag-over{border-color:#d1d5d9;border-color:var(--upload-drag-zone-over-border-color,#d1d5d9)}.next-shell{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell,.next-shell *,.next-shell :after,.next-shell :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-shell-content-wrapper{overflow:auto}.next-shell-header{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;z-index:9}.next-shell-header,.next-shell-header .dock-trigger,.next-shell-header .nav-trigger{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-shell-header .dock-trigger,.next-shell-header .nav-trigger{outline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;width:32px;height:32px}.next-shell-header .nav-trigger{margin-right:10px}.next-shell-header .dock-trigger{margin-left:10px}.next-shell-header.next-shell-fixed-header{position:sticky;top:0}.next-shell-header .next-shell-navigation{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.next-shell-header .next-shell-action,.next-shell-header .next-shell-branding,.next-shell-header .next-shell-navigation{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-shell-sub-main{-ms-flex:1 1;flex:1 1;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;outline:0}.next-shell-main,.next-shell-sub-main{-webkit-box-flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;height:100%;overflow:auto}.next-shell-main{-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;position:relative;-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-main .next-shell-content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.next-shell-main .next-shell-content-inner{margin:0 auto}.next-shell-main .next-shell-footer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.next-shell-main .next-shell-footer,.next-shell .next-aside-navigation,.next-shell .next-aside-tooldock{display:-webkit-box;display:-ms-flexbox;display:flex}.next-shell .next-aside-navigation.fixed,.next-shell .next-aside-tooldock.fixed{position:fixed;top:0;bottom:0;z-index:1}.next-shell .next-aside-navigation.fixed{left:0}.next-shell .next-aside-tooldock.fixed{right:0}.next-shell-aside{-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-aside .aside-trigger{cursor:pointer;outline:0;position:absolute;right:0;top:50%;width:20px;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;border:1px solid #ddd;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-shell-aside .local-nav-trigger{outline:0;border-left:none;-webkit-transform:translate(100%,-50%);-ms-transform:translate(100%,-50%);transform:translate(100%,-50%);right:0}.next-shell-aside .ancillary-trigger{outline:0;-webkit-transform:translate(-100%,-50%);-ms-transform:translate(-100%,-50%);transform:translate(-100%,-50%);border-right:0;left:1px}.next-shell-aside.next-aside-ancillary,.next-shell-aside.next-aside-localnavigation{position:relative}.next-shell-aside.next-shell-navigation{justify-self:flex-start;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-aside.next-shell-navigation,.next-shell-aside.next-shell-tooldock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.next-shell-aside.next-shell-tooldock{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-shell-aside .next-shell-tooldockitem{width:100%;text-align:center}.next-shell-aside .next-shell-localnavigation{position:relative}.next-shell-aside .next-shell-ancillary,.next-shell-aside .next-shell-localnavigation{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;justify-self:flex-start;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-light .next-shell-header .dock-trigger,.next-shell-light .next-shell-header .nav-trigger{background:#fff;background:var(--shell-light-header-background,#fff)}.next-shell-light .next-shell-aside .local-nav-trigger{background:#004080;background:var(--shell-light-local-navigation-background,#004080)}.next-shell-light .next-shell-aside .ancillary-trigger{background:#fff;background:var(--shell-light-ancillary-background,#fff)}.next-shell-light .next-shell-header{color:#000;color:var(--shell-light-header-color,#000);height:52px;height:var(--shell-light-header-height,52px);background:#fff;background:var(--shell-light-header-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-light-header-divider-size,1px) var(--shell-light-header-divider-style,solid) var(--shell-light-header-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-header-shadow,none);box-shadow:none;box-shadow:var(--shell-light-header-shadow,none);padding:0 16px;padding:0 var(--shell-light-header-paddingLeft,16px)}.next-shell-light .next-shell-header .next-shell-navigation{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:52px;height:var(--shell-light-header-height,52px);line-height:52px;line-height:var(--shell-light-header-height,52px);margin:0 48px;margin:0 var(--shell-light-navigation-hoz-marginLeft,48px)}.next-shell-light .next-shell-task-header{width:100%;min-height:40px;min-height:var(--shell-light-multitask-min-height,40px);background:#fff;background:var(--shell-light-multitask-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-light-multitask-divider-size,1px) var(--shell-light-multitask-divider-style,solid) var(--shell-light-multitask-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-multitask-shadow,none);box-shadow:none;box-shadow:var(--shell-light-multitask-shadow,none);padding:0;padding:0 var(--shell-light-multitask-paddingLeft,0);overflow:auto}.next-shell-light .next-shell-main{background:#eff3f8;background:var(--shell-light-content-background,#eff3f8)}.next-shell-light .next-shell-main .next-shell-appbar{min-height:48px;min-height:var(--shell-light-appbar-min-height,48px);background:#fff;background:var(--shell-light-appbar-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-light-appbar-divider-size,1px) var(--shell-light-appbar-divider-style,solid) var(--shell-light-appbar-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-appbar-shadow,none);box-shadow:none;box-shadow:var(--shell-light-appbar-shadow,none);padding:0 24px;padding:0 var(--shell-light-appbar-paddingLeft,24px)}.next-shell-light .next-shell-main .next-shell-content{padding:20px;padding:var(--shell-light-content-paddingTop,20px) var(--shell-light-content-paddingLeft,20px)}.next-shell-light .next-shell-main .next-shell-footer{background:transparent;background:var(--shell-light-footer-background,transparent);min-height:56px;min-height:var(--shell-light-footer-min-height,56px);color:#c1c1c1;color:var(--shell-light-footer-color,#c1c1c1);font-size:14px;font-size:var(--shell-light-footer-font-size,14px)}.next-shell-light .next-shell-aside.next-shell-navigation{width:168px;width:var(--shell-light-navigation-ver-width,168px);background:#fff;background:var(--shell-light-navigation-ver-background,#fff);border-right:1px solid #e3e4e6;border-right:var(--shell-light-navigation-ver-divider-size,1px) var(--shell-light-navigation-ver-divider-style,solid) var(--shell-light-navigation-ver-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-navigation-ver-shadow,none);box-shadow:none;box-shadow:var(--shell-light-navigation-ver-shadow,none);padding:8px 0;padding:var(--shell-light-navigation-ver-paddingTop,8px) 0 var(--shell-light-navigation-ver-paddingBottom,8px)}.next-shell-light .next-shell-aside.next-shell-navigation.next-shell-collapse.next-shell-mini{width:60px;width:var(--shell-light-navigation-ver-width-mini,60px)}.next-shell-light .next-shell-aside.next-shell-navigation.next-shell-collapse{width:0}.next-shell-light .next-shell-aside.next-shell-tooldock{width:52px;width:var(--shell-light-tooldock-width,52px);background:#004080;background:var(--shell-light-tooldock-background,#004080);border-left:1px solid #e3e4e6;border-left:var(--shell-light-tooldock-divider-size,1px) var(--shell-light-tooldock-divider-style,solid) var(--shell-light-tooldock-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-tooldock-shadow,none);box-shadow:none;box-shadow:var(--shell-light-tooldock-shadow,none);padding:8px 0;padding:var(--shell-light-tooldock-paddingTop,8px) 0 var(--shell-light-tooldock-paddingBottom,8px)}.next-shell-light .next-shell-aside .next-shell-tooldockitem{padding:8px 0;padding:var(--shell-light-tooldock-item-paddingTop,8px) 0;color:#555;color:var(--shell-light-tooldock-item-color,#555);background:transparent;background:var(--shell-light-tooldock-item-background,transparent)}.next-shell-light .next-shell-aside .next-shell-tooldockitem:hover{color:#111;color:var(--shell-light-tooldock-item-color-hover,#111);background:#eff3f8;background:var(--shell-light-tooldock-item-background-hover,#eff3f8)}.next-shell-light .next-shell-aside .next-shell-localnavigation{width:168px;width:var(--shell-light-local-navigation-width,168px);background:#004080;background:var(--shell-light-local-navigation-background,#004080);border-right:1px solid #e3e4e6;border-right:var(--shell-light-local-navigation-divider-size,1px) var(--shell-light-local-navigation-divider-style,solid) var(--shell-light-local-navigation-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-local-navigation-shadow,none);box-shadow:none;box-shadow:var(--shell-light-local-navigation-shadow,none);padding:8px 0;padding:var(--shell-light-local-navigation-paddingTop,8px) 0 var(--shell-light-local-navigation-paddingBottom,8px)}.next-shell-light .next-shell-aside .next-shell-localnavigation.next-shell-collapse{width:0}.next-shell-light .next-shell-aside .next-shell-ancillary{width:168px;width:var(--shell-light-ancillary-width,168px);background:#fff;background:var(--shell-light-ancillary-background,#fff);border-left:1px solid #e3e4e6;border-left:var(--shell-light-ancillary-divider-size,1px) var(--shell-light-ancillary-divider-style,solid) var(--shell-light-ancillary-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-ancillary-shadow,none);box-shadow:none;box-shadow:var(--shell-light-ancillary-shadow,none);padding:8px 0;padding:var(--shell-light-ancillary-paddingTop,8px) 0 var(--shell-light-ancillary-paddingBottom,8px)}.next-shell-light .next-shell-aside .next-shell-ancillary.next-shell-collapse{width:0}.next-shell-dark .next-shell-header .dock-trigger,.next-shell-dark .next-shell-header .nav-trigger{background:#000;background:var(--shell-dark-header-background,#000)}.next-shell-dark .next-shell-aside .local-nav-trigger{background:#004080;background:var(--shell-dark-local-navigation-background,#004080)}.next-shell-dark .next-shell-aside .ancillary-trigger{background:#fff;background:var(--shell-dark-ancillary-background,#fff)}.next-shell-dark .next-shell-header{color:#fff;color:var(--shell-dark-header-color,#fff);height:52px;height:var(--shell-dark-header-height,52px);background:#000;background:var(--shell-dark-header-background,#000);border-bottom:1px solid #1f1f1f;border-bottom:var(--shell-dark-header-divider-size,1px) var(--shell-dark-header-divider-style,solid) var(--shell-dark-header-divider-color,#1f1f1f);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--shell-dark-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--shell-dark-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));padding:0 16px;padding:0 var(--shell-dark-header-paddingLeft,16px)}.next-shell-dark .next-shell-header .next-shell-navigation{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:52px;height:var(--shell-dark-header-height,52px);line-height:52px;line-height:var(--shell-dark-header-height,52px);margin:0 48px;margin:0 var(--shell-dark-navigation-hoz-marginLeft,48px)}.next-shell-dark .next-shell-task-header{width:100%;min-height:40px;min-height:var(--shell-dark-multitask-min-height,40px);background:#fff;background:var(--shell-dark-multitask-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-dark-multitask-divider-size,1px) var(--shell-dark-multitask-divider-style,solid) var(--shell-dark-multitask-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-multitask-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-multitask-shadow,none);padding:0;padding:0 var(--shell-dark-multitask-paddingLeft,0);overflow:auto}.next-shell-dark .next-shell-main{background:#eff3f8;background:var(--shell-dark-content-background,#eff3f8)}.next-shell-dark .next-shell-main .next-shell-appbar{min-height:48px;min-height:var(--shell-dark-appbar-min-height,48px);background:#fff;background:var(--shell-dark-appbar-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-dark-appbar-divider-size,1px) var(--shell-dark-appbar-divider-style,solid) var(--shell-dark-appbar-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-appbar-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-appbar-shadow,none);padding:0 24px;padding:0 var(--shell-dark-appbar-paddingLeft,24px)}.next-shell-dark .next-shell-main .next-shell-content{padding:20px;padding:var(--shell-dark-content-paddingTop,20px) var(--shell-dark-content-paddingLeft,20px)}.next-shell-dark .next-shell-main .next-shell-footer{background:transparent;background:var(--shell-dark-footer-background,transparent);min-height:56px;min-height:var(--shell-dark-footer-min-height,56px);color:#c1c1c1;color:var(--shell-dark-footer-color,#c1c1c1);font-size:14px;font-size:var(--shell-dark-footer-font-size,14px)}.next-shell-dark .next-shell-aside.next-shell-navigation{width:168px;width:var(--shell-dark-navigation-ver-width,168px);background:#111;background:var(--shell-dark-navigation-ver-background,#111);border-right:1px solid #e3e4e6;border-right:var(--shell-dark-navigation-ver-divider-size,1px) var(--shell-dark-navigation-ver-divider-style,solid) var(--shell-dark-navigation-ver-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-navigation-ver-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-navigation-ver-shadow,none);padding:8px 0;padding:var(--shell-dark-navigation-ver-paddingTop,8px) 0 var(--shell-dark-navigation-ver-paddingBottom,8px)}.next-shell-dark .next-shell-aside.next-shell-navigation.next-shell-collapse.next-shell-mini{width:60px;width:var(--shell-dark-navigation-ver-width-mini,60px)}.next-shell-dark .next-shell-aside.next-shell-navigation.next-shell-collapse{width:0}.next-shell-dark .next-shell-aside.next-shell-tooldock{width:52px;width:var(--shell-dark-tooldock-width,52px);background:#004080;background:var(--shell-dark-tooldock-background,#004080);border-left:1px solid #e3e4e6;border-left:var(--shell-dark-tooldock-divider-size,1px) var(--shell-dark-tooldock-divider-style,solid) var(--shell-dark-tooldock-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-tooldock-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-tooldock-shadow,none);padding:8px 0;padding:var(--shell-dark-tooldock-paddingTop,8px) 0 var(--shell-dark-tooldock-paddingBottom,8px)}.next-shell-dark .next-shell-aside .next-shell-tooldockitem{padding:8px 0;padding:var(--shell-dark-tooldock-item-paddingTop,8px) 0;color:#555;color:var(--shell-dark-tooldock-item-color,#555);background:transparent;background:var(--shell-dark-tooldock-item-background,transparent)}.next-shell-dark .next-shell-aside .next-shell-tooldockitem:hover{color:#111;color:var(--shell-dark-tooldock-item-color-hover,#111);background:#eff3f8;background:var(--shell-dark-tooldock-item-background-hover,#eff3f8)}.next-shell-dark .next-shell-aside .next-shell-localnavigation{width:168px;width:var(--shell-dark-local-navigation-width,168px);background:#004080;background:var(--shell-dark-local-navigation-background,#004080);border-right:1px solid #e3e4e6;border-right:var(--shell-dark-local-navigation-divider-size,1px) var(--shell-dark-local-navigation-divider-style,solid) var(--shell-dark-local-navigation-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-local-navigation-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-local-navigation-shadow,none);padding:8px 0;padding:var(--shell-dark-local-navigation-paddingTop,8px) 0 var(--shell-dark-local-navigation-paddingBottom,8px)}.next-shell-dark .next-shell-aside .next-shell-localnavigation.next-shell-collapse{width:0}.next-shell-dark .next-shell-aside .next-shell-ancillary{width:168px;width:var(--shell-dark-ancillary-width,168px);background:#fff;background:var(--shell-dark-ancillary-background,#fff);border-left:1px solid #e3e4e6;border-left:var(--shell-dark-ancillary-divider-size,1px) var(--shell-dark-ancillary-divider-style,solid) var(--shell-dark-ancillary-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-ancillary-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-ancillary-shadow,none);padding:8px 0;padding:var(--shell-dark-ancillary-paddingTop,8px) 0 var(--shell-dark-ancillary-paddingBottom,8px)}.next-shell-dark .next-shell-aside .next-shell-ancillary.next-shell-collapse{width:0}.next-shell-brand .next-shell-header .dock-trigger,.next-shell-brand .next-shell-header .nav-trigger{background:#0064c8;background:var(--shell-brand-header-background,#0064c8)}.next-shell-brand .next-shell-aside .local-nav-trigger{background:#004080;background:var(--shell-brand-local-navigation-background,#004080)}.next-shell-brand .next-shell-aside .ancillary-trigger{background:#fff;background:var(--shell-brand-ancillary-background,#fff)}.next-shell-brand .next-shell-header{color:#fff;color:var(--shell-brand-header-color,#fff);height:52px;height:var(--shell-brand-header-height,52px);background:#0064c8;background:var(--shell-brand-header-background,#0064c8);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-brand-header-divider-size,1px) var(--shell-brand-header-divider-style,solid) var(--shell-brand-header-divider-color,#e3e4e6);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--shell-brand-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--shell-brand-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));padding:0 16px;padding:0 var(--shell-brand-header-paddingLeft,16px)}.next-shell-brand .next-shell-header .next-shell-navigation{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:52px;height:var(--shell-brand-header-height,52px);line-height:52px;line-height:var(--shell-brand-header-height,52px);margin:0 48px;margin:0 var(--shell-brand-navigation-hoz-marginLeft,48px)}.next-shell-brand .next-shell-task-header{width:100%;min-height:40px;min-height:var(--shell-brand-multitask-min-height,40px);background:#fff;background:var(--shell-brand-multitask-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-brand-multitask-divider-size,1px) var(--shell-brand-multitask-divider-style,solid) var(--shell-brand-multitask-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-multitask-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-multitask-shadow,none);padding:0;padding:0 var(--shell-brand-multitask-paddingLeft,0);overflow:auto}.next-shell-brand .next-shell-main{background:#eff3f8;background:var(--shell-brand-content-background,#eff3f8)}.next-shell-brand .next-shell-main .next-shell-appbar{min-height:48px;min-height:var(--shell-brand-appbar-min-height,48px);background:#fff;background:var(--shell-brand-appbar-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-brand-appbar-divider-size,1px) var(--shell-brand-appbar-divider-style,solid) var(--shell-brand-appbar-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-appbar-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-appbar-shadow,none);padding:0 24px;padding:0 var(--shell-brand-appbar-paddingLeft,24px)}.next-shell-brand .next-shell-main .next-shell-content{padding:20px;padding:var(--shell-brand-content-paddingTop,20px) var(--shell-brand-content-paddingLeft,20px)}.next-shell-brand .next-shell-main .next-shell-footer{background:transparent;background:var(--shell-brand-footer-background,transparent);min-height:56px;min-height:var(--shell-brand-footer-min-height,56px);color:#c1c1c1;color:var(--shell-brand-footer-color,#c1c1c1);font-size:14px;font-size:var(--shell-brand-footer-font-size,14px)}.next-shell-brand .next-shell-aside.next-shell-navigation{width:168px;width:var(--shell-brand-navigation-ver-width,168px);background:#fff;background:var(--shell-brand-navigation-ver-background,#fff);border-right:1px solid #e3e4e6;border-right:var(--shell-brand-navigation-ver-divider-size,1px) var(--shell-brand-navigation-ver-divider-style,solid) var(--shell-brand-navigation-ver-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-navigation-ver-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-navigation-ver-shadow,none);padding:8px 0;padding:var(--shell-brand-navigation-ver-paddingTop,8px) 0 var(--shell-brand-navigation-ver-paddingBottom,8px)}.next-shell-brand .next-shell-aside.next-shell-navigation.next-shell-collapse.next-shell-mini{width:60px;width:var(--shell-brand-navigation-ver-width-mini,60px)}.next-shell-brand .next-shell-aside.next-shell-navigation.next-shell-collapse{width:0}.next-shell-brand .next-shell-aside.next-shell-tooldock{width:52px;width:var(--shell-brand-tooldock-width,52px);background:#004080;background:var(--shell-brand-tooldock-background,#004080);border-left:1px solid #e3e4e6;border-left:var(--shell-brand-tooldock-divider-size,1px) var(--shell-brand-tooldock-divider-style,solid) var(--shell-brand-tooldock-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-tooldock-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-tooldock-shadow,none);padding:8px 0;padding:var(--shell-brand-tooldock-paddingTop,8px) 0 var(--shell-brand-tooldock-paddingBottom,8px)}.next-shell-brand .next-shell-aside .next-shell-tooldockitem{padding:8px 0;padding:var(--shell-brand-tooldock-item-paddingTop,8px) 0;color:#555;color:var(--shell-brand-tooldock-item-color,#555);background:transparent;background:var(--shell-brand-tooldock-item-background,transparent)}.next-shell-brand .next-shell-aside .next-shell-tooldockitem:hover{color:#111;color:var(--shell-brand-tooldock-item-color-hover,#111);background:#eff3f8;background:var(--shell-brand-tooldock-item-background-hover,#eff3f8)}.next-shell-brand .next-shell-aside .next-shell-localnavigation{width:168px;width:var(--shell-brand-local-navigation-width,168px);background:#004080;background:var(--shell-brand-local-navigation-background,#004080);border-right:1px solid #e3e4e6;border-right:var(--shell-brand-local-navigation-divider-size,1px) var(--shell-brand-local-navigation-divider-style,solid) var(--shell-brand-local-navigation-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-local-navigation-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-local-navigation-shadow,none);padding:8px 0;padding:var(--shell-brand-local-navigation-paddingTop,8px) 0 var(--shell-brand-local-navigation-paddingBottom,8px)}.next-shell-brand .next-shell-aside .next-shell-localnavigation.next-shell-collapse{width:0}.next-shell-brand .next-shell-aside .next-shell-ancillary{width:168px;width:var(--shell-brand-ancillary-width,168px);background:#fff;background:var(--shell-brand-ancillary-background,#fff);border-left:1px solid #e3e4e6;border-left:var(--shell-brand-ancillary-divider-size,1px) var(--shell-brand-ancillary-divider-style,solid) var(--shell-brand-ancillary-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-ancillary-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-ancillary-shadow,none);padding:8px 0;padding:var(--shell-brand-ancillary-paddingTop,8px) 0 var(--shell-brand-ancillary-paddingBottom,8px)}.next-shell-brand .next-shell-aside .next-shell-ancillary.next-shell-collapse{width:0}.next-shell-header .next-shell-navigation.next-shell-nav-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.next-shell-header .next-shell-navigation.next-shell-nav-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.next-shell-header .next-shell-navigation.next-shell-nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-shell.next-shell-phone .next-aside-navigation{width:100%}.next-shell.next-shell-phone .next-aside-navigation.next-shell-collapse{width:0}.next-shell.next-shell-phone .next-shell-header .next-shell-navigation{display:none}.next-shell.next-shell-phone .next-shell-navigation{width:100%;height:100%;-webkit-transition:height .2s ease;transition:height .2s ease}.next-shell.next-shell-phone .next-shell-navigation.next-shell-collapse{padding:0;height:0;-webkit-transition:height .2s ease;transition:height .2s ease}.next-shell.next-shell-phone .next-shell-tooldock{height:52px;height:var(--shell-dark-tooldock-height,52px);left:0;right:0;position:absolute;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-shell.next-shell-phone .next-shell-tooldock.next-shell-collapse{display:none;height:0;padding:0;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell.next-shell-phone .next-shell-aside.next-aside-ancillary,.next-shell.next-shell-tablet .next-shell-aside.next-aside-ancillary{width:0}.next-shell.next-shell-phone .next-shell-ancillary,.next-shell.next-shell-tablet .next-shell-ancillary{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.next-shell.next-shell-phone .next-shell-aside.next-aside-localnavigation,.next-shell.next-shell-tablet .next-shell-aside.next-aside-localnavigation{width:0}.next-notification{width:384px;position:fixed;z-index:1010;padding:0;margin:0}.next-notification .next-message{margin-bottom:16px;overflow:hidden}.next-notification-fade-leave{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-notification-fade-leave.next-notification-fade-leave-active{-webkit-animation-name:NotificationFadeOut;animation-name:NotificationFadeOut;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes NotificationFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}@keyframes NotificationFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}.next-typography{color:#333;color:var(--typography-text-color,#333)}.next-typography-title{font-weight:600;font-weight:var(--typography-title-font-weight,600);margin-bottom:.5em}.next-typography+.next-typography-title{margin-top:1.2em}.next-typography-paragraph{color:#333;color:var(--typography-text-color,#333);margin-bottom:1em;font-size:12px;font-size:var(--typography-paragraph-font-size,12px);line-height:1.5;line-height:var(--typography-paragraph-line-height,1.5)}.next-typography mark{padding:0;background:#fac800;background:var(--typography-text-mark-background,#fac800);color:#333;color:var(--typography-text-mark-color,#333)}.next-typography strong{font-weight:600;font-weight:var(--typography-text-strong-font-weight,600)}.next-typography code{background-color:#eff3f8;background-color:var(--typography-text-code-background,#eff3f8);color:#333;color:var(--typography-text-code-color,#333);border:1px solid #c0c6cc;border:1px solid var(--typography-text-code-border-color,#c0c6cc);margin:0 .2em;padding:.2em .4em .1em;font-size:85%;border-radius:2px;border-radius:var(--typography-text-code-corner,2px)}.next-typography ol,.next-typography ul{margin:0 0 1em;padding:0}.next-typography li{list-style-type:circle;margin:0 0 0 20px;padding:0 0 0 4px}.next-typography a{text-decoration:none}.next-typography a:link{color:#0064c8;color:var(--color-link-1,#0064c8)}.next-typography a:visited{color:#0064c8;color:var(--color-link-2,#0064c8)}.next-typography a:active,.next-typography a:hover{color:#0064c8;color:var(--color-link-3,#0064c8)}.next-typography a:active{text-decoration:underline}h1.next-typography-title{font-size:48px;font-size:var(--typography-title-h1-font-size,48px)}h2.next-typography-title{font-size:36px;font-size:var(--typography-title-h2-font-size,36px)}h3.next-typography-title{font-size:24px;font-size:var(--typography-title-h3-font-size,24px)}h4.next-typography-title{font-size:20px;font-size:var(--typography-title-h4-font-size,20px)}h5.next-typography-title{font-size:16px;font-size:var(--typography-title-h5-font-size,16px)}h6.next-typography-title{font-size:14px;font-size:var(--typography-title-h6-font-size,14px)}.next-divider{margin:0;padding:0;font-size:14px;line-height:1.5;list-style:none;font-variant:tabular-nums;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";background:#e3e4e6;background:var(--divider-hoz-color,#e3e4e6);border-collapse:separate}.next-divider,.next-divider *,.next-divider :after,.next-divider :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-divider-hoz{display:block;clear:both;width:100%;min-width:100%;height:1px;height:var(--divider-hoz-size,1px);margin:16px 0;margin:var(--divider-hoz-marginTop,16px) 0}.next-divider-ver{position:relative;top:-.06em;display:inline-block;width:1px;width:var(--divider-ver-size,1px);background:#c0c6cc;background:var(--divider-ver-color,#c0c6cc);height:.9em;margin:0 8px;margin:0 var(--divider-ver-marginLeft,8px);vertical-align:middle}.next-divider-hoz.next-divider-with-text-center,.next-divider-hoz.next-divider-with-text-left,.next-divider-hoz.next-divider-with-text-right{display:table;margin:16px 0;margin:var(--divider-hoz-text-marginTop,16px) 0;color:#666;color:var(--divider-hoz-text-color,#666);font-weight:400;font-weight:var(--divider-hoz-text-weight,normal);font-size:14px;font-size:var(--divider-hoz-text-size,14px);white-space:nowrap;text-align:center;background:transparent}.next-divider-hoz.next-divider-with-text-center:after,.next-divider-hoz.next-divider-with-text-center:before,.next-divider-hoz.next-divider-with-text-left:after,.next-divider-hoz.next-divider-with-text-left:before,.next-divider-hoz.next-divider-with-text-right:after,.next-divider-hoz.next-divider-with-text-right:before{top:50%;display:table-cell;width:50%;border-top:1px solid #e3e4e6;border-top:var(--divider-hoz-size,1px) solid var(--divider-hoz-color,#e3e4e6);-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);content:""}.next-divider-hoz.next-divider-with-text-center.next-divider-dashed,.next-divider-hoz.next-divider-with-text-left.next-divider-dashed,.next-divider-hoz.next-divider-with-text-right.next-divider-dashed{border-top:0}.next-divider-hoz.next-divider-with-text-center.next-divider-dashed:after,.next-divider-hoz.next-divider-with-text-center.next-divider-dashed:before,.next-divider-hoz.next-divider-with-text-left.next-divider-dashed:after,.next-divider-hoz.next-divider-with-text-left.next-divider-dashed:before,.next-divider-hoz.next-divider-with-text-right.next-divider-dashed:after,.next-divider-hoz.next-divider-with-text-right.next-divider-dashed:before{border-style:dashed none none}.next-divider-hoz.next-divider-with-text-left .next-divider-inner-text,.next-divider-hoz.next-divider-with-text-right .next-divider-inner-text{display:inline-block;padding:0 16px;padding:0 var(--divider-hoz-text-left-paddingLeft,16px)}.next-divider-hoz.next-divider-with-text-left:before{top:50%;width:5%}.next-divider-hoz.next-divider-with-text-left:after,.next-divider-hoz.next-divider-with-text-right:before{top:50%;width:95%}.next-divider-hoz.next-divider-with-text-right:after{top:50%;width:5%}.next-divider-inner-text{display:inline-block;padding:0 16px;padding:0 var(--divider-hoz-text-center-paddingLeft,16px)}.next-divider-dashed{background:none;border:0 dashed #e3e4e6;border-color:var(--divider-hoz-color,#e3e4e6);border-top:var(--divider-hoz-size,1px) dashed var(--divider-hoz-color,#e3e4e6)}.next-divider-dashed.next-divider-ver{border-width:0 0 0 1px;border-left-width:var(--divider-ver-size,1px);border-bottom-width:0;border-right-width:0;border-top-width:0}.next-box{display:-webkit-box;display:-ms-flexbox;display:flex}.next-box,.next-box *,.next-box :after,.next-box :before,.next-table{-webkit-box-sizing:border-box;box-sizing:border-box}.next-table{position:relative;border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0);border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0);border-top:1px solid #e3e4e6;border-top:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-left:1px solid #e3e4e6;border-left:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table *,.next-table :after,.next-table :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-table .next-table-header tr:first-child th:first-child{border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0)}.next-table .next-table-header tr:first-child th:last-child{border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0)}.next-table .next-table-header tr:last-child th:first-child{border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0)}.next-table .next-table-header tr:last-child th:last-child{border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0)}.next-table.next-table-layout-fixed{overflow:auto}.next-table.next-table-layout-fixed table{table-layout:fixed}.next-table.next-table-layout-auto table{table-layout:auto}.next-table.next-table-small th .next-table-cell-wrapper{padding:8px;padding:var(--table-size-s-header-padding-top,8px) var(--table-size-s-header-padding-left,8px)}.next-table.next-table-small td .next-table-cell-wrapper{padding:8px;padding:var(--table-size-s-cell-padding-top,8px) var(--table-size-s-cell-padding-left,8px)}.next-table.next-table-small .next-table-prerow .next-table-cell-wrapper{padding:8px}.next-table table{border-collapse:separate;border-spacing:0;width:100%;background:#fff;background:var(--table-row-bg,#fff);border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0);border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0)}.next-table table tr:first-child td{border-top-width:0}.next-table th{padding:0;background:#eff3f8;background:var(--table-th-bg,#eff3f8);color:#333;color:var(--table-th-color,#333);text-align:left;font-weight:400;font-weight:var(--table-th-font-weight,normal);border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table th .next-table-cell-wrapper{padding:8px 16px;padding:var(--table-header-padding-top,8px) var(--table-header-padding-left,16px);overflow:hidden;text-overflow:ellipsis;word-break:break-all}.next-table th.next-table-prerow .next-table-cell-wrapper{padding:12px 16px}.next-table th.next-table-word-break-word .next-table-cell-wrapper{word-break:break-word}.next-table th.next-table-fix-left,.next-table th.next-table-fix-right{z-index:1}.next-table-affix{z-index:1;overflow:hidden}.next-table-stickylock .next-table-affix{z-index:9}.next-table-header-resizable{position:relative}.next-table-header-resizable .next-table-resize-handler{position:absolute;right:-5px;top:0;bottom:0;width:10px;background:transparent;cursor:ew-resize}.next-table-header-resizable .next-table-resize-handler:after{position:absolute;display:block;content:" ";width:2px;width:var(--line-2,2px);height:100%;right:50%}.next-table-header-resizable .next-table-resize-handler:hover:after{z-index:1;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-table.next-table-lock-left .next-table-header-resizable .next-table-resize-handler,.next-table.next-table-lock-right .next-table-header-resizable .next-table-resize-handler{cursor:auto}.next-table.next-table-lock-left .next-table-header-resizable .next-table-resize-handler:hover:after,.next-table.next-table-lock-right .next-table-header-resizable .next-table-resize-handler:hover:after{z-index:-1}.next-table td{padding:0;border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table td .next-table-cell-wrapper{padding:8px 16px;padding:var(--table-cell-padding-top,8px) var(--table-cell-padding-left,16px);overflow:hidden;text-overflow:ellipsis;word-break:break-all}.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow,.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow,.next-table td .next-table-cell-wrapper .next-table-tree-placeholder{margin-right:8px;outline:0;cursor:pointer}.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow .next-icon-remote,.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow:before{width:16px;font-size:16px;line-height:inherit}.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow:before{content:"\e61a";content:var(--table-tree-fold-icon-content,"")}.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow .next-icon-remote,.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow:before{width:16px;font-size:16px;line-height:inherit}.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow:before{content:"\e618";content:var(--table-tree-unfold-icon-content,"")}.next-table td.next-table-prerow .next-table-cell-wrapper{padding:12px 16px}.next-table td.next-table-word-break-word .next-table-cell-wrapper{word-break:break-word}.next-table .next-table-expanded .next-table-cell-wrapper,.next-table .next-table-selection .next-table-cell-wrapper{overflow:visible}.next-table.no-header table tr:first-child td{border-top-width:1px}.next-table.only-bottom-border{border-width:0}.next-table.only-bottom-border td,.next-table.only-bottom-border th{border-width:0 0 1px;border-bottom-width:var(--table-normal-border-width,1px);border-right-width:0;border-top-width:0}.next-table.only-bottom-border table tr td:first-child,.next-table.only-bottom-border table tr th:first-child{border-left-width:0}.next-table.only-bottom-border .next-table-body tr td:last-child,.next-table.only-bottom-border .next-table-header tr th:last-child{border-right-width:0}.next-table-loading{display:block}.next-table.zebra tr:nth-child(odd) td{background:#fff;background:var(--table-td-normal,#fff)}.next-table.zebra tr:nth-child(2n) td{background:#f8f8f9;background:var(--table-td-gray,#f8f8f9)}.next-table.zebra .next-table-cell.hovered,.next-table.zebra .next-table-row.hovered td{background:#f7f9fa;background:var(--table-row-hover-bg,#f7f9fa);color:#333;color:var(--table-row-hover-color,#333)}.next-table.zebra .next-table-row.selected td{background:#eff3f8;background:var(--table-row-selected-bg,#eff3f8);color:#333;color:var(--table-row-selected-color,#333)}.next-table-empty{color:#b3b3b3;color:var(--table-empty-color,#b3b3b3);padding:32px 0;padding:var(--table-empty-padding,32px) 0;text-align:center}.next-table-expanded-row>td{border-width:0 0 1px;border-bottom-width:var(--table-normal-border-width,1px);border-right-width:0;border-top-width:0}.next-table-expanded-row>td:first-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px)}.next-table-expanded-row>td:last-child{border-right-width:1px;border-right-width:var(--table-normal-border-width,1px)}.next-table-expanded-row:last-child>td{border-bottom-width:1px;border-bottom-width:var(--table-normal-border-width,1px)}.next-table-expanded-row .next-table{border-top:0;border-left:0}.next-table-expanded-row .next-table td,.next-table-expanded-row .next-table th{border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table-expanded-row .next-table.only-bottom-border td,.next-table-expanded-row .next-table.only-bottom-border th{border-right:0}.next-table-expanded-row .next-table .last td{border-bottom:0}.next-table-expanded-row .next-table td.last,.next-table-expanded-row .next-table th:last-child{border-right:0}.next-table-filter-footer{margin:10px 10px 0}.next-table-filter-footer button{margin-right:5px}.next-table-row{-webkit-transition:all .1s linear;transition:all .1s linear;background:#fff;background:var(--table-row-bg,#fff);color:#333;color:var(--table-row-color,#333)}.next-table-row.hidden{display:none}.next-table-row.hovered{background:#f7f9fa;background:var(--table-row-hover-bg,#f7f9fa);color:#333;color:var(--table-row-hover-color,#333)}.next-table-row.selected{background:#eff3f8;background:var(--table-row-selected-bg,#eff3f8);color:#333;color:var(--table-row-selected-color,#333)}.next-table-cell.hovered{background:#f7f9fa;background:var(--table-row-hover-bg,#f7f9fa);color:#333;color:var(--table-row-hover-color,#333)}.next-table-tree-placeholder{display:inline-block;width:12px}.last .next-table-expanded-row td{border-bottom-width:1px}.next-table-body,.next-table-header{overflow:auto;font-size:12px;font-size:var(--table-th-font-size,12px)}.next-table-column-resize-proxy{position:absolute;top:0;bottom:0;width:0;border-left:2px solid #0064c8;border-left:var(--line-2,2px) solid var(--color-brand1-6,#0064c8);z-index:10;display:none}.next-table-header{margin-bottom:-20px;padding-bottom:20px;border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0);border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0);overflow:-moz-scrollbars-none;-ms-overflow-style:none;scrollbar-width:none}.next-table-header::-webkit-scrollbar{display:none}.next-table-body{font-size:12px;font-size:var(--table-body-font-size,12px);position:relative}.next-table-fixed{border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table-fixed table{table-layout:fixed}.next-table-fixed .next-table-header{background:#eff3f8;background:var(--table-th-bg,#eff3f8)}.next-table-fixed table tr td:first-child,.next-table-fixed table tr th:first-child{border-left-width:0}.next-table-fixed .next-table-header th{border-top-width:0}.next-table-fixed .next-table-header tr th:last-child{border-right-width:0}.next-table-fixed .next-table-body td{border-top-width:0}.next-table-fixed .next-table-body tr:last-child td{border-bottom-width:0}.next-table-fixed .next-table-body tr td:last-child{border-right-width:0}.next-table-fixed.next-table-group table tr td:first-child,.next-table-fixed.next-table-group table tr th:first-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-header th{border-top-width:1px;border-top-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-header tr th:last-child{border-right-width:1px;border-right-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-body td{border-top-width:1px;border-top-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-body tr:last-child td{border-bottom-width:1px;border-bottom-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-body tr td:last-child,.next-table-fixed.next-table-lock-left .next-table-body tr td:last-child,.next-table-fixed.next-table-lock-left .next-table-header tr th:last-child{border-right-width:1px;border-right-width:var(--table-normal-border-width,1px)}.next-table-lock .next-table-body{overflow-x:auto;overflow-y:visible}.next-table-group{border-width:0}.next-table-group.only-bottom-border .next-table-body table,.next-table-group.only-bottom-border .next-table-header table{border-left:0}.next-table-group.only-bottom-border .next-table-body table,.next-table-group.only-bottom-border .next-table-body table.next-table-row,.next-table-group.only-bottom-border .next-table-header table{border-top:0}.next-table-group.only-bottom-border .next-table-body .next-table-group-footer td,.next-table-group.only-bottom-border .next-table-body table>tbody>tr:nth-last-child(2) td{border-bottom:0}.next-table-group .next-table-body{margin-top:8px;margin-top:var(--table-group-split,8px)}.next-table-group .next-table-body table{border-top:1px solid #e3e4e6;border-top:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-left:1px solid #e3e4e6;border-left:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);margin-bottom:8px;margin-bottom:var(--table-group-split,8px)}.next-table-group .next-table-body table tr:first-child td{border-top-width:1px}.next-table-group .next-table-body table:last-of-type{margin-bottom:0}.next-table-group .next-table-header table{border-top:1px solid #e3e4e6;border-top:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-left:1px solid #e3e4e6;border-left:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table-group .next-table-group-header td{background:#f7f9fa;background:var(--table-group-th-bg,#f7f9fa);color:#111;color:var(--table-group-th-color,#111)}.next-table-group .next-table-group-header td:first-child{border-top-left-radius:0;border-top-left-radius:var(--table-group-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-group-header-corner-bottom,0)}.next-table-group .next-table-group-header td:last-child{border-top-right-radius:0;border-top-right-radius:var(--table-group-header-corner-top,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-group-header-corner-bottom,0)}.next-table-group .next-table-group-footer td{background:#f7f9fa;background:var(--table-group-footer-bg,#f7f9fa);color:#111;color:var(--table-group-footer-color,#111)}.next-table-group .next-table-group-footer td:first-child{border-top-left-radius:0;border-top-left-radius:var(--table-group-footer-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-group-footer-corner-bottom,0)}.next-table-group .next-table-group-footer td:last-child{border-top-right-radius:0;border-top-right-radius:var(--table-group-footer-corner-top,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-group-footer-corner-bottom,0)}.next-table-group .next-table-row.hovered,.next-table-group .next-table-row.selected{background:#fff;background:var(--table-row-bg,#fff);color:#333;color:var(--table-row-color,#333)}.next-table-lock{position:relative}.next-table-lock table{table-layout:fixed}.next-table-header-inner{overflow:unset}.next-table-header-fixer{content:" ";border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0);width:15px;background:#eff3f8;background:var(--table-th-bg,#eff3f8);position:absolute;right:0;height:100%;top:0}.next-table-wrap-empty .next-table-lock-left td,.next-table-wrap-empty .next-table-lock-right td{border:none}.next-table-wrap-empty .next-table-lock-left .next-table-empty,.next-table-wrap-empty .next-table-lock-right .next-table-empty{display:none}.next-table-wrap-empty>.next-table-inner>.next-table-body>table{table-layout:fixed}.next-table-lock-left,.next-table-lock-right{position:absolute;left:0;top:0;z-index:1;border:0;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease;overflow:hidden}.next-table-lock-left table,.next-table-lock-right table{width:auto}.next-table-lock-left .next-table-body,.next-table-lock-right .next-table-body{overflow-y:scroll;overflow-x:hidden;margin-right:-20px;padding-right:0}.next-table-lock-left.shadow .next-table-body tr td:last-child,.next-table-lock-left.shadow .next-table-header tr th:last-child,.next-table-lock-right.shadow .next-table-body tr td:last-child,.next-table-lock-right.shadow .next-table-header tr th:last-child{border-right-width:0}.next-table-lock-right{right:0;left:auto}.next-table-lock-right table tr td:first-child,.next-table-lock-right table tr th:first-child{border-left-width:1px}.next-table-lock-right.shadow{-webkit-box-shadow:-2px 0 3px rgba(0,0,0,.12);box-shadow:-2px 0 3px rgba(0,0,0,.12)}.next-table-lock-left.shadow{-webkit-box-shadow:2px 0 3px rgba(0,0,0,.12);box-shadow:2px 0 3px rgba(0,0,0,.12)}.next-table-filter{line-height:1}.next-table-sort{cursor:pointer;position:relative;width:16px;display:inline-block;line-height:1}.next-table-sort:focus{outline:0}.next-table-sort>a:before{content:" ";display:inline-block;vertical-align:middle}.next-table-sort .next-icon{position:absolute;left:-2px;color:#111;color:var(--table-sort-color,#111)}.next-table-sort .next-icon .next-icon-remote,.next-table-sort .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-table-sort .current .next-icon{color:#0064c8;color:var(--table-sort-color-current,#0064c8)}.next-table-sort .next-icon-ascending{left:2px}.next-table-filter{cursor:pointer;width:20px;display:inline-block}.next-table-filter:focus{outline:0}.next-table-filter .next-icon{color:#111;color:var(--table-sort-color,#111)}.next-table-filter .next-icon .next-icon-remote,.next-table-filter .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-table-filter .next-table-filter-active{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-table-filter-menu .next-menu-content{max-height:220px;overflow:auto}.next-table-header-icon{margin-left:8px}.next-table-expanded-ctrl{cursor:pointer}.next-table-expanded-ctrl:focus{outline:0}.next-table-expanded-ctrl.disabled{color:#888;color:var(--table-expanded-ctrl-disabled-color,#888)}.next-table-expanded-ctrl .next-table-expand-unfold .next-icon-remote,.next-table-expanded-ctrl .next-table-expand-unfold:before{width:16px;font-size:16px;line-height:inherit}.next-table-expanded-ctrl .next-table-expand-unfold:before{content:"\e61b";content:var(--table-expand-unfold-icon-content,"")}.next-table-expanded-ctrl .next-table-expand-fold .next-icon-remote,.next-table-expanded-ctrl .next-table-expand-fold:before{width:16px;font-size:16px;line-height:inherit}.next-table-expanded-ctrl .next-table-expand-fold:before{content:"\e620";content:var(--table-expand-fold-icon-content,"")}.next-table-fix-left,.next-table-fix-right{background:inherit;position:sticky;z-index:1}.next-table-ping-left .next-table-expanded-area .next-table-fix-left-last:after{content:none}.next-table-ping-left .next-table-expanded-area .next-table-ping-left .next-table-fix-left-last,.next-table-ping-left .next-table-fix-left-last{border-right-width:0}.next-table-ping-left .next-table-expanded-area .next-table-ping-left .next-table-fix-left-last:after,.next-table-ping-left .next-table-fix-left-last:after{-webkit-box-shadow:inset 10px 0 8px -8px rgba(0,0,0,.15);box-shadow:inset 10px 0 8px -8px rgba(0,0,0,.15);position:absolute;top:0;right:0;bottom:0;width:30px;content:"";pointer-events:none;transition:box-shadow .3s,-webkit-box-shadow .3s;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.next-table-ping-right .next-table-expanded-area .next-table-fix-right-first:after{content:none}.next-table-ping-right .next-table-expanded-area .next-table-ping-right .next-table-fix-right-first:after,.next-table-ping-right .next-table-fix-right-first:after{left:0}.next-table-fixed.next-table-scrolling-to-right:after,.next-table-lock.next-table-scrolling-to-right:after,.next-table-ping-right .next-table-expanded-area .next-table-ping-right .next-table-fix-right-first:after,.next-table-ping-right .next-table-fix-right-first:after{-webkit-box-shadow:inset -10px 0 8px -8px rgba(0,0,0,.15);box-shadow:inset -10px 0 8px -8px rgba(0,0,0,.15);position:absolute;top:0;bottom:0;width:30px;content:"";pointer-events:none;transition:box-shadow .3s,-webkit-box-shadow .3s;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.next-table-fixed.next-table-scrolling-to-right:after,.next-table-lock.next-table-scrolling-to-right:after{right:-30px}.next-table-fixed.only-bottom-border,.next-table-lock.only-bottom-border{border-right:0}.next-table[dir=rtl] th{text-align:right}.next-table[dir=rtl] .next-table-header-resizable .next-table-resize-handler{right:auto;left:0}.next-table[dir=rtl] td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow,.next-table[dir=rtl] td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow,.next-table[dir=rtl] td .next-table-cell-wrapper .next-table-tree-placeholder{margin-left:3px;margin-right:0;float:right}.next-table[dir=rtl] .next-table-expanded-row td:first-child{border-left-width:0;border-right-width:1px}.next-table[dir=rtl] .next-table-expanded-row td:last-child{border-left-width:1px;border-right-width:0}.next-table[dir=rtl].only-bottom-border .next-table-expanded-row td,.next-table[dir=rtl].only-bottom-border .next-table-expanded-row th{border-width:0 0 1px;border-bottom-width:var(--table-normal-border-width,1px);border-right-width:0;border-top-width:0}.next-table[dir=rtl] .next-table-filter-footer button{margin-left:5px;margin-right:0}.next-table[dir=rtl] .next-table-lock-left,.next-table[dir=rtl] .next-table-lock-right{left:auto;right:0}.next-table[dir=rtl] .next-table-lock-right{right:auto;left:0}.next-table[dir=rtl] .next-table-lock-right table tr td:first-child,.next-table[dir=rtl] .next-table-lock-right table tr th:first-child{border-right-width:1px}.next-table[dir=rtl] .next-table-lock-right.shadow{-webkit-box-shadow:2px 0 3px rgba(0,0,0,.12);box-shadow:2px 0 3px rgba(0,0,0,.12)}.next-table[dir=rtl] .next-table-lock-left.shadow{-webkit-box-shadow:-2px 0 3px rgba(0,0,0,.12);box-shadow:-2px 0 3px rgba(0,0,0,.12)}.next-table[dir=rtl] .next-table-sort .next-icon{right:0;left:auto}.next-table[dir=rtl] .next-table-sort .next-icon-ascending{right:4px;left:auto}.next-table[dir=rtl] .next-table-filter{margin-right:5px;margin-left:0}.next-table-fixed[dir=rtl] table tr td:first-child,.next-table-fixed[dir=rtl] table tr th:first-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px);border-right-width:0}.next-table-fixed[dir=rtl] .next-table-body tr td:last-child,.next-table-fixed[dir=rtl] .next-table-header tr th:last-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px)}.next-calendar2,.next-calendar2 *,.next-calendar2 :after,.next-calendar2 :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-calendar2 table{border-collapse:collapse;border-spacing:0}.next-calendar2 td,.next-calendar2 th{padding:0}div[dir=rtl].next-calendar2-card .next-calendar2-header-actions,div[dir=rtl].next-calendar2-fullscreen .next-calendar2-header-actions,div[dir=rtl].next-calendar2-panel .next-calendar2-header-actions{margin-right:auto;margin-left:0}div[dir=rtl].next-calendar2-card .next-calendar2-header-actions>:not(:first-child),div[dir=rtl].next-calendar2-card .next-calendar2-header-ranges>:not(:first-child),div[dir=rtl].next-calendar2-fullscreen .next-calendar2-header-actions>:not(:first-child),div[dir=rtl].next-calendar2-fullscreen .next-calendar2-header-ranges>:not(:first-child),div[dir=rtl].next-calendar2-panel .next-calendar2-header-actions>:not(:first-child),div[dir=rtl].next-calendar2-panel .next-calendar2-header-ranges>:not(:first-child){margin-right:8px;margin-left:0}div[dir=rtl].next-calendar2-fullscreen .next-calendar2-cell-value,div[dir=rtl].next-calendar2-fullscreen .next-calendar2-table th{text-align:left}div[dir=rtl].next-calendar2-fullscreen .next-calendar2-table th{padding:0 0 5px 12px}.next-calendar2{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#fff}.next-calendar2-header{display:-webkit-box;display:-ms-flexbox;display:flex}.next-calendar2-table{width:100%;table-layout:fixed}.next-calendar2-cell{cursor:pointer;position:relative;-webkit-transition:background-color .2s,border .2s;transition:background-color .2s,border .2s}.next-calendar2 .next-calendar2-cell-inner{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);outline:none;min-width:24px;position:relative;border:1px solid transparent}.next-calendar2-cell-disabled:before{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-calendar2-card .next-calendar2-header-actions,.next-calendar2-fullscreen .next-calendar2-header-actions,.next-calendar2-panel .next-calendar2-header-actions{margin-left:auto}.next-calendar2-card .next-calendar2-header-actions>:not(:first-child),.next-calendar2-card .next-calendar2-header-ranges>:not(:first-child),.next-calendar2-fullscreen .next-calendar2-header-actions>:not(:first-child),.next-calendar2-fullscreen .next-calendar2-header-ranges>:not(:first-child),.next-calendar2-panel .next-calendar2-header-actions>:not(:first-child),.next-calendar2-panel .next-calendar2-header-ranges>:not(:first-child){margin-left:8px}.next-calendar2-card .next-calendar2-header-select-month,.next-calendar2-card .next-calendar2-header-select-year,.next-calendar2-fullscreen .next-calendar2-header-select-month,.next-calendar2-fullscreen .next-calendar2-header-select-year,.next-calendar2-panel .next-calendar2-header-select-month,.next-calendar2-panel .next-calendar2-header-select-year{min-width:88px}.next-calendar2-card .next-calendar2-header-select-month .next-input,.next-calendar2-card .next-calendar2-header-select-year .next-input,.next-calendar2-fullscreen .next-calendar2-header-select-month .next-input,.next-calendar2-fullscreen .next-calendar2-header-select-year .next-input,.next-calendar2-panel .next-calendar2-header-select-month .next-input,.next-calendar2-panel .next-calendar2-header-select-year .next-input{min-width:auto}.next-calendar2-card .next-calendar2-body,.next-calendar2-fullscreen .next-calendar2-body,.next-calendar2-panel .next-calendar2-body{padding:8px 0}.next-calendar2-card .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-inner{z-index:2;height:24px;line-height:22px;border-radius:2px;display:inline-block}.next-calendar2-card .next-calendar2,.next-calendar2-panel .next-calendar2{min-height:150px}.next-calendar2-card .next-calendar2-table thead>tr,.next-calendar2-panel .next-calendar2-table thead>tr{height:24px;color:#888;color:var(--color-text1-2,#888)}.next-calendar2-card .next-calendar2-table td,.next-calendar2-card .next-calendar2-table th,.next-calendar2-panel .next-calendar2-table td,.next-calendar2-panel .next-calendar2-table th{font-weight:400;text-align:center;padding:4px 0}.next-calendar2-card .next-calendar2-table th,.next-calendar2-panel .next-calendar2-table th{height:32px}.next-calendar2-card .next-calendar2-table-decade,.next-calendar2-card .next-calendar2-table-month,.next-calendar2-card .next-calendar2-table-year,.next-calendar2-panel .next-calendar2-table-decade,.next-calendar2-panel .next-calendar2-table-month,.next-calendar2-panel .next-calendar2-table-year{height:145px}.next-calendar2-card .next-calendar2-table-decade .next-calendar2-cell-inner,.next-calendar2-card .next-calendar2-table-month .next-calendar2-cell-inner,.next-calendar2-card .next-calendar2-table-year .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-decade .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-month .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-year .next-calendar2-cell-inner{min-width:56px}.next-calendar2-card .next-calendar2-table-quarter,.next-calendar2-panel .next-calendar2-table-quarter{height:50px}.next-calendar2-card .next-calendar2-table-quarter .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-quarter .next-calendar2-cell-inner{min-width:56px}.next-calendar2-card .next-calendar2-table-decade .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-decade .next-calendar2-cell-inner{min-width:80px}.next-calendar2-card .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today) .next-calendar2-cell-inner{color:#555;color:var(--color-text1-3,#555)}.next-calendar2-card .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today):hover:not(.next-calendar2-cell-hover) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today):hover:not(.next-calendar2-cell-hover) .next-calendar2-cell-inner{background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-calendar2-card .next-calendar2-cell-current.next-calendar2-cell-today:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current.next-calendar2-cell-today:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-calendar2-card .next-calendar2-cell-current.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner{color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-calendar2-fullscreen .next-calendar2-cell-value,.next-calendar2-fullscreen .next-calendar2-table th{text-align:right}.next-calendar2-fullscreen .next-calendar2-table th{padding:0 12px 5px 0}.next-calendar2-fullscreen .next-calendar2-cell-inner{margin:0 4px;padding:4px 8px 0}.next-calendar2-fullscreen .next-calendar2-cell-inner,.next-calendar2-fullscreen td .next-calendar2-cell-inner{height:80px;border-top:2px solid #e3e4e6;border-top:2px solid var(--color-line1-1,#e3e4e6)}.next-calendar2-fullscreen .next-calendar2-cell-disabled .next-calendar2-cell-inner{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-calendar2-fullscreen .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today) .next-calendar2-cell-inner{color:#555;color:var(--color-text1-3,#555)}.next-calendar2-fullscreen .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today):hover .next-calendar2-cell-inner{background-color:#f7f9fa;background-color:var(--color-fill1-2,#f7f9fa)}.next-calendar2-fullscreen .next-calendar2-cell-current.next-calendar2-cell-today .next-calendar2-cell-inner{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-calendar2-fullscreen .next-calendar2-cell-current .next-calendar2-cell-inner{background-color:#fff}.next-calendar2-fullscreen .next-calendar2-cell-current.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner{border-top-color:#0064c8;border-top-color:var(--color-brand1-6,#0064c8);font-weight:700;color:#0064c8;color:var(--color-brand1-6,#0064c8);background:#f7f9fa;background:var(--color-brand1-1,#f7f9fa)}.next-calendar2-card .next-calendar2-header{padding:8px;border-bottom:1px solid #e3e4e6;border-bottom:1px solid var(--color-line1-1,#e3e4e6)}.next-calendar2-panel .next-calendar2-header{padding:0 8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #e3e4e6;border-bottom:1px solid var(--color-line1-1,#e3e4e6)}.next-calendar2-panel .next-calendar2-header-btn{min-width:20px;line-height:20px;color:#555;color:var(--color-text1-3,#555);font-family:inherit;vertical-align:initial;border-radius:2px}.next-calendar2-panel .next-calendar2-header-btn>span,.next-calendar2-panel .next-calendar2-header-text-field{text-align:center;font-size:14px;color:#111;color:var(--color-text1-4,#111);font-weight:bolder;vertical-align:initial}.next-calendar2-panel .next-calendar2-header-btn:hover,.next-calendar2-panel .next-calendar2-header-btn:hover>span{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-calendar2-panel .next-calendar2-header-left-btn:hover,.next-calendar2-panel .next-calendar2-header-right-btn:hover{background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-calendar2-panel .next-calendar2-header-text-field{-webkit-box-flex:1;-ms-flex:1;flex:1;height:38px;line-height:38px}.next-calendar2-panel .next-calendar2-header-text-field .next-calendar2-header-btn:not(:first-child){margin-left:6px}.next-calendar2-header-select-month-popup,.next-calendar2-header-select-year-popup{min-width:auto}.next-time-picker2-menu{float:left;text-align:center;padding:8px 0}.next-time-picker2-menu:not(:last-child){border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) var(--line-solid,solid) var(--color-line1-2,#c0c6cc)}.next-time-picker2-menu-title{cursor:default;height:28px;line-height:28px;font-size:12px;font-size:var(--font-size-caption,12px);font-weight:400;font-weight:var(--font-weight-2,normal);color:#888;color:var(--color-text1-2,#888);background:#fff}.next-time-picker2-menu ul{position:relative;overflow-y:hidden;overflow-x:auto;list-style:none;margin:0;width:54px;padding:0;font-size:12px;font-size:var(--font-size-caption,12px);height:224px;scrollbar-width:none;-ms-overflow-style:none}.next-time-picker2-menu ul::-webkit-scrollbar{width:0}.next-time-picker2-menu ul:hover{overflow-y:auto}.next-time-picker2-menu ul:after{display:block;height:192px;content:""}.next-time-picker2-menu-item{cursor:pointer;height:32px;line-height:32px;-webkit-transition:background .1s linear;transition:background .1s linear;color:#555;color:var(--color-text1-3,#555);background:#fff;outline:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.next-time-picker2-menu-item:hover{color:#111;color:var(--color-text1-4,#111);background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-time-picker2-menu-item.next-selected{color:#555;color:var(--color-text1-3,#555);background:#f7f9fa;background:var(--color-brand1-1,#f7f9fa)}.next-time-picker2-menu-item.next-disabled{cursor:not-allowed;color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-time-picker2-panel{display:-webkit-box;display:-ms-flexbox;display:flex}.next-time-picker2-panel,.next-time-picker2-panel *,.next-time-picker2-panel :after,.next-time-picker2-panel :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker2-panel:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-time-picker2-panel-header{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) var(--line-solid,solid) var(--popup-local-border-color,#c0c6cc)}.next-time-picker2-panel-input.next-input{width:100%;padding:6px;border-color:transparent;vertical-align:middle}.next-time-picker2-panel .next-time-picker2-menu{-webkit-box-flex:1;-ms-flex:1;flex:1}.next-time-picker2-footer{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-top:1px solid #f0f0f0;padding:4px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.next-time-picker2-footer-actions{margin-left:auto}.next-time-picker2-wrapper[dir=rtl] .next-time-picker2-menu{float:right}.next-time-picker2-wrapper[dir=rtl] .next-time-picker2-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) var(--line-solid,solid) var(--color-line1-2,#c0c6cc)}.next-time-picker2{display:inline-block}.next-time-picker2,.next-time-picker2 *,.next-time-picker2 :after,.next-time-picker2 :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker2-trigger .next-input{width:100%}.next-time-picker2-wrapper{padding:4px 0}.next-time-picker2-body{overflow:hidden;border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);background:#fff;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-time-picker2-symbol-clock-icon:before{content:"\e621";content:var(--icon-content-clock,"")}div[dir=rtl] .next-date-picker2-footer-preset>.next-btn{margin-left:8px;margin-right:0}div[dir=rtl] .next-date-picker2-footer-actions{margin-left:0;margin-right:auto}div[dir=rtl] .next-date-picker2-wrapper .next-calendar2-cell:last-child:before{border-top-right-radius:0;border-bottom-right-radius:0;right:0;border-top-left-radius:2px;border-bottom-left-radius:2px;left:8px}div[dir=rtl] .next-date-picker2-wrapper .next-calendar2-cell:first-child:before{border-top-left-radius:0;border-bottom-left-radius:0;left:0;border-top-right-radius:2px;border-bottom-right-radius:2px;right:8px}div[dir=rtl] .next-date-time-picker-wrapper{border-right:1px solid #e3e4e6;border-right:1px solid var(--color-line1-1,#e3e4e6);border-left:node}div[dir=rtl] .next-date-time-picker-wrapper .next-time-picker2-menu:not(:last-child){border-left:1px solid #dcdee3;border-right:none}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin:before{right:50%;left:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end:before{left:50%;right:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-begin:after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-child:after{right:8px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-begin:not(:last-child):after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-child:not(.next-calendar2-cell-hover-end):after{left:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-end:after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-child:after{left:8px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-end:not(:first-child):after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-child:not(.next-calendar2-cell-hover-begin):after{right:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-begin:after{left:0;right:7px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-end:after{right:0;left:7px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-of-type:after{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none;border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-of-type:after{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:before{right:0;left:8px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end.next-calendar2-cell-hover:after{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-begin:after{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850);border-top-right-radius:2px;border-bottom-right-radius:2px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-end:after{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850);border-top-left-radius:2px;border-bottom-left-radius:2px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):before{right:8px;left:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:after{right:8px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:not(.next-calendar2-cell-hover-end):not(.next-calendar2-cell-hover-begin):after{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}div[dir=rtl] .next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:nth-child(2):before{right:50%;left:0}div[dir=rtl] .next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:last-child:before{left:50%;right:0}.next-date-picker2{outline:none;display:inline-table;position:relative;width:inherit}.next-date-picker2-footer{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-top:1px solid #e3e4e6;border-top:1px solid var(--color-line1-1,#e3e4e6);padding:4px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}.next-date-picker2-footer-preset>.next-btn{margin-right:8px}.next-date-picker2-footer-actions{margin-left:auto}.next-date-picker2-footer-preset-only{width:100%}.next-date-picker2-overlay{vertical-align:top;padding:4px 0}.next-date-picker2-overlay-range{padding:12px 0}.next-date-picker2-wrapper{-webkit-box-shadow:0 4px 16px 0 rgba(0,0,0,.12);box-shadow:0 4px 16px 0 rgba(0,0,0,.12);background-color:#fff;border:1px solid #e3e4e6;border:1px solid var(--color-line1-1,#e3e4e6);border-radius:2px;border-radius:var(--corner-1,2px)}.next-date-picker2-wrapper .next-calendar2-panel{border-radius:2px;border-radius:var(--corner-1,2px)}.next-date-picker2-wrapper .next-calendar2-body{width:272px}.next-date-picker2-wrapper .next-calendar2-cell:before{content:"";position:absolute;top:50%;right:0;left:0;z-index:1;height:24px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-date-picker2-wrapper .next-calendar2-cell:last-child:before{border-top-right-radius:2px;border-bottom-right-radius:2px;right:8px}.next-date-picker2-wrapper .next-calendar2-cell:first-child:before{border-top-left-radius:2px;border-bottom-left-radius:2px;left:8px}.next-date-picker2-input{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;outline:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);vertical-align:middle;width:inherit;background-color:#fff;background-color:var(--input-bg-color,#fff)}.next-date-picker2-input .next-input{border:none;-ms-flex-preferred-size:100%;flex-basis:100%;height:100%}.next-date-picker2-input .next-input input{height:100%;width:auto}.next-date-picker2-input.next-date-picker2-input-small{height:24px;height:var(--form-element-small-height,24px);border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-label{padding-left:8px;padding-left:var(--input-s-label-padding-left,8px);font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-inner{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-control,.next-date-picker2-input.next-date-picker2-input-small .next-input-inner-text{padding-right:4px;padding-right:var(--input-s-icon-padding-right,4px)}.next-date-picker2-input.next-date-picker2-input-small input{height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px \0;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::-moz-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-text-field{padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px);height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2)}.next-date-picker2-input.next-date-picker2-input-small .next-icon .next-icon-remote,.next-date-picker2-input.next-date-picker2-input-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-date-picker2-input.next-date-picker2-input-small .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-small-corner,2px) var(--form-element-small-corner,2px) 0}.next-date-picker2-input.next-date-picker2-input-medium{height:32px;height:var(--form-element-medium-height,32px);border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-label{padding-left:16px;padding-left:var(--input-m-label-padding-left,16px);font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-inner{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-control,.next-date-picker2-input.next-date-picker2-input-medium .next-input-inner-text{padding-right:8px;padding-right:var(--input-m-icon-padding-right,8px)}.next-date-picker2-input.next-date-picker2-input-medium input{height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px \0;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::-moz-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-text-field{padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px);height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2)}.next-date-picker2-input.next-date-picker2-input-medium .next-icon .next-icon-remote,.next-date-picker2-input.next-date-picker2-input-medium .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-date-picker2-input.next-date-picker2-input-medium .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-medium-corner,2px) var(--form-element-medium-corner,2px) 0}.next-date-picker2-input.next-date-picker2-input-large{height:36px;height:var(--form-element-large-height,36px);border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-label{padding-left:16px;padding-left:var(--input-l-label-padding-left,16px);font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-inner{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-control,.next-date-picker2-input.next-date-picker2-input-large .next-input-inner-text{padding-right:12px;padding-right:var(--input-l-icon-padding-right,12px)}.next-date-picker2-input.next-date-picker2-input-large input{height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px \0;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::-webkit-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::-moz-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::-ms-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-text-field{padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px);height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2)}.next-date-picker2-input.next-date-picker2-input-large .next-icon .next-icon-remote,.next-date-picker2-input.next-date-picker2-input-large .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-date-picker2-input.next-date-picker2-input-large .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-large-corner,2px) var(--form-element-large-corner,2px) 0}.next-date-picker2-input:hover{border-color:#c0c6cc;border-color:var(--input-hover-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-hover-bg-color,#fff)}.next-date-picker2-input.next-date-picker2-input-focus{border-color:#0064c8;border-color:var(--input-focus-border-color,#0064c8);background-color:#fff;background-color:var(--input-focus-bg-color,#fff);-webkit-box-shadow:0 0 0 0 rgba(0,100,200,.2);box-shadow:0 0 0 0 rgba(0,100,200,.2)}.next-date-picker2-input.next-date-picker2-input-noborder{border-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.next-date-picker2-input.next-date-picker2-input-disabled{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);cursor:not-allowed}.next-date-picker2-input.next-date-picker2-input-disabled,.next-date-picker2-input.next-date-picker2-input-disabled:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-date-picker2-input-separator{color:#c0c6cc;color:var(--input-border-color,#c0c6cc);font-size:12px;line-height:12px;display:inline-block;min-width:16px;text-align:center}.next-date-picker2-panel,.next-range-picker2-panel{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-range-picker-left .next-calendar2-header-right-btn,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-range-picker-right .next-calendar2-header-left-btn{visibility:hidden}.next-range-picker2-arrow{display:block;-webkit-transform:translateY(-50%) rotate(-45deg);-ms-transform:translateY(-50%) rotate(-45deg);transform:translateY(-50%) rotate(-45deg);position:absolute;z-index:1;width:10px;height:10px;margin-left:16.5px;border-color:#e3e4e6 #e3e4e6 transparent transparent;border-left:1px solid transparent;border-bottom:1px solid transparent;border-right:1px solid var(--color-line1-1,#e3e4e6);border-top:1px solid var(--color-line1-1,#e3e4e6);-webkit-transition:left .3s ease-out;transition:left .3s ease-out;background:#fff}.next-date-picker2-tl-bl .next-range-picker2-arrow{top:12.5px}.next-date-picker2-bl-tl .next-range-picker2-arrow{bottom:13px;-webkit-transform:translateY(50%) rotate(135deg);-ms-transform:translateY(50%) rotate(135deg);transform:translateY(50%) rotate(135deg)}.next-date-time-picker-wrapper{border-left:1px solid #e3e4e6;border-left:1px solid var(--color-line1-1,#e3e4e6)}.next-date-time-picker-wrapper .next-calendar2-body{padding-right:0;padding-left:0}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-disabled .next-calendar2-cell-inner{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected:before{color:#555;color:var(--color-text1-3,#555);background:#f7f9fa;background:var(--color-brand1-1,#f7f9fa)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected .next-calendar2-cell-inner{color:#555;color:var(--color-text1-3,#555);background:transparent}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin .next-calendar2-cell-inner,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end .next-calendar2-cell-inner{z-index:10;color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin:before{left:50%}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end:before{right:50%}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin-single:before,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end-single:before{display:none}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:after{content:"";position:absolute;top:50%;right:0;left:0;z-index:2;height:24px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-color:#002850 transparent;border-left:1px dashed transparent;border-bottom:1px dashed var(--color-brand1-9,#002850);border-right:1px dashed transparent;border-top:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-begin:after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-child:after{left:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-end:after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-child:after{right:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-begin:after{left:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-end:after{right:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-of-type:after{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-of-type:after{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:before{right:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end.next-calendar2-cell-hover:after{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-begin:after{border-top:1px dashed #002850;border-top:1px dashed var(--color-brand1-9,#002850);border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850);border-top-left-radius:2px;border-bottom-left-radius:2px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-end:after{border-top:1px dashed #002850;border-top:1px dashed var(--color-brand1-9,#002850);border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850);border-top-right-radius:2px;border-bottom-right-radius:2px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):before{left:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:after{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}.next-calendar2-table-week .next-calendar2-cell-hover:after{display:none}.next-calendar2-table-week tr:hover .next-calendar2-cell:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):before{background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected .next-calendar2-cell-inner,.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:before{color:#555;color:var(--color-text1-3,#555);background-color:#f7f9fa;background-color:var(--color-brand1-1,#f7f9fa)}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:last-child .next-calendar2-cell-inner,.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:nth-child(2) .next-calendar2-cell-inner{color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:nth-child(2):before{left:50%}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:last-child:before{right:50%}.next-calendar2-table-week tr:not(.next-calendar2-week-current) td.next-calendar2-cell.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner,.next-calendar2-table-week tr:not(.next-calendar2-week-current) td.next-calendar2-cell.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled):before{background-color:transparent;color:#c1c1c1;color:var(--color-text1-1,#c1c1c1)}.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled):last-child .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled):nth-child(2) .next-calendar2-cell-inner{background-color:#f7f9fa;background-color:var(--color-brand1-1,#f7f9fa);color:#555;color:var(--color-text1-3,#555)}.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-begin:last-child .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-begin:nth-child(2) .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-end:last-child .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-end:nth-child(2) .next-calendar2-cell-inner{color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-icon-d-up-for-component:before{content:"\ea37";content:var(--icon-content-d-up-for-component,"")}.next-icon-zoom-in-line1:before{content:"\ea36";content:var(--icon-content-zoom-in-line1,"")}.next-icon-zoom-out-line1:before{content:"\ea35";content:var(--icon-content-zoom-out-line1,"")}.next-icon-a-rank-line2:before{content:"\ea34";content:var(--icon-content-a-rank-line2,"")}.next-icon-a-drag-line2:before{content:"\ea33";content:var(--icon-content-a-drag-line2,"")}.next-icon-a-filter-line2:before{content:"\ea32";content:var(--icon-content-a-filter-line2,"")}.next-icon-undo-fill:before{content:"\ea31";content:var(--icon-content-undo-fill,"")}.next-icon-undo-line:before{content:"\ea30";content:var(--icon-content-undo-line,"")}.next-icon-cancelundo-line:before{content:"\e880";content:var(--icon-content-cancelundo-line,"")}.next-icon-cancelundo-fill:before{content:"\e87f";content:var(--icon-content-cancelundo-fill,"")}.next-icon-t-up-for-component:before{content:"\ea2f";content:var(--icon-content-t-up-for-component,"")}.next-icon-time-for-component:before{content:"\ea2e";content:var(--icon-content-time-for-component,"")}.next-icon-help-for-component:before{content:"\ea2d";content:var(--icon-content-help-for-component,"")}.next-icon-left-for-component:before{content:"\ea2c";content:var(--icon-content-left-for-component,"")}.next-icon-d-left-for-component:before{content:"\ea2b";content:var(--icon-content-d-left-for-component,"")}.next-icon-info-for-component:before{content:"\ea2a";content:var(--icon-content-info-for-component,"")}.next-icon-right-for-component:before{content:"\ea29";content:var(--icon-content-right-for-component,"")}.next-icon-d-right-for-component:before{content:"\ea28";content:var(--icon-content-d-right-for-component,"")}.next-icon-plus-for-component:before{content:"\ea27";content:var(--icon-content-plus-for-component,"")}.next-icon-loading-line-for-component:before{content:"\ea26";content:var(--icon-content-loading-line-for-component,"")}.next-icon-upload-for-component:before{content:"\ea25";content:var(--icon-content-upload-for-component,"")}.next-icon-more-line-for-component:before{content:"\ea24";content:var(--icon-content-more-line-for-component,"")}.next-icon-check-for-component:before{content:"\ea23";content:var(--icon-content-check-for-component,"")}.next-icon-closemark-for-component:before{content:"\ea22";content:var(--icon-content-closemark-for-component,"")}.next-icon-warning-for-component:before{content:"\ea21";content:var(--icon-content-warning-for-component,"")}.next-icon-search-for-component:before{content:"\ea20";content:var(--icon-content-search-for-component,"")}.next-icon-expand-down-for-component:before{content:"\ea1f";content:var(--icon-content-expand-down-for-component,"")}.next-icon-minus-for-component:before{content:"\e8ae";content:var(--icon-content-minus-for-component,"")}.next-icon-chek-for-component:before{content:"\ea1e";content:var(--icon-content-chek-for-component,"")}.next-icon-chart_bar:before{content:"\e924";content:var(--icon-content-chart_bar,"")}.next-icon-align-vertical-top-line:before{content:"\e9ad";content:var(--icon-content-align-vertical-top-line,"")}.next-icon-screen-arrow-left-line:before{content:"\e9ac";content:var(--icon-content-screen-arrow-left-line,"")}.next-icon-googleplus-fill:before{content:"\e9ab";content:var(--icon-content-googleplus-fill,"")}.next-icon-document-task-line:before{content:"\e9aa";content:var(--icon-content-document-task-line,"")}.next-icon-twitter-fill:before{content:"\e9a9";content:var(--icon-content-twitter-fill,"")}.next-icon-copy-line:before{content:"\e9a8";content:var(--icon-content-copy-line,"")}.next-icon-folders-line:before{content:"\e9a7";content:var(--icon-content-folders-line,"")}.next-icon-check-line:before{content:"\e9a6";content:var(--icon-content-check-line,"")}.next-icon-chevron-sort-line:before{content:"\e9a5";content:var(--icon-content-chevron-sort-line,"")}.next-icon-user-certification-line:before{content:"\e9a4";content:var(--icon-content-user-certification-line,"")}.next-icon-arrow-up-line:before{content:"\e9a3";content:var(--icon-content-arrow-up-line,"")}.next-icon-info-line:before{content:"\e9a2";content:var(--icon-content-info-line,"")}.next-icon-refresh-line:before{content:"\e9a1";content:var(--icon-content-refresh-line,"")}.next-icon-checkmark-line:before{content:"\e9a0";content:var(--icon-content-checkmark-line,"")}.next-icon-list-line:before{content:"\e99f";content:var(--icon-content-list-line,"")}.next-icon-calculator-line:before{content:"\e99e";content:var(--icon-content-calculator-line,"")}.next-icon-forbidden-line:before{content:"\e99d";content:var(--icon-content-forbidden-line,"")}.next-icon-warning-line:before{content:"\e99c";content:var(--icon-content-warning-line,"")}.next-icon-caution-line:before{content:"\e99b";content:var(--icon-content-caution-line,"")}.next-icon-a-1688-fill:before{content:"\e99a";content:var(--icon-content-a-1688-fill,"")}.next-icon-like-line:before{content:"\e999";content:var(--icon-content-like-line,"")}.next-icon-closemark-line:before{content:"\e998";content:var(--icon-content-closemark-line,"")}.next-icon-help-line:before{content:"\e997";content:var(--icon-content-help-line,"")}.next-icon-ascending-line:before{content:"\e996";content:var(--icon-content-ascending-line,"")}.next-icon-double-down-line:before{content:"\e995";content:var(--icon-content-double-down-line,"")}.next-icon-arrow-down-line:before{content:"\e994";content:var(--icon-content-arrow-down-line,"")}.next-icon-arrow-left-line:before{content:"\e993";content:var(--icon-content-arrow-left-line,"")}.next-icon-double-left-line:before{content:"\e992";content:var(--icon-content-double-left-line,"")}.next-icon-button-sort-fill:before{content:"\e991";content:var(--icon-content-button-sort-fill,"")}.next-icon-down-to-bottom-line:before{content:"\e990";content:var(--icon-content-down-to-bottom-line,"")}.next-icon-star-line:before{content:"\e98f";content:var(--icon-content-star-line,"")}.next-icon-forward-line:before{content:"\e98e";content:var(--icon-content-forward-line,"")}.next-icon-sort-line:before{content:"\e98d";content:var(--icon-content-sort-line,"")}.next-icon-double-right-line:before{content:"\e98c";content:var(--icon-content-double-right-line,"")}.next-icon-GitHub-fill:before{content:"\e98b";content:var(--icon-content-GitHub-fill,"")}.next-icon-expand-line:before{content:"\e98a";content:var(--icon-content-expand-line,"")}.next-icon-switch-line:before{content:"\e989";content:var(--icon-content-switch-line,"")}.next-icon-descending-line:before{content:"\e988";content:var(--icon-content-descending-line,"")}.next-icon-back-line:before{content:"\e987";content:var(--icon-content-back-line,"")}.next-icon-stop-outline-line:before{content:"\e986";content:var(--icon-content-stop-outline-line,"")}.next-icon-pause-outline-line:before{content:"\e985";content:var(--icon-content-pause-outline-line,"")}.next-icon-unlock-line:before{content:"\e984";content:var(--icon-content-unlock-line,"")}.next-icon-discount-line:before{content:"\e983";content:var(--icon-content-discount-line,"")}.next-icon-sub-account-line:before{content:"\e982";content:var(--icon-content-sub-account-line,"")}.next-icon-navigation-line:before{content:"\e981";content:var(--icon-content-navigation-line,"")}.next-icon-plus-circle-line:before{content:"\e980";content:var(--icon-content-plus-circle-line,"")}.next-icon-close-line:before{content:"\e97f";content:var(--icon-content-close-line,"")}.next-icon-notification-line:before{content:"\e97e";content:var(--icon-content-notification-line,"")}.next-icon-taobao-fill:before{content:"\e97d";content:var(--icon-content-taobao-fill,"")}.next-icon-flow-line:before{content:"\e97c";content:var(--icon-content-flow-line,"")}.next-icon-download-line:before{content:"\e97b";content:var(--icon-content-download-line,"")}.next-icon-international-line:before{content:"\e97a";content:var(--icon-content-international-line,"")}.next-icon-document-add-line:before{content:"\e979";content:var(--icon-content-document-add-line,"")}.next-icon-notification-off-line:before{content:"\e978";content:var(--icon-content-notification-off-line,"")}.next-icon-lock-line:before{content:"\e977";content:var(--icon-content-lock-line,"")}.next-icon-user-avatar-line:before{content:"\e976";content:var(--icon-content-user-avatar-line,"")}.next-icon-partner-line:before{content:"\e975";content:var(--icon-content-partner-line,"")}.next-icon-et-line:before{content:"\e973";content:var(--icon-content-et-line,"")}.next-icon-customer-sercive-line:before{content:"\e972";content:var(--icon-content-customer-sercive-line,"")}.next-icon-user-follow-line:before{content:"\e971";content:var(--icon-content-user-follow-line,"")}.next-icon-screen-arrow-right-line:before{content:"\e970";content:var(--icon-content-screen-arrow-right-line,"")}.next-icon-more-line:before{content:"\e624";content:var(--icon-content-more-line,"")}.next-icon-minus-circle-line:before{content:"\e96f";content:var(--icon-content-minus-circle-line,"")}.next-icon-facebook-fill:before{content:"\e62d";content:var(--icon-content-facebook-fill,"")}.next-icon-user-admin-line:before{content:"\e629";content:var(--icon-content-user-admin-line,"")}.next-icon-collapse-line:before{content:"\e96e";content:var(--icon-content-collapse-line,"")}.next-icon-bug-report-line:before{content:"\e622";content:var(--icon-content-bug-report-line,"")}.next-icon-credits-line:before{content:"\e96d";content:var(--icon-content-credits-line,"")}.next-icon-upload-line:before{content:"\e96c";content:var(--icon-content-upload-line,"")}.next-icon-setting-line:before{content:"\e96b";content:var(--icon-content-setting-line,"")}.next-icon-message-line:before{content:"\e96a";content:var(--icon-content-message-line,"")}.next-icon-edit-line:before{content:"\e969";content:var(--icon-content-edit-line,"")}.next-icon-message-unread-line:before{content:"\e967";content:var(--icon-content-message-unread-line,"")}.next-icon-view-off-line:before{content:"\e966";content:var(--icon-content-view-off-line,"")}.next-icon-phonecall-line:before{content:"\e965";content:var(--icon-content-phonecall-line,"")}.next-icon-document-download-line:before{content:"\e964";content:var(--icon-content-document-download-line,"")}.next-icon-order-unread-line:before{content:"\e963";content:var(--icon-content-order-unread-line,"")}.next-icon-view-line:before{content:"\e962";content:var(--icon-content-view-line,"")}.next-icon-document-line:before{content:"\e961";content:var(--icon-content-document-line,"")}.next-icon-chart-pie-line:before{content:"\e960";content:var(--icon-content-chart-pie-line,"")}.next-icon-folder-line:before{content:"\e95f";content:var(--icon-content-folder-line,"")}.next-icon-renew-line:before{content:"\e95e";content:var(--icon-content-renew-line,"")}.next-icon-order-line:before{content:"\e95d";content:var(--icon-content-order-line,"")}.next-icon-cart-empty-line:before{content:"\e95c";content:var(--icon-content-cart-empty-line,"")}.next-icon-zoom-out-line:before{content:"\e95b";content:var(--icon-content-zoom-out-line,"")}.next-icon-play-outline-line:before{content:"\e95a";content:var(--icon-content-play-outline-line,"")}.next-icon-share-fill:before{content:"\e959";content:var(--icon-content-share-fill,"")}.next-icon-time-line:before{content:"\e958";content:var(--icon-content-time-line,"")}.next-icon-arrow-right-line:before{content:"\e957";content:var(--icon-content-arrow-right-line,"")}.next-icon-button-left-fill:before{content:"\e956";content:var(--icon-content-button-left-fill,"")}.next-icon-cart-with-line:before{content:"\e955";content:var(--icon-content-cart-with-line,"")}.next-icon-user-profile-line:before{content:"\e954";content:var(--icon-content-user-profile-line,"")}.next-icon-zoom-in-line:before{content:"\e780";content:var(--icon-content-zoom-in-line,"")}.next-icon-search-line:before{content:"\e77f";content:var(--icon-content-search-line,"")}.next-icon-phonecall-off-line:before{content:"\e62f";content:var(--icon-content-phonecall-off-line,"")}.next-icon-location-line:before{content:"\e62e";content:var(--icon-content-location-line,"")}.next-icon-user-avatar-fill:before{content:"\e62c";content:var(--icon-content-user-avatar-fill,"")}.next-icon-compress-line:before{content:"\e62b";content:var(--icon-content-compress-line,"")}.next-icon-share-line:before{content:"\e62a";content:var(--icon-content-share-line,"")}.next-icon-questionnaire-line:before{content:"\ea1d";content:var(--icon-content-questionnaire-line,"")}.next-icon-trainin-line:before{content:"\ea1c";content:var(--icon-content-trainin-line,"")}.next-icon-recharge-line:before{content:"\ea1b";content:var(--icon-content-recharge-line,"")}.next-icon-scroll-mode-line:before{content:"\ea1a";content:var(--icon-content-scroll-mode-line,"")}.next-icon-sort-circle-line:before{content:"\ea19";content:var(--icon-content-sort-circle-line,"")}.next-icon-drag-line:before{content:"\ea18";content:var(--icon-content-drag-line,"")}.next-icon-arrow-circular-line:before{content:"\ea17";content:var(--icon-content-arrow-circular-line,"")}.next-icon-calendar-line:before{content:"\ea16";content:var(--icon-content-calendar-line,"")}.next-icon-external-link-line:before{content:"\ea15";content:var(--icon-content-external-link-line,"")}.next-icon-remote-control-line:before{content:"\ea14";content:var(--icon-content-remote-control-line,"")}.next-icon-compass-line:before{content:"\ea13";content:var(--icon-content-compass-line,"")}.next-icon-diagnose-line:before{content:"\ea12";content:var(--icon-content-diagnose-line,"")}.next-icon-management-line:before{content:"\ea11";content:var(--icon-content-management-line,"")}.next-icon-display-arrow-left-line:before{content:"\ea10";content:var(--icon-content-display-arrow-left-line,"")}.next-icon-resource-setting-fill:before{content:"\ea0f";content:var(--icon-content-resource-setting-fill,"")}.next-icon-plus-line:before{content:"\ea0e";content:var(--icon-content-plus-line,"")}.next-icon-minus-line:before{content:"\ea0d";content:var(--icon-content-minus-line,"")}.next-icon-backspace-line:before{content:"\ea0c";content:var(--icon-content-backspace-line,"")}.next-icon-terminal-line:before{content:"\ea0b";content:var(--icon-content-terminal-line,"")}.next-icon-home-line:before{content:"\ea0a";content:var(--icon-content-home-line,"")}.next-icon-structured-data-line:before{content:"\ea09";content:var(--icon-content-structured-data-line,"")}.next-icon-step-mode-line:before{content:"\ea08";content:var(--icon-content-step-mode-line,"")}.next-icon-connection-line:before{content:"\ea07";content:var(--icon-content-connection-line,"")}.next-icon-new-fill:before{content:"\ea06";content:var(--icon-content-new-fill,"")}.next-icon-hourglass-line:before{content:"\ea05";content:var(--icon-content-hourglass-line,"")}.next-icon-alert-fill:before{content:"\ea04";content:var(--icon-content-alert-fill,"")}.next-icon-rank-line:before{content:"\ea03";content:var(--icon-content-rank-line,"")}.next-icon-new-releases-fill:before{content:"\ea02";content:var(--icon-content-new-releases-fill,"")}.next-icon-news-line:before{content:"\ea01";content:var(--icon-content-news-line,"")}.next-icon-accesskey-line:before{content:"\ea00";content:var(--icon-content-accesskey-line,"")}.next-icon-database-line:before{content:"\e9ff";content:var(--icon-content-database-line,"")}.next-icon-transanction-line:before{content:"\e9fe";content:var(--icon-content-transanction-line,"")}.next-icon-inbox-line:before{content:"\e9fd";content:var(--icon-content-inbox-line,"")}.next-icon-align-horizontal-center-line:before{content:"\e9fc";content:var(--icon-content-align-horizontal-center-line,"")}.next-icon-comment-line:before{content:"\e9fb";content:var(--icon-content-comment-line,"")}.next-icon-pin-fill:before{content:"\e9fa";content:var(--icon-content-pin-fill,"")}.next-icon-gift-line:before{content:"\e9f9";content:var(--icon-content-gift-line,"")}.next-icon-filter-line:before{content:"\e9f8";content:var(--icon-content-filter-line,"")}.next-icon-flag-line:before{content:"\e9f7";content:var(--icon-content-flag-line,"")}.next-icon-package-line:before{content:"\e9f6";content:var(--icon-content-package-line,"")}.next-icon-power-off-line:before{content:"\e9f5";content:var(--icon-content-power-off-line,"")}.next-icon-screen-check-line:before{content:"\e9f4";content:var(--icon-content-screen-check-line,"")}.next-icon-cloud-download-line:before{content:"\e9f3";content:var(--icon-content-cloud-download-line,"")}.next-icon-wifi-line:before{content:"\e9f2";content:var(--icon-content-wifi-line,"")}.next-icon-screen-error-line:before{content:"\e9f1";content:var(--icon-content-screen-error-line,"")}.next-icon-save-line:before{content:"\e9f0";content:var(--icon-content-save-line,"")}.next-icon-mobile-line:before{content:"\e9ef";content:var(--icon-content-mobile-line,"")}.next-icon-charging-pile-line:before{content:"\e9ee";content:var(--icon-content-charging-pile-line,"")}.next-icon-application-group-fill:before{content:"\e9ed";content:var(--icon-content-application-group-fill,"")}.next-icon-outdent-line:before{content:"\e9ec";content:var(--icon-content-outdent-line,"")}.next-icon-screen-line:before{content:"\e9eb";content:var(--icon-content-screen-line,"")}.next-icon-pin-fixed-fill:before{content:"\e9ea";content:var(--icon-content-pin-fixed-fill,"")}.next-icon-cloud-upload-line:before{content:"\e9e9";content:var(--icon-content-cloud-upload-line,"")}.next-icon-screen-monitoring-line:before{content:"\e9e8";content:var(--icon-content-screen-monitoring-line,"")}.next-icon-tag-line:before{content:"\e9e7";content:var(--icon-content-tag-line,"")}.next-icon-qrcode-line:before{content:"\e9e6";content:var(--icon-content-qrcode-line,"")}.next-icon-mobile-error-line:before{content:"\e9e5";content:var(--icon-content-mobile-error-line,"")}.next-icon-paperclip-line:before{content:"\e9e4";content:var(--icon-content-paperclip-line,"")}.next-icon-delete-line:before{content:"\e9e3";content:var(--icon-content-delete-line,"")}.next-icon-indent-line:before{content:"\e9e2";content:var(--icon-content-indent-line,"")}.next-icon-application-line:before{content:"\e9e1";content:var(--icon-content-application-line,"")}.next-icon-email-line:before{content:"\e9e0";content:var(--icon-content-email-line,"")}.next-icon-sql-line:before{content:"\e9df";content:var(--icon-content-sql-line,"")}.next-icon-dingtalk-fill:before{content:"\e9de";content:var(--icon-content-dingtalk-fill,"")}.next-icon-folder-add-line:before{content:"\e9dd";content:var(--icon-content-folder-add-line,"")}.next-icon-align-horizontal-right-line:before{content:"\e9dc";content:var(--icon-content-align-horizontal-right-line,"")}.next-icon-align-vertical-bottom-line:before{content:"\e9db";content:var(--icon-content-align-vertical-bottom-line,"")}.next-icon-chart-relation-fill:before{content:"\e9da";content:var(--icon-content-chart-relation-fill,"")}.next-icon-screen-code-line:before{content:"\e9d9";content:var(--icon-content-screen-code-line,"")}.next-icon-map-line:before{content:"\e9d8";content:var(--icon-content-map-line,"")}.next-icon-display-arrow-right-line:before{content:"\e9d7";content:var(--icon-content-display-arrow-right-line,"")}.next-icon-database-plus-line:before{content:"\e9d6";content:var(--icon-content-database-plus-line,"")}.next-icon-wangwang-line:before{content:"\e9d5";content:var(--icon-content-wangwang-line,"")}.next-icon-alipay-fill:before{content:"\e9d4";content:var(--icon-content-alipay-fill,"")}.next-icon-image-line:before{content:"\e9d3";content:var(--icon-content-image-line,"")}.next-icon-key-line:before{content:"\e9d2";content:var(--icon-content-key-line,"")}.next-icon-hatch-line:before{content:"\e9d1";content:var(--icon-content-hatch-line,"")}.next-icon-scan-line:before{content:"\e9d0";content:var(--icon-content-scan-line,"")}.next-icon-balance-line:before{content:"\e9cf";content:var(--icon-content-balance-line,"")}.next-icon-align-horizontal-left-line:before{content:"\e9ce";content:var(--icon-content-align-horizontal-left-line,"")}.next-icon-chart-bar-line:before{content:"\e9cd";content:var(--icon-content-chart-bar-line,"")}.next-icon-pic-center-line:before{content:"\e9cc";content:var(--icon-content-pic-center-line,"")}.next-icon-cloud-machine-line:before{content:"\e9cb";content:var(--icon-content-cloud-machine-line,"")}.next-icon-chart-scatter-plot-line:before{content:"\e9ca";content:var(--icon-content-chart-scatter-plot-line,"")}.next-icon-all-line:before{content:"\e9c9";content:var(--icon-content-all-line,"")}.next-icon-border-verticle-line:before{content:"\e9c8";content:var(--icon-content-border-verticle-line,"")}.next-icon-cut-line:before{content:"\e9c7";content:var(--icon-content-cut-line,"")}.next-icon-layer-line:before{content:"\e9c6";content:var(--icon-content-layer-line,"")}.next-icon-box-line:before{content:"\e9c5";content:var(--icon-content-box-line,"")}.next-icon-chart-area-fill:before{content:"\e9c4";content:var(--icon-content-chart-area-fill,"")}.next-icon-mobile-check-line:before{content:"\e9c3";content:var(--icon-content-mobile-check-line,"")}.next-icon-pic-side-line:before{content:"\e9c2";content:var(--icon-content-pic-side-line,"")}.next-icon-up-to-top-line:before{content:"\e9c1";content:var(--icon-content-up-to-top-line,"")}.next-icon-enlarge-line:before{content:"\e9c0";content:var(--icon-content-enlarge-line,"")}.next-icon-double-up-line:before{content:"\e9bf";content:var(--icon-content-double-up-line,"")}.next-icon-page-first-line:before{content:"\e9be";content:var(--icon-content-page-first-line,"")}.next-icon-naver-fill:before{content:"\e9bd";content:var(--icon-content-naver-fill,"")}.next-icon-sina-fill:before{content:"\e9bc";content:var(--icon-content-sina-fill,"")}.next-icon-stackoverflow-fill:before{content:"\e9bb";content:var(--icon-content-stackoverflow-fill,"")}.next-icon-youtube-fill:before{content:"\e9ba";content:var(--icon-content-youtube-fill,"")}.next-icon-WeChat-fill:before{content:"\e9b9";content:var(--icon-content-WeChat-fill,"")}.next-icon-button-right-fill:before{content:"\e9b8";content:var(--icon-content-button-right-fill,"")}.next-icon-page-last-line:before{content:"\e9b7";content:var(--icon-content-page-last-line,"")}.next-icon-authentication-line:before{content:"\e9b6";content:var(--icon-content-authentication-line,"")}.next-icon-dollar-line:before{content:"\e9b5";content:var(--icon-content-dollar-line,"")}.next-icon-applets-fill:before{content:"\e9b4";content:var(--icon-content-applets-fill,"")}.next-icon-hot-fill:before{content:"\e9b3";content:var(--icon-content-hot-fill,"")}.next-icon-server-fault-fill:before{content:"\e9b2";content:var(--icon-content-server-fault-fill,"")}.next-icon-gallery-view-line:before{content:"\e9b1";content:var(--icon-content-gallery-view-line,"")}.next-icon-linkedin-fill:before{content:"\e9b0";content:var(--icon-content-linkedin-fill,"")}.next-icon-button-down-fill:before{content:"\e9af";content:var(--icon-content-button-down-fill,"")}.next-icon-button-up-fill:before{content:"\e9ae";content:var(--icon-content-button-up-fill,"")}.next-icon-compress:before{content:"\e8ce";content:var(--icon-content-compress,"")}.next-icon-arrow_circular:before{content:"\e8cd";content:var(--icon-content-arrow_circular,"")}.next-icon-charging_pile:before{content:"\e8cc";content:var(--icon-content-charging_pile,"")}.next-icon-backspace-fill:before{content:"\e8cb";content:var(--icon-content-backspace-fill,"")}.next-icon-star:before{content:"\e8ca";content:var(--icon-content-star,"")}.next-icon-info_fill:before{content:"\e8c9";content:var(--icon-content-info_fill,"")}.next-icon-caution:before{content:"\e8c8";content:var(--icon-content-caution,"")}.next-icon-info:before{content:"\e8c7";content:var(--icon-content-info,"")}.next-icon-closemark:before{content:"\e8c6";content:var(--icon-content-closemark,"")}.next-icon-caution_fill:before{content:"\e8c5";content:var(--icon-content-caution_fill,"")}.next-icon-check_fill:before{content:"\e8c4";content:var(--icon-content-check_fill,"")}.next-icon-warning_fill:before{content:"\e8c3";content:var(--icon-content-warning_fill,"")}.next-icon-forbidden_fill:before{content:"\e8c2";content:var(--icon-content-forbidden_fill,"")}.next-icon-star_fill:before{content:"\e8c1";content:var(--icon-content-star_fill,"")}.next-icon-checkmark:before{content:"\e8c0";content:var(--icon-content-checkmark,"")}.next-icon-like_fill:before{content:"\e8bf";content:var(--icon-content-like_fill,"")}.next-icon-help_fill:before{content:"\e8be";content:var(--icon-content-help_fill,"")}.next-icon-forbidden:before{content:"\e8bd";content:var(--icon-content-forbidden,"")}.next-icon-close_fill:before{content:"\e8bc";content:var(--icon-content-close_fill,"")}.next-icon-international:before{content:"\e8bb";content:var(--icon-content-international,"")}.next-icon-user_avatar:before{content:"\e8ba";content:var(--icon-content-user_avatar,"")}.next-icon-User_avatar_filled_alt:before{content:"\e8b9";content:var(--icon-content-User_avatar_filled_alt,"")}.next-icon-user_avatar_full_fill:before{content:"\e8b8";content:var(--icon-content-user_avatar_full_fill,"")}.next-icon-user_admin:before{content:"\e8b7";content:var(--icon-content-user_admin,"")}.next-icon-user_certification:before{content:"\e8b6";content:var(--icon-content-user_certification,"")}.next-icon-user_follow:before{content:"\e8b5";content:var(--icon-content-user_follow,"")}.next-icon-international_fill:before{content:"\e8b4";content:var(--icon-content-international_fill,"")}.next-icon-partner:before{content:"\e8b3";content:var(--icon-content-partner,"")}.next-icon-sub_account:before{content:"\e8b2";content:var(--icon-content-sub_account,"")}.next-icon-authentication1:before{content:"\e8b1";content:var(--icon-content-authentication1,"")}.next-icon-authentication_fill:before{content:"\e8b0";content:var(--icon-content-authentication_fill,"")}.next-icon-WeChat:before{content:"\e8af";content:var(--icon-content-WeChat,"")}.next-icon-GitHub:before{content:"\e8ad";content:var(--icon-content-GitHub,"")}.next-icon-youtube:before{content:"\e8ac";content:var(--icon-content-youtube,"")}.next-icon-taobao:before{content:"\e8ab";content:var(--icon-content-taobao,"")}.next-icon-wangwang:before{content:"\e8aa";content:var(--icon-content-wangwang,"")}.next-icon-twitter:before{content:"\e8a9";content:var(--icon-content-twitter,"")}.next-icon-google:before{content:"\e8a8";content:var(--icon-content-google,"")}.next-icon-alipay:before{content:"\e8a7";content:var(--icon-content-alipay,"")}.next-icon-server_fault:before{content:"\e8a6";content:var(--icon-content-server_fault,"")}.next-icon-facebook:before{content:"\e8a5";content:var(--icon-content-facebook,"")}.next-icon-stackoverflow:before{content:"\e8a4";content:var(--icon-content-stackoverflow,"")}.next-icon-naver:before{content:"\e8a2";content:var(--icon-content-naver,"")}.next-icon-linkedin:before{content:"\e8a1";content:var(--icon-content-linkedin,"")}.next-icon-dingtalk1:before{content:"\e8a0";content:var(--icon-content-dingtalk1,"")}.next-icon-applets:before{content:"\e89f";content:var(--icon-content-applets,"")}.next-icon-SQL:before{content:"\e89e";content:var(--icon-content-SQL,"")}.next-icon-Hatch:before{content:"\e89d";content:var(--icon-content-Hatch,"")}.next-icon-package_fill:before{content:"\e89c";content:var(--icon-content-package_fill,"")}.next-icon-package:before{content:"\e89b";content:var(--icon-content-package,"")}.next-icon-remote_control:before{content:"\e89a";content:var(--icon-content-remote_control,"")}.next-icon-layer:before{content:"\e899";content:var(--icon-content-layer,"")}.next-icon-layer_fill:before{content:"\e898";content:var(--icon-content-layer_fill,"")}.next-icon-folders:before{content:"\e897";content:var(--icon-content-folders,"")}.next-icon-document_task:before{content:"\e896";content:var(--icon-content-document_task,"")}.next-icon-flow:before{content:"\e895";content:var(--icon-content-flow,"")}.next-icon-document:before{content:"\e894";content:var(--icon-content-document,"")}.next-icon-document_download:before{content:"\e893";content:var(--icon-content-document_download,"")}.next-icon-folder_add:before{content:"\e892";content:var(--icon-content-folder_add,"")}.next-icon-database_plus_fill:before{content:"\e891";content:var(--icon-content-database_plus_fill,"")}.next-icon-document_add:before{content:"\e88d";content:var(--icon-content-document_add,"")}.next-icon-database_plus:before{content:"\e88c";content:var(--icon-content-database_plus,"")}.next-icon-database_fill:before{content:"\e88a";content:var(--icon-content-database_fill,"")}.next-icon-chart_pie:before{content:"\e886";content:var(--icon-content-chart_pie,"")}.next-icon-bug_report:before{content:"\e881";content:var(--icon-content-bug_report,"")}.next-icon-copy_fill:before{content:"\e87c";content:var(--icon-content-copy_fill,"")}.next-icon-chart_relation:before{content:"\e953";content:var(--icon-content-chart_relation,"")}.next-icon-terminal_fill:before{content:"\e952";content:var(--icon-content-terminal_fill,"")}.next-icon-scroll_mode:before{content:"\e951";content:var(--icon-content-scroll_mode,"")}.next-icon-step_mode:before{content:"\e950";content:var(--icon-content-step_mode,"")}.next-icon-structured_data:before{content:"\e94f";content:var(--icon-content-structured_data,"")}.next-icon-trainin:before{content:"\e94e";content:var(--icon-content-trainin,"")}.next-icon-screen:before{content:"\e94d";content:var(--icon-content-screen,"")}.next-icon-screen_monitoring:before{content:"\e94c";content:var(--icon-content-screen_monitoring,"")}.next-icon-screen_error:before{content:"\e94b";content:var(--icon-content-screen_error,"")}.next-icon-screen_code:before{content:"\e94a";content:var(--icon-content-screen_code,"")}.next-icon-screen_arrow_right:before{content:"\e949";content:var(--icon-content-screen_arrow_right,"")}.next-icon-screen_check:before{content:"\e948";content:var(--icon-content-screen_check,"")}.next-icon-resource_setting:before{content:"\e947";content:var(--icon-content-resource_setting,"")}.next-icon-screen_arrow_left:before{content:"\e946";content:var(--icon-content-screen_arrow_left,"")}.next-icon-pin_fixed:before{content:"\e945";content:var(--icon-content-pin_fixed,"")}.next-icon-pin:before{content:"\e944";content:var(--icon-content-pin,"")}.next-icon-pic_side:before{content:"\e943";content:var(--icon-content-pic_side,"")}.next-icon-recharge:before{content:"\e942";content:var(--icon-content-recharge,"")}.next-icon-pic_side_fill:before{content:"\e941";content:var(--icon-content-pic_side_fill,"")}.next-icon-pic_center:before{content:"\e940";content:var(--icon-content-pic_center,"")}.next-icon-pic_center_fill:before{content:"\e93f";content:var(--icon-content-pic_center_fill,"")}.next-icon-paper_plane_fill:before{content:"\e93e";content:var(--icon-content-paper_plane_fill,"")}.next-icon-new_releases:before{content:"\e93d";content:var(--icon-content-new_releases,"")}.next-icon-more:before{content:"\e93c";content:var(--icon-content-more,"")}.next-icon-mobile_check:before{content:"\e93b";content:var(--icon-content-mobile_check,"")}.next-icon-mobile_error:before{content:"\e93a";content:var(--icon-content-mobile_error,"")}.next-icon-map_fill:before{content:"\e939";content:var(--icon-content-map_fill,"")}.next-icon-mobile:before{content:"\e938";content:var(--icon-content-mobile,"")}.next-icon-management_fill:before{content:"\e937";content:var(--icon-content-management_fill,"")}.next-icon-inbox:before{content:"\e936";content:var(--icon-content-inbox,"")}.next-icon-gallery_view:before{content:"\e935";content:var(--icon-content-gallery_view,"")}.next-icon-inbox_fill:before{content:"\e934";content:var(--icon-content-inbox_fill,"")}.next-icon-external_link:before{content:"\e933";content:var(--icon-content-external_link,"")}.next-icon-drag1:before{content:"\e932";content:var(--icon-content-drag1,"")}.next-icon-display_arrow_right:before{content:"\e931";content:var(--icon-content-display_arrow_right,"")}.next-icon-display_arrow_left:before{content:"\e930";content:var(--icon-content-display_arrow_left,"")}.next-icon-comment_fill:before{content:"\e92f";content:var(--icon-content-comment_fill,"")}.next-icon-cloud_upload:before{content:"\e92e";content:var(--icon-content-cloud_upload,"")}.next-icon-comment_lines:before{content:"\e92d";content:var(--icon-content-comment_lines,"")}.next-icon-cloud_machine:before{content:"\e92c";content:var(--icon-content-cloud_machine,"")}.next-icon-cloud_download:before{content:"\e92b";content:var(--icon-content-cloud_download,"")}.next-icon-cloud_upload_fill:before{content:"\e92a";content:var(--icon-content-cloud_upload_fill,"")}.next-icon-cloud_machine_fill:before{content:"\e929";content:var(--icon-content-cloud_machine_fill,"")}.next-icon-chart_scatter_plot:before{content:"\e928";content:var(--icon-content-chart_scatter_plot,"")}.next-icon-cloud_download_fill:before{content:"\e927";content:var(--icon-content-cloud_download_fill,"")}.next-icon-box_fill:before{content:"\e926";content:var(--icon-content-box_fill,"")}.next-icon-chart_scatter_plot_fill:before{content:"\e925";content:var(--icon-content-chart_scatter_plot_fill,"")}.next-icon-border_verticle:before{content:"\e923";content:var(--icon-content-border_verticle,"")}.next-icon-chart_area:before{content:"\e922";content:var(--icon-content-chart_area,"")}.next-icon-application_group:before{content:"\e921";content:var(--icon-content-application_group,"")}.next-icon-application:before{content:"\e920";content:var(--icon-content-application,"")}.next-icon-border_verticle_fill:before{content:"\e91f";content:var(--icon-content-border_verticle_fill,"")}.next-icon-accesskey:before{content:"\e91e";content:var(--icon-content-accesskey,"")}.next-icon-align_horizontal_right:before{content:"\e91d";content:var(--icon-content-align_horizontal_right,"")}.next-icon-all_fill:before{content:"\e91c";content:var(--icon-content-all_fill,"")}.next-icon-align_vertical_bottom_fill:before{content:"\e91b";content:var(--icon-content-align_vertical_bottom_fill,"")}.next-icon-align_vertical_top_fill:before{content:"\e91a";content:var(--icon-content-align_vertical_top_fill,"")}.next-icon-align_horizontal_right_fill:before{content:"\e919";content:var(--icon-content-align_horizontal_right_fill,"")}.next-icon-align_vertical_top:before{content:"\e918";content:var(--icon-content-align_vertical_top,"")}.next-icon-align_horizontal_left:before{content:"\e917";content:var(--icon-content-align_horizontal_left,"")}.next-icon-align_horizontal_left_fill:before{content:"\e916";content:var(--icon-content-align_horizontal_left_fill,"")}.next-icon-align_horizontal_center_fill:before{content:"\e915";content:var(--icon-content-align_horizontal_center_fill,"")}.next-icon-Alignverticalbottom:before{content:"\e914";content:var(--icon-content-Alignverticalbottom,"")}.next-icon-align_horizontal_center:before{content:"\e913";content:var(--icon-content-align_horizontal_center,"")}.next-icon-zoom_out:before{content:"\e912";content:var(--icon-content-zoom_out,"")}.next-icon-zoom_in:before{content:"\e911";content:var(--icon-content-zoom_in,"")}.next-icon-wifi:before{content:"\e910";content:var(--icon-content-wifi,"")}.next-icon-view:before{content:"\e90f";content:var(--icon-content-view,"")}.next-icon-view_off:before{content:"\e90e";content:var(--icon-content-view_off,"")}.next-icon-unlock_fill:before{content:"\e90d";content:var(--icon-content-unlock_fill,"")}.next-icon-view_off_fill:before{content:"\e90c";content:var(--icon-content-view_off_fill,"")}.next-icon-time:before{content:"\e90b";content:var(--icon-content-time,"")}.next-icon-time_fill:before{content:"\e90a";content:var(--icon-content-time_fill,"")}.next-icon-setting:before{content:"\e909";content:var(--icon-content-setting,"")}.next-icon-tag_fill:before{content:"\e908";content:var(--icon-content-tag_fill,"")}.next-icon-share_file:before{content:"\e907";content:var(--icon-content-share_file,"")}.next-icon-phonecall:before{content:"\e906";content:var(--icon-content-phonecall,"")}.next-icon-phonecall_off:before{content:"\e905";content:var(--icon-content-phonecall_off,"")}.next-icon-print_fill:before{content:"\e904";content:var(--icon-content-print_fill,"")}.next-icon-renew:before{content:"\e903";content:var(--icon-content-renew,"")}.next-icon-order:before{content:"\e902";content:var(--icon-content-order,"")}.next-icon-order_unread:before{content:"\e901";content:var(--icon-content-order_unread,"")}.next-icon-notification_off_fill:before{content:"\e900";content:var(--icon-content-notification_off_fill,"")}.next-icon-notification_fill:before{content:"\e8ff";content:var(--icon-content-notification_fill,"")}.next-icon-notification_off:before{content:"\e8fe";content:var(--icon-content-notification_off,"")}.next-icon-notification:before{content:"\e8fd";content:var(--icon-content-notification,"")}.next-icon-new:before{content:"\e8fc";content:var(--icon-content-new,"")}.next-icon-message:before{content:"\e8fb";content:var(--icon-content-message,"")}.next-icon-message_unread:before{content:"\e8fa";content:var(--icon-content-message_unread,"")}.next-icon-lock_fill:before{content:"\e8f9";content:var(--icon-content-lock_fill,"")}.next-icon-lightbulb_fill:before{content:"\e8f8";content:var(--icon-content-lightbulb_fill,"")}.next-icon-hourglass:before{content:"\e8f7";content:var(--icon-content-hourglass,"")}.next-icon-hourglass_fill:before{content:"\e8f6";content:var(--icon-content-hourglass_fill,"")}.next-icon-image1:before{content:"\e8f5";content:var(--icon-content-image1,"")}.next-icon-hot:before{content:"\e8f4";content:var(--icon-content-hot,"")}.next-icon-et:before{content:"\e8f3";content:var(--icon-content-et,"")}.next-icon-filter_fill:before{content:"\e8f2";content:var(--icon-content-filter_fill,"")}.next-icon-flag_fill:before{content:"\e8f1";content:var(--icon-content-flag_fill,"")}.next-icon-email_fill:before{content:"\e8f0";content:var(--icon-content-email_fill,"")}.next-icon-discount:before{content:"\e8ef";content:var(--icon-content-discount,"")}.next-icon-delete_fill:before{content:"\e8ee";content:var(--icon-content-delete_fill,"")}.next-icon-customer_sercive:before{content:"\e8ed";content:var(--icon-content-customer_sercive,"")}.next-icon-edit_fill:before{content:"\e8ec";content:var(--icon-content-edit_fill,"")}.next-icon-cart_with:before{content:"\e8eb";content:var(--icon-content-cart_with,"")}.next-icon-cart_fill:before{content:"\e8ea";content:var(--icon-content-cart_fill,"")}.next-icon-credits_fill:before{content:"\e8e9";content:var(--icon-content-credits_fill,"")}.next-icon-cart_empty:before{content:"\e8e8";content:var(--icon-content-cart_empty,"")}.next-icon-calculator_fill:before{content:"\e8e7";content:var(--icon-content-calculator_fill,"")}.next-icon-credits:before{content:"\e8e6";content:var(--icon-content-credits,"")}.next-icon-balance_fill:before{content:"\e8e5";content:var(--icon-content-balance_fill,"")}.next-icon-calculator:before{content:"\e8e4";content:var(--icon-content-calculator,"")}.next-icon-balance1:before{content:"\e8e3";content:var(--icon-content-balance1,"")}.next-icon-alert:before{content:"\e8e2";content:var(--icon-content-alert,"")}.next-icon-plus_fill:before{content:"\e8e1";content:var(--icon-content-plus_fill,"")}.next-icon-stop_fill:before{content:"\e8e0";content:var(--icon-content-stop_fill,"")}.next-icon-stop_outline:before{content:"\e8df";content:var(--icon-content-stop_outline,"")}.next-icon-plus_circle:before{content:"\e8de";content:var(--icon-content-plus_circle,"")}.next-icon-navigation:before{content:"\e8dd";content:var(--icon-content-navigation,"")}.next-icon-sort_circle:before{content:"\e8dc";content:var(--icon-content-sort_circle,"")}.next-icon-play_outline_fill:before{content:"\e8db";content:var(--icon-content-play_outline_fill,"")}.next-icon-play_outline:before{content:"\e8da";content:var(--icon-content-play_outline,"")}.next-icon-power_off:before{content:"\e8d9";content:var(--icon-content-power_off,"")}.next-icon-play_fill:before{content:"\e8d8";content:var(--icon-content-play_fill,"")}.next-icon-minus_fill:before{content:"\e8d7";content:var(--icon-content-minus_fill,"")}.next-icon-minus_circle:before{content:"\e8d6";content:var(--icon-content-minus_circle,"")}.next-icon-enlarge:before{content:"\e8d5";content:var(--icon-content-enlarge,"")}.next-icon-pause_outline:before{content:"\e8d4";content:var(--icon-content-pause_outline,"")}.next-icon-enlarge_fill:before{content:"\e8d3";content:var(--icon-content-enlarge_fill,"")}.next-icon-pause_fill:before{content:"\e8d2";content:var(--icon-content-pause_fill,"")}.next-icon-chevron_sort:before{content:"\e8d1";content:var(--icon-content-chevron_sort,"")}.next-icon-button_sort:before{content:"\e8d0";content:var(--icon-content-button_sort,"")}.next-icon-compress_fill:before{content:"\e8cf";content:var(--icon-content-compress_fill,"")}.next-icon-1688:before{content:"\e8a3";content:var(--icon-content-1688,"")}.next-icon-up_to_top:before{content:"\e876";content:var(--icon-content-up_to_top,"")}.next-icon-forward:before{content:"\e875";content:var(--icon-content-forward,"")}.next-icon-page_last:before{content:"\e874";content:var(--icon-content-page_last,"")}.next-icon-page_first:before{content:"\e872";content:var(--icon-content-page_first,"")}.next-icon-down_to_bottom:before{content:"\e871";content:var(--icon-content-down_to_bottom,"")}.next-icon-expand:before{content:"\e79c";content:var(--icon-content-expand,"")}.next-icon-double_up:before{content:"\e79b";content:var(--icon-content-double_up,"")}.next-icon-double_right:before{content:"\e78b";content:var(--icon-content-double_right,"")}.next-icon-double_left:before{content:"\e789";content:var(--icon-content-double_left,"")}.next-icon-double_down:before{content:"\e788";content:var(--icon-content-double_down,"")}.next-icon-collapse:before{content:"\e787";content:var(--icon-content-collapse,"")}.next-icon-button_right:before{content:"\e786";content:var(--icon-content-button_right,"")}.next-icon-button_up:before{content:"\e785";content:var(--icon-content-button_up,"")}.next-icon-arrow__down:before{content:"\e784";content:var(--icon-content-arrow__down,"")}.next-icon-button_down:before{content:"\e783";content:var(--icon-content-button_down,"")}.next-icon-back:before{content:"\e782";content:var(--icon-content-back,"")}.next-icon-button_left:before{content:"\e781";content:var(--icon-content-button_left,"")}.next-icon-arrow__up:before{content:"\e77e";content:var(--icon-content-arrow__up,"")}.next-icon-down:before{content:"\e620";content:var(--icon-content-down,"")}.next-icon-up:before{content:"\e61b";content:var(--icon-content-up,"")}.next-icon-zhankai:before{content:"\e61a";content:var(--icon-content-zhankai,"")}.next-icon-shouqi:before{content:"\e618";content:var(--icon-content-shouqi,"")}.next-icon-xiexian:before{content:"\e617";content:var(--icon-content-xiexian,"")}.next-icon-xiegang:before{content:"\e615";content:var(--icon-content-xiegang,"")}.next-icon-nail-fixed:before{content:"\e79f";content:var(--icon-content-nail-fixed,"")}.next-icon-wind-edit:before{content:"\e7a0";content:var(--icon-content-wind-edit,"")}.next-icon-dollar:before{content:"\e7a1";content:var(--icon-content-dollar,"")}.next-icon-transanction:before{content:"\e7a2";content:var(--icon-content-transanction,"")}.next-icon-filter-fill:before{content:"\e7a3";content:var(--icon-content-filter-fill,"")}.next-icon-all-fill:before{content:"\e7a4";content:var(--icon-content-all-fill,"")}.next-icon-databaseplus-fill:before{content:"\e7a5";content:var(--icon-content-databaseplus-fill,"")}.next-icon-database-fill:before{content:"\e7a6";content:var(--icon-content-database-fill,"")}.next-icon-commentlines-fill:before{content:"\e7a7";content:var(--icon-content-commentlines-fill,"")}.next-icon-commentdots-fill:before{content:"\e7a8";content:var(--icon-content-commentdots-fill,"")}.next-icon-paperplane-fill:before{content:"\e7a9";content:var(--icon-content-paperplane-fill,"")}.next-icon-eyeslash-fill:before{content:"\e7aa";content:var(--icon-content-eyeslash-fill,"")}.next-icon-eye-fill:before{content:"\e7ab";content:var(--icon-content-eye-fill,"")}.next-icon-lightbulb-fill:before{content:"\e7ac";content:var(--icon-content-lightbulb-fill,"")}.next-icon-flag-fill:before{content:"\e7ad";content:var(--icon-content-flag-fill,"")}.next-icon-tag-fill:before{content:"\e7ae";content:var(--icon-content-tag-fill,"")}.next-icon-position-fill:before{content:"\e7af";content:var(--icon-content-position-fill,"")}.next-icon-location-fill:before{content:"\e7b0";content:var(--icon-content-location-fill,"")}.next-icon-map-fill:before{content:"\e7b1";content:var(--icon-content-map-fill,"")}.next-icon-inboxin-fill:before{content:"\e7b2";content:var(--icon-content-inboxin-fill,"")}.next-icon-box-fill:before{content:"\e7b3";content:var(--icon-content-box-fill,"")}.next-icon-databaseset-fill:before{content:"\e7b4";content:var(--icon-content-databaseset-fill,"")}.next-icon-layergroup-fill:before{content:"\e7b5";content:var(--icon-content-layergroup-fill,"")}.next-icon-cry-fill:before{content:"\e7b6";content:var(--icon-content-cry-fill,"")}.next-icon-smile-fill:before{content:"\e7b7";content:var(--icon-content-smile-fill,"")}.next-icon-unlock-fill:before{content:"\e7b8";content:var(--icon-content-unlock-fill,"")}.next-icon-lock-fill:before{content:"\e7b9";content:var(--icon-content-lock-fill,"")}.next-icon-wind-loading:before{content:"\e61c";content:var(--icon-content-wind-loading,"")}.next-icon-shoppingcart:before{content:"\e968";content:var(--icon-content-shoppingcart,"")}.next-icon-Group:before{content:"\e603";content:var(--icon-content-Group,"")}.next-icon-Group1:before{content:"\e604";content:var(--icon-content-Group1,"")}.next-icon-Xconsole:before{content:"\e609";content:var(--icon-content-Xconsole,"")}.next-icon-Directory-tree:before{content:"\e974";content:var(--icon-content-Directory-tree,"")}.next-icon-calendar1:before{content:"\e689";content:var(--icon-content-calendar1,"")}.next-icon-success1:before{content:"\e68b";content:var(--icon-content-success1,"")}.next-icon-warning1:before{content:"\e68c";content:var(--icon-content-warning1,"")}.next-icon-search1:before{content:"\e68d";content:var(--icon-content-search1,"")}.next-icon-prompt1:before{content:"\e690";content:var(--icon-content-prompt1,"")}.next-icon-sorting1:before{content:"\e692";content:var(--icon-content-sorting1,"")}.next-icon-ascending1:before{content:"\e693";content:var(--icon-content-ascending1,"")}.next-icon-descending1:before{content:"\e694";content:var(--icon-content-descending1,"")}.next-icon-upload1:before{content:"\e6b9";content:var(--icon-content-upload1,"")}.next-icon-success-filling1:before{content:"\e695";content:var(--icon-content-success-filling1,"")}.next-icon-picture1:before{content:"\e696";content:var(--icon-content-picture1,"")}.next-icon-close1:before{content:"\e697";content:var(--icon-content-close1,"")}.next-icon-semi-select1:before{content:"\e698";content:var(--icon-content-semi-select1,"")}.next-icon-loading1:before{content:"\e69b";content:var(--icon-content-loading1,"")}.next-icon-arrow-double-left1:before{content:"\e69c";content:var(--icon-content-arrow-double-left1,"")}.next-icon-arrow-double-right1:before{content:"\e69d";content:var(--icon-content-arrow-double-right1,"")}.next-icon-delete-filling1:before{content:"\e6a2";content:var(--icon-content-delete-filling1,"")}.next-icon-arrow-left1:before{content:"\e6a3";content:var(--icon-content-arrow-left1,"")}.next-icon-accesskeys:before{content:"\e650";content:var(--icon-content-accesskeys,"")}.next-icon-management:before{content:"\e6e2";content:var(--icon-content-management,"")}.next-icon-aliyun-logo:before{content:"\e600";content:var(--icon-content-aliyun-logo,"")}.next-icon-drag:before{content:"\e769";content:var(--icon-content-drag,"")}.next-icon-ellipsis-vertical:before{content:"\e76a";content:var(--icon-content-ellipsis-vertical,"")}.next-icon-gallery-view:before{content:"\e76b";content:var(--icon-content-gallery-view,"")}.next-icon-WIFI:before{content:"\e76c";content:var(--icon-content-WIFI,"")}.next-icon-bug-report:before{content:"\e76d";content:var(--icon-content-bug-report,"")}.next-icon-qrcode:before{content:"\e76e";content:var(--icon-content-qrcode,"")}.next-icon-scan:before{content:"\e76f";content:var(--icon-content-scan,"")}.next-icon-cut:before{content:"\e770";content:var(--icon-content-cut,"")}.next-icon-gift:before{content:"\e771";content:var(--icon-content-gift,"")}.next-icon-link:before{content:"\e772";content:var(--icon-content-link,"")}.next-icon-poweroff:before{content:"\e774";content:var(--icon-content-poweroff,"")}.next-icon-key:before{content:"\e775";content:var(--icon-content-key,"")}.next-icon-safety-certificate:before{content:"\e776";content:var(--icon-content-safety-certificate,"")}.next-icon-supervise:before{content:"\e777";content:var(--icon-content-supervise,"")}.next-icon-tag-subscipt:before{content:"\e78a";content:var(--icon-content-tag-subscipt,"")}.next-icon-chart-pie-alt:before{content:"\e78c";content:var(--icon-content-chart-pie-alt,"")}.next-icon-chart-relation:before{content:"\e78d";content:var(--icon-content-chart-relation,"")}.next-icon-chart-scatter-plot:before{content:"\e78e";content:var(--icon-content-chart-scatter-plot,"")}.next-icon-chart-area:before{content:"\e78f";content:var(--icon-content-chart-area,"")}.next-icon-chart-line:before{content:"\e790";content:var(--icon-content-chart-line,"")}.next-icon-display-code:before{content:"\e792";content:var(--icon-content-display-code,"")}.next-icon-display-arrow-right:before{content:"\e793";content:var(--icon-content-display-arrow-right,"")}.next-icon-display-arrow-left:before{content:"\e794";content:var(--icon-content-display-arrow-left,"")}.next-icon-laptop-error:before{content:"\e795";content:var(--icon-content-laptop-error,"")}.next-icon-laptop-check:before{content:"\e796";content:var(--icon-content-laptop-check,"")}.next-icon-laptop:before{content:"\e797";content:var(--icon-content-laptop,"")}.next-icon-mobile-error:before{content:"\e798";content:var(--icon-content-mobile-error,"")}.next-icon-mobile-check:before{content:"\e799";content:var(--icon-content-mobile-check,"")}.next-icon-mobile-alt:before{content:"\e79a";content:var(--icon-content-mobile-alt,"")}.next-icon-aliwangwang:before{content:"\e79d";content:var(--icon-content-aliwangwang,"")}.next-icon-nail:before{content:"\e79e";content:var(--icon-content-nail,"")}.next-icon-sort:before{content:"\e842";content:var(--icon-content-sort,"")}.next-icon-sort-down:before{content:"\e843";content:var(--icon-content-sort-down,"")}.next-icon-sort-up:before{content:"\e844";content:var(--icon-content-sort-up,"")}.next-icon-caret-right:before{content:"\e845";content:var(--icon-content-caret-right,"")}.next-icon-caret-left:before{content:"\e846";content:var(--icon-content-caret-left,"")}.next-icon-arrows-v:before{content:"\e847";content:var(--icon-content-arrows-v,"")}.next-icon-angle-double-down:before{content:"\e848";content:var(--icon-content-angle-double-down,"")}.next-icon-angle-double-up:before{content:"\e849";content:var(--icon-content-angle-double-up,"")}.next-icon-angle-double-right:before{content:"\e84a";content:var(--icon-content-angle-double-right,"")}.next-icon-angle-double-left:before{content:"\e84b";content:var(--icon-content-angle-double-left,"")}.next-icon-angle-down:before{content:"\e84c";content:var(--icon-content-angle-down,"")}.next-icon-angle-up:before{content:"\e84d";content:var(--icon-content-angle-up,"")}.next-icon-angle-right:before{content:"\e84e";content:var(--icon-content-angle-right,"")}.next-icon-angle-left:before{content:"\e84f";content:var(--icon-content-angle-left,"")}.next-icon-paperclip:before{content:"\e850";content:var(--icon-content-paperclip,"")}.next-icon-connection:before{content:"\e851";content:var(--icon-content-connection,"")}.next-icon-training:before{content:"\e853";content:var(--icon-content-training,"")}.next-icon-process:before{content:"\e854";content:var(--icon-content-process,"")}.next-icon-news:before{content:"\e855";content:var(--icon-content-news,"")}.next-icon-save:before{content:"\e856";content:var(--icon-content-save,"")}.next-icon-print:before{content:"\e857";content:var(--icon-content-print,"")}.next-icon-new-releases:before{content:"\e858";content:var(--icon-content-new-releases,"")}.next-icon-release:before{content:"\e85a";content:var(--icon-content-release,"")}.next-icon-wind-warning:before{content:"\e85b";content:var(--icon-content-wind-warning,"")}.next-icon-backspace:before{content:"\e85c";content:var(--icon-content-backspace,"")}.next-icon-gem:before{content:"\e85d";content:var(--icon-content-gem,"")}.next-icon-integral:before{content:"\e85e";content:var(--icon-content-integral,"")}.next-icon-star-circle1:before{content:"\e85f";content:var(--icon-content-star-circle1,"")}.next-icon-user-circle:before{content:"\e860";content:var(--icon-content-user-circle,"")}.next-icon-cloud-machine-fill:before{content:"\e861";content:var(--icon-content-cloud-machine-fill,"")}.next-icon-cloud-machine:before{content:"\e862";content:var(--icon-content-cloud-machine,"")}.next-icon-terminal-fill:before{content:"\e863";content:var(--icon-content-terminal-fill,"")}.next-icon-terminal:before{content:"\e864";content:var(--icon-content-terminal,"")}.next-icon-shopping-cart:before{content:"\e865";content:var(--icon-content-shopping-cart,"")}.next-icon-folder-open:before{content:"\e866";content:var(--icon-content-folder-open,"")}.next-icon-resource:before{content:"\e867";content:var(--icon-content-resource,"")}.next-icon-rank:before{content:"\e86a";content:var(--icon-content-rank,"")}.next-icon-sync-alt:before{content:"\e86b";content:var(--icon-content-sync-alt,"")}.next-icon-compass:before{content:"\e86c";content:var(--icon-content-compass,"")}.next-icon-arrow-alt-from-top:before{content:"\e86d";content:var(--icon-content-arrow-alt-from-top,"")}.next-icon-arrow-alt-from-bottom:before{content:"\e86e";content:var(--icon-content-arrow-alt-from-bottom,"")}.next-icon-menu:before{content:"\e86f";content:var(--icon-content-menu,"")}.next-icon-icon-drag:before{content:"\e870";content:var(--icon-content-icon-drag,"")}.next-icon-share:before{content:"\e873";content:var(--icon-content-share,"")}.next-icon-arrow-sortdown-smal:before{content:"\e877";content:var(--icon-content-arrow-sortdown-smal,"")}.next-icon-minus-square-fill:before{content:"\e878";content:var(--icon-content-minus-square-fill,"")}.next-icon-plus-square-fill:before{content:"\e879";content:var(--icon-content-plus-square-fill,"")}.next-icon-minus-square:before{content:"\e87a";content:var(--icon-content-minus-square,"")}.next-icon-plus-square:before{content:"\e87b";content:var(--icon-content-plus-square,"")}.next-icon-stepmode:before{content:"\e87d";content:var(--icon-content-stepmode,"")}.next-icon-scrollingmode:before{content:"\e87e";content:var(--icon-content-scrollingmode,"")}.next-icon-waiting-fill:before{content:"\e882";content:var(--icon-content-waiting-fill,"")}.next-icon-waiting:before{content:"\e883";content:var(--icon-content-waiting,"")}.next-icon-right-arrow-rect:before{content:"\e884";content:var(--icon-content-right-arrow-rect,"")}.next-icon-left-arrow-rect:before{content:"\e885";content:var(--icon-content-left-arrow-rect,"")}.next-icon-bell:before{content:"\e887";content:var(--icon-content-bell,"")}.next-icon-structured-data:before{content:"\e888";content:var(--icon-content-structured-data,"")}.next-icon-vector:before{content:"\e889";content:var(--icon-content-vector,"")}.next-icon-home:before{content:"\e88b";content:var(--icon-content-home,"")}.next-icon-monitoring:before{content:"\e88e";content:var(--icon-content-monitoring,"")}.next-icon-diagnose:before{content:"\e88f";content:var(--icon-content-diagnose,"")}.next-icon-add-subset:before{content:"\e890";content:var(--icon-content-add-subset,"")}.next-icon-cry1:before{content:"\e63c";content:var(--icon-content-cry1,"")}.next-icon-email1:before{content:"\e663";content:var(--icon-content-email1,"")}.next-icon-help1:before{content:"\e63f";content:var(--icon-content-help1,"")}.next-icon-refresh1:before{content:"\e640";content:var(--icon-content-refresh1,"")}.next-icon-set1:before{content:"\e641";content:var(--icon-content-set1,"")}.next-icon-account1:before{content:"\e664";content:var(--icon-content-account1,"")}.next-icon-atm1:before{content:"\e643";content:var(--icon-content-atm1,"")}.next-icon-clock1:before{content:"\e644";content:var(--icon-content-clock1,"")}.next-icon-attachment1:before{content:"\e645";content:var(--icon-content-attachment1,"")}.next-icon-filter1:before{content:"\e657";content:var(--icon-content-filter1,"")}.next-icon-download1:before{content:"\e668";content:var(--icon-content-download1,"")}.next-icon-ellipsis1:before{content:"\e674";content:var(--icon-content-ellipsis1,"")}.next-icon-favorites-filling1:before{content:"\e676";content:var(--icon-content-favorites-filling1,"")}.next-icon-smile1:before{content:"\e67b";content:var(--icon-content-smile1,"")}.next-icon-arrow-right1:before{content:"\e67e";content:var(--icon-content-arrow-right1,"")}.next-icon-arrow-down1:before{content:"\e680";content:var(--icon-content-arrow-down1,"")}.next-icon-arrow-up1:before{content:"\e681";content:var(--icon-content-arrow-up1,"")}.next-icon-add1:before{content:"\e682";content:var(--icon-content-add1,"")}.next-icon-minus1:before{content:"\e684";content:var(--icon-content-minus1,"")}.next-icon-edit1:before{content:"\e685";content:var(--icon-content-edit1,"")}.next-icon-error1:before{content:"\e686";content:var(--icon-content-error1,"")}.next-icon-select1:before{content:"\e687";content:var(--icon-content-select1,"")}.next-icon-ashbin1:before{content:"\e688";content:var(--icon-content-ashbin1,"")}.next-icon-clouddownload-fill:before{content:"\e7d9";content:var(--icon-content-clouddownload-fill,"")}.next-icon-cloudupload-fill:before{content:"\e7da";content:var(--icon-content-cloudupload-fill,"")}.next-icon-exchange-fill:before{content:"\e7db";content:var(--icon-content-exchange-fill,"")}.next-icon-info-circle-fill:before{content:"\e7dc";content:var(--icon-content-info-circle-fill,"")}.next-icon-question-circle-fill:before{content:"\e7dd";content:var(--icon-content-question-circle-fill,"")}.next-icon-exclamationcircle-f:before{content:"\e7de";content:var(--icon-content-exclamationcircle-f,"")}.next-icon-minus-circle-fill:before{content:"\e7df";content:var(--icon-content-minus-circle-fill,"")}.next-icon-plus-circle-fill:before{content:"\e7e0";content:var(--icon-content-plus-circle-fill,"")}.next-icon-times-circle-fill:before{content:"\e7e1";content:var(--icon-content-times-circle-fill,"")}.next-icon-check-circle-fill:before{content:"\e7e2";content:var(--icon-content-check-circle-fill,"")}.next-icon-compressalt-fill:before{content:"\e7e3";content:var(--icon-content-compressalt-fill,"")}.next-icon-expandalt-fill:before{content:"\e7e4";content:var(--icon-content-expandalt-fill,"")}.next-icon-wind-filter:before{content:"\e7e5";content:var(--icon-content-wind-filter,"")}.next-icon-all:before{content:"\e7e6";content:var(--icon-content-all,"")}.next-icon-database-plus:before{content:"\e7e7";content:var(--icon-content-database-plus,"")}.next-icon-database:before{content:"\e7e8";content:var(--icon-content-database,"")}.next-icon-comment-lines:before{content:"\e7e9";content:var(--icon-content-comment-lines,"")}.next-icon-comment-dots:before{content:"\e7ea";content:var(--icon-content-comment-dots,"")}.next-icon-paper-plane:before{content:"\e7eb";content:var(--icon-content-paper-plane,"")}.next-icon-eye-slash:before{content:"\e7ec";content:var(--icon-content-eye-slash,"")}.next-icon-lightbulb:before{content:"\e7ef";content:var(--icon-content-lightbulb,"")}.next-icon-flag:before{content:"\e7f0";content:var(--icon-content-flag,"")}.next-icon-tag:before{content:"\e7f1";content:var(--icon-content-tag,"")}.next-icon-position:before{content:"\e7f2";content:var(--icon-content-position,"")}.next-icon-location:before{content:"\e7f3";content:var(--icon-content-location,"")}.next-icon-map:before{content:"\e7f4";content:var(--icon-content-map,"")}.next-icon-inbox-in:before{content:"\e7f5";content:var(--icon-content-inbox-in,"")}.next-icon-box:before{content:"\e7f6";content:var(--icon-content-box,"")}.next-icon-database-set:before{content:"\e7f7";content:var(--icon-content-database-set,"")}.next-icon-layer-group:before{content:"\e7f8";content:var(--icon-content-layer-group,"")}.next-icon-wind-cry:before{content:"\e7f9";content:var(--icon-content-wind-cry,"")}.next-icon-wind-smile:before{content:"\e7fa";content:var(--icon-content-wind-smile,"")}.next-icon-align-right:before{content:"\e7fd";content:var(--icon-content-align-right,"")}.next-icon-align-left:before{content:"\e7fe";content:var(--icon-content-align-left,"")}.next-icon-border-bottom:before{content:"\e7ff";content:var(--icon-content-border-bottom,"")}.next-icon-border-top:before{content:"\e800";content:var(--icon-content-border-top,"")}.next-icon-align-center:before{content:"\e801";content:var(--icon-content-align-center,"")}.next-icon-border-verticle:before{content:"\e802";content:var(--icon-content-border-verticle,"")}.next-icon-pic-center:before{content:"\e803";content:var(--icon-content-pic-center,"")}.next-icon-pic-side:before{content:"\e804";content:var(--icon-content-pic-side,"")}.next-icon-folder-plus:before{content:"\e805";content:var(--icon-content-folder-plus,"")}.next-icon-folder:before{content:"\e806";content:var(--icon-content-folder,"")}.next-icon-file-SQL1:before{content:"\e807";content:var(--icon-content-file-SQL1,"")}.next-icon-file-plus:before{content:"\e808";content:var(--icon-content-file-plus,"")}.next-icon-file:before{content:"\e809";content:var(--icon-content-file,"")}.next-icon-headset:before{content:"\e80b";content:var(--icon-content-headset,"")}.next-icon-phone:before{content:"\e80c";content:var(--icon-content-phone,"")}.next-icon-pausecircle:before{content:"\e80d";content:var(--icon-content-pausecircle,"")}.next-icon-stopcircle:before{content:"\e80e";content:var(--icon-content-stopcircle,"")}.next-icon-playcircle:before{content:"\e80f";content:var(--icon-content-playcircle,"")}.next-icon-delete:before{content:"\e810";content:var(--icon-content-delete,"")}.next-icon-wind-picture:before{content:"\e811";content:var(--icon-content-wind-picture,"")}.next-icon-mail:before{content:"\e812";content:var(--icon-content-mail,"")}.next-icon-like:before{content:"\e813";content:var(--icon-content-like,"")}.next-icon-collection:before{content:"\e814";content:var(--icon-content-collection,"")}.next-icon-user-group:before{content:"\e815";content:var(--icon-content-user-group,"")}.next-icon-account-plus:before{content:"\e816";content:var(--icon-content-account-plus,"")}.next-icon-wind-account:before{content:"\e817";content:var(--icon-content-wind-account,"")}.next-icon-cog:before{content:"\e818";content:var(--icon-content-cog,"")}.next-icon-wind-clock:before{content:"\e819";content:var(--icon-content-wind-clock,"")}.next-icon-calendar-alt:before{content:"\e81a";content:var(--icon-content-calendar-alt,"")}.next-icon-clouddownload:before{content:"\e81b";content:var(--icon-content-clouddownload,"")}.next-icon-cloudupload:before{content:"\e81c";content:var(--icon-content-cloudupload,"")}.next-icon-exchange:before{content:"\e81d";content:var(--icon-content-exchange,"")}.next-icon-info-circle:before{content:"\e81e";content:var(--icon-content-info-circle,"")}.next-icon-question-circle:before{content:"\e81f";content:var(--icon-content-question-circle,"")}.next-icon-exclamation-circle:before{content:"\e820";content:var(--icon-content-exclamation-circle,"")}.next-icon-minus-circle:before{content:"\e821";content:var(--icon-content-minus-circle,"")}.next-icon-plus-circle:before{content:"\e822";content:var(--icon-content-plus-circle,"")}.next-icon-times-circle:before{content:"\e823";content:var(--icon-content-times-circle,"")}.next-icon-check-circle:before{content:"\e824";content:var(--icon-content-check-circle,"")}.next-icon-compress-alt:before{content:"\e825";content:var(--icon-content-compress-alt,"")}.next-icon-expand-alt:before{content:"\e826";content:var(--icon-content-expand-alt,"")}.next-icon-ban:before{content:"\e827";content:var(--icon-content-ban,"")}.next-icon-wind-minus:before{content:"\e828";content:var(--icon-content-wind-minus,"")}.next-icon-plus:before{content:"\e829";content:var(--icon-content-plus,"")}.next-icon-times:before{content:"\e82a";content:var(--icon-content-times,"")}.next-icon-check:before{content:"\e82b";content:var(--icon-content-check,"")}.next-icon-search-minus:before{content:"\e82c";content:var(--icon-content-search-minus,"")}.next-icon-search-plus:before{content:"\e82d";content:var(--icon-content-search-plus,"")}.next-icon-wind-search:before{content:"\e82e";content:var(--icon-content-wind-search,"")}.next-icon-reply:before{content:"\e82f";content:var(--icon-content-reply,"")}.next-icon-undo:before{content:"\e830";content:var(--icon-content-undo,"")}.next-icon-redo:before{content:"\e831";content:var(--icon-content-redo,"")}.next-icon-external-link:before{content:"\e832";content:var(--icon-content-external-link,"")}.next-icon-arrows-alt:before{content:"\e833";content:var(--icon-content-arrows-alt,"")}.next-icon-indent:before{content:"\e834";content:var(--icon-content-indent,"")}.next-icon-outdent:before{content:"\e835";content:var(--icon-content-outdent,"")}.next-icon-wind-sorting:before{content:"\e836";content:var(--icon-content-wind-sorting,"")}.next-icon-wind-switch:before{content:"\e837";content:var(--icon-content-wind-switch,"")}.next-icon-wind-ascending:before{content:"\e838";content:var(--icon-content-wind-ascending,"")}.next-icon-wind-descending:before{content:"\e839";content:var(--icon-content-wind-descending,"")}.next-icon-wind-download:before{content:"\e83a";content:var(--icon-content-wind-download,"")}.next-icon-wind-upload:before{content:"\e83b";content:var(--icon-content-wind-upload,"")}.next-icon-arrow-to-bottom:before{content:"\e83c";content:var(--icon-content-arrow-to-bottom,"")}.next-icon-arrow-to-top:before{content:"\e83d";content:var(--icon-content-arrow-to-top,"")}.next-icon-long-arrow-down:before{content:"\e83e";content:var(--icon-content-long-arrow-down,"")}.next-icon-long-arrow-up:before{content:"\e83f";content:var(--icon-content-long-arrow-up,"")}.next-icon-wind-arrow-right:before{content:"\e840";content:var(--icon-content-wind-arrow-right,"")}.next-icon-wind-arrow-left:before{content:"\e841";content:var(--icon-content-wind-arrow-left,"")}.next-icon-huaban1341:before{content:"\e74a";content:var(--icon-content-huaban1341,"")}.next-icon-huaban161:before{content:"\e749";content:var(--icon-content-huaban161,"")}.next-icon-huaban31:before{content:"\e748";content:var(--icon-content-huaban31,"")}.next-icon-huaban32:before{content:"\e747";content:var(--icon-content-huaban32,"")}.next-icon-huaban1fuben59:before{content:"\e746";content:var(--icon-content-huaban1fuben59,"")}.next-icon-huaban1fuben63:before{content:"\e745";content:var(--icon-content-huaban1fuben63,"")}.next-icon-rili:before{content:"\e744";content:var(--icon-content-rili,"")}.next-icon-dengdai:before{content:"\e743";content:var(--icon-content-dengdai,"")}.next-icon-dayin1:before{content:"\e742";content:var(--icon-content-dayin1,"")}.next-icon-jian:before{content:"\e741";content:var(--icon-content-jian,"")}.next-icon-jia1:before{content:"\e740";content:var(--icon-content-jia1,"")}.next-icon-huixingzhen:before{content:"\e73f";content:var(--icon-content-huixingzhen,"")}.next-icon-gundongmoshi:before{content:"\e73e";content:var(--icon-content-gundongmoshi,"")}.next-icon-re:before{content:"\e73d";content:var(--icon-content-re,"")}.next-icon-xin:before{content:"\e73c";content:var(--icon-content-xin,"")}.next-icon-huaban114:before{content:"\e73b";content:var(--icon-content-huaban114,"")}.next-icon-huaban69:before{content:"\e73a";content:var(--icon-content-huaban69,"")}.next-icon-huaban8fuben6:before{content:"\e739";content:var(--icon-content-huaban8fuben6,"")}.next-icon-huaban1281:before{content:"\e738";content:var(--icon-content-huaban1281,"")}.next-icon-huaban8fuben9:before{content:"\e737";content:var(--icon-content-huaban8fuben9,"")}.next-icon-huaban126:before{content:"\e736";content:var(--icon-content-huaban126,"")}.next-icon-huaban2fuben:before{content:"\e735";content:var(--icon-content-huaban2fuben,"")}.next-icon-huaban1221:before{content:"\e734";content:var(--icon-content-huaban1221,"")}.next-icon-huaban2fuben5:before{content:"\e733";content:var(--icon-content-huaban2fuben5,"")}.next-icon-huaban16:before{content:"\e732";content:var(--icon-content-huaban16,"")}.next-icon-huaban124:before{content:"\e731";content:var(--icon-content-huaban124,"")}.next-icon-huaban103:before{content:"\e730";content:var(--icon-content-huaban103,"")}.next-icon-huaban8fuben12:before{content:"\e72f";content:var(--icon-content-huaban8fuben12,"")}.next-icon-huaban1231:before{content:"\e72e";content:var(--icon-content-huaban1231,"")}.next-icon-huaban2fuben4:before{content:"\e72d";content:var(--icon-content-huaban2fuben4,"")}.next-icon-huaban125:before{content:"\e72c";content:var(--icon-content-huaban125,"")}.next-icon-huaban17:before{content:"\e72b";content:var(--icon-content-huaban17,"")}.next-icon-huaban1042:before{content:"\e72a";content:var(--icon-content-huaban1042,"")}.next-icon-huaban98:before{content:"\e729";content:var(--icon-content-huaban98,"")}.next-icon-huaban21:before{content:"\e728";content:var(--icon-content-huaban21,"")}.next-icon-huaban921:before{content:"\e727";content:var(--icon-content-huaban921,"")}.next-icon-huaban27:before{content:"\e726";content:var(--icon-content-huaban27,"")}.next-icon-huaban25:before{content:"\e725";content:var(--icon-content-huaban25,"")}.next-icon-huaban24:before{content:"\e724";content:var(--icon-content-huaban24,"")}.next-icon-huaban26:before{content:"\e723";content:var(--icon-content-huaban26,"")}.next-icon-huaban23:before{content:"\e722";content:var(--icon-content-huaban23,"")}.next-icon-huaban22:before{content:"\e721";content:var(--icon-content-huaban22,"")}.next-icon-huaban13:before{content:"\e720";content:var(--icon-content-huaban13,"")}.next-icon-huaban28:before{content:"\e71f";content:var(--icon-content-huaban28,"")}.next-icon-huaban121:before{content:"\e71e";content:var(--icon-content-huaban121,"")}.next-icon-huaban11:before{content:"\e71d";content:var(--icon-content-huaban11,"")}.next-icon-huaban10:before{content:"\e71c";content:var(--icon-content-huaban10,"")}.next-icon-huaban33:before{content:"\e71b";content:var(--icon-content-huaban33,"")}.next-icon-huaban35:before{content:"\e71a";content:var(--icon-content-huaban35,"")}.next-icon-huaban34:before{content:"\e719";content:var(--icon-content-huaban34,"")}.next-icon-huaban831:before{content:"\e718";content:var(--icon-content-huaban831,"")}.next-icon-huaban1071:before{content:"\e717";content:var(--icon-content-huaban1071,"")}.next-icon-huaban45:before{content:"\e716";content:var(--icon-content-huaban45,"")}.next-icon-dollar1:before{content:"\e715";content:var(--icon-content-dollar1,"")}.next-icon-huaban801:before{content:"\e714";content:var(--icon-content-huaban801,"")}.next-icon-huaban7:before{content:"\e713";content:var(--icon-content-huaban7,"")}.next-icon-inboxin-fill1:before{content:"\e712";content:var(--icon-content-inboxin-fill1,"")}.next-icon-huaban123:before{content:"\e711";content:var(--icon-content-huaban123,"")}.next-icon-box-fill1:before{content:"\e710";content:var(--icon-content-box-fill1,"")}.next-icon-huaban122:before{content:"\e70f";content:var(--icon-content-huaban122,"")}.next-icon-tag-fill1:before{content:"\e70e";content:var(--icon-content-tag-fill1,"")}.next-icon-tag-:before{content:"\e70d";content:var(--icon-content-tag-,"")}.next-icon-transanction1:before{content:"\e70c";content:var(--icon-content-transanction1,"")}.next-icon-huaban63:before{content:"\e70b";content:var(--icon-content-huaban63,"")}.next-icon-huaban64:before{content:"\e70a";content:var(--icon-content-huaban64,"")}.next-icon-huaban64-copy:before{content:"\e709";content:var(--icon-content-huaban64-copy,"")}.next-icon-huaban97:before{content:"\e6ee";content:var(--icon-content-huaban97,"")}.next-icon-huaban94:before{content:"\e6ed";content:var(--icon-content-huaban94,"")}.next-icon-huaban1041:before{content:"\e6ec";content:var(--icon-content-huaban1041,"")}.next-icon-huaban9:before{content:"\e6eb";content:var(--icon-content-huaban9,"")}.next-icon-huaban3:before{content:"\e6ea";content:var(--icon-content-huaban3,"")}.next-icon-huaban4:before{content:"\e6e9";content:var(--icon-content-huaban4,"")}.next-icon-huaban811:before{content:"\e6e8";content:var(--icon-content-huaban811,"")}.next-icon-huaban79:before{content:"\e6e7";content:var(--icon-content-huaban79,"")}.next-icon-jia:before{content:"\e6e6";content:var(--icon-content-jia,"")}.next-icon-huaban1131:before{content:"\e6e5";content:var(--icon-content-huaban1131,"")}.next-icon-huaban51:before{content:"\e6e4";content:var(--icon-content-huaban51,"")}.next-icon-huaban6:before{content:"\e6e3";content:var(--icon-content-huaban6,"")}.next-icon-huaban15:before{content:"\e6e1";content:var(--icon-content-huaban15,"")}.next-icon-huaban1111:before{content:"\e6e0";content:var(--icon-content-huaban1111,"")}.next-icon-huaban1081:before{content:"\e6df";content:var(--icon-content-huaban1081,"")}.next-icon-huaban1091:before{content:"\e6de";content:var(--icon-content-huaban1091,"")}.next-icon-huaban1121:before{content:"\e6dd";content:var(--icon-content-huaban1121,"")}.next-icon-huaban93:before{content:"\e6dc";content:var(--icon-content-huaban93,"")}.next-icon-huaban810:before{content:"\e6db";content:var(--icon-content-huaban810,"")}.next-icon-huaban99:before{content:"\e6da";content:var(--icon-content-huaban99,"")}.next-icon-huaban1051:before{content:"\e6d9";content:var(--icon-content-huaban1051,"")}.next-icon-huaban101:before{content:"\e6d8";content:var(--icon-content-huaban101,"")}.next-icon-huaban102:before{content:"\e6d7";content:var(--icon-content-huaban102,"")}.next-icon-huaban821:before{content:"\e6d6";content:var(--icon-content-huaban821,"")}.next-icon-huaban861:before{content:"\e6d5";content:var(--icon-content-huaban861,"")}.next-icon-huaban14:before{content:"\e6d4";content:var(--icon-content-huaban14,"")}.next-icon-huaban851:before{content:"\e6d3";content:var(--icon-content-huaban851,"")}.next-icon-huaban19:before{content:"\e6d2";content:var(--icon-content-huaban19,"")}.next-icon-alignright-fill:before{content:"\e7ba";content:var(--icon-content-alignright-fill,"")}.next-icon-alignleft-fill:before{content:"\e7bb";content:var(--icon-content-alignleft-fill,"")}.next-icon-borderbottom-fill:before{content:"\e7bc";content:var(--icon-content-borderbottom-fill,"")}.next-icon-bordertop-fill:before{content:"\e7bd";content:var(--icon-content-bordertop-fill,"")}.next-icon-aligncenter-fill:before{content:"\e7be";content:var(--icon-content-aligncenter-fill,"")}.next-icon-borderverticle-fill:before{content:"\e7bf";content:var(--icon-content-borderverticle-fill,"")}.next-icon-piccenter-fill:before{content:"\e7c0";content:var(--icon-content-piccenter-fill,"")}.next-icon-picside-fill:before{content:"\e7c1";content:var(--icon-content-picside-fill,"")}.next-icon-folderopen-fill:before{content:"\e7c2";content:var(--icon-content-folderopen-fill,"")}.next-icon-folderplus-fill:before{content:"\e7c3";content:var(--icon-content-folderplus-fill,"")}.next-icon-folder-fill:before{content:"\e7c4";content:var(--icon-content-folder-fill,"")}.next-icon-file-SQL:before{content:"\e7c5";content:var(--icon-content-file-SQL,"")}.next-icon-fileplus-fill:before{content:"\e7c6";content:var(--icon-content-fileplus-fill,"")}.next-icon-file-fill:before{content:"\e7c7";content:var(--icon-content-file-fill,"")}.next-icon-copy-fill:before{content:"\e7c8";content:var(--icon-content-copy-fill,"")}.next-icon-headset-fill:before{content:"\e7c9";content:var(--icon-content-headset-fill,"")}.next-icon-phone-fill:before{content:"\e7ca";content:var(--icon-content-phone-fill,"")}.next-icon-pausecircle-fill:before{content:"\e7cb";content:var(--icon-content-pausecircle-fill,"")}.next-icon-stopcircle-fill:before{content:"\e7cc";content:var(--icon-content-stopcircle-fill,"")}.next-icon-playcircle-fill:before{content:"\e7cd";content:var(--icon-content-playcircle-fill,"")}.next-icon-delete-fill:before{content:"\e7ce";content:var(--icon-content-delete-fill,"")}.next-icon-picture-fill:before{content:"\e7cf";content:var(--icon-content-picture-fill,"")}.next-icon-mail-fill:before{content:"\e7d0";content:var(--icon-content-mail-fill,"")}.next-icon-heart-fill:before{content:"\e7d1";content:var(--icon-content-heart-fill,"")}.next-icon-collection-fill:before{content:"\e7d2";content:var(--icon-content-collection-fill,"")}.next-icon-user-group-fill:before{content:"\e7d3";content:var(--icon-content-user-group-fill,"")}.next-icon-userplus-fill:before{content:"\e7d4";content:var(--icon-content-userplus-fill,"")}.next-icon-user-fill:before{content:"\e7d5";content:var(--icon-content-user-fill,"")}.next-icon-cog-fill:before{content:"\e7d6";content:var(--icon-content-cog-fill,"")}.next-icon-clock-fill:before{content:"\e7d7";content:var(--icon-content-clock-fill,"")}.next-icon-calendaralt-fill:before{content:"\e7d8";content:var(--icon-content-calendaralt-fill,"")}.next-icon-huaban891:before{content:"\e6d1";content:var(--icon-content-huaban891,"")}.next-icon-huaban20:before{content:"\e6d0";content:var(--icon-content-huaban20,"")}.next-icon-huaban901:before{content:"\e6cf";content:var(--icon-content-huaban901,"")}.next-icon-huaban18:before{content:"\e6ce";content:var(--icon-content-huaban18,"")}.next-icon-huaban871:before{content:"\e6cd";content:var(--icon-content-huaban871,"")}.next-icon-huaban881:before{content:"\e6cc";content:var(--icon-content-huaban881,"")}.next-icon-huaban841:before{content:"\e6cb";content:var(--icon-content-huaban841,"")}.next-icon-huaban91:before{content:"\e6ca";content:var(--icon-content-huaban91,"")}.next-icon-huaban90:before{content:"\e6c9";content:var(--icon-content-huaban90,"")}.next-icon-huaban92:before{content:"\e6c8";content:var(--icon-content-huaban92,"")}.next-icon-huaban86:before{content:"\e6c7";content:var(--icon-content-huaban86,"")}.next-icon-huaban85:before{content:"\e6c6";content:var(--icon-content-huaban85,"")}.next-icon-huaban88:before{content:"\e6c5";content:var(--icon-content-huaban88,"")}.next-icon-huaban89:before{content:"\e6c4";content:var(--icon-content-huaban89,"")}.next-icon-huaban87:before{content:"\e6c3";content:var(--icon-content-huaban87,"")}.next-icon-huaban68:before{content:"\e6c2";content:var(--icon-content-huaban68,"")}.next-icon-huaban67:before{content:"\e6c1";content:var(--icon-content-huaban67,"")}.next-icon-huaban541:before{content:"\e6c0";content:var(--icon-content-huaban541,"")}.next-icon-huaban83:before{content:"\e6bf";content:var(--icon-content-huaban83,"")}.next-icon-huaban80:before{content:"\e6be";content:var(--icon-content-huaban80,"")}.next-icon-huaban81:before{content:"\e6bd";content:var(--icon-content-huaban81,"")}.next-icon-huaban82:before{content:"\e6bc";content:var(--icon-content-huaban82,"")}.next-icon-huaban118:before{content:"\e6bb";content:var(--icon-content-huaban118,"")}.next-icon-huaban961:before{content:"\e6ba";content:var(--icon-content-huaban961,"")}.next-icon-huaban120:before{content:"\e6b8";content:var(--icon-content-huaban120,"")}.next-icon-huaban119:before{content:"\e6b7";content:var(--icon-content-huaban119,"")}.next-icon-huaban2fuben2:before{content:"\e6b6";content:var(--icon-content-huaban2fuben2,"")}.next-icon-huaban12fuben2:before{content:"\e6b5";content:var(--icon-content-huaban12fuben2,"")}.next-icon-huaban8:before{content:"\e6b4";content:var(--icon-content-huaban8,"")}.next-icon-huaban84:before{content:"\e6b2";content:var(--icon-content-huaban84,"")}.next-icon-huaban8fuben3:before{content:"\e6b1";content:var(--icon-content-huaban8fuben3,"")}.next-icon-huaban8fuben4:before{content:"\e6b0";content:var(--icon-content-huaban8fuben4,"")}.next-icon-huaban8fuben7:before{content:"\e6af";content:var(--icon-content-huaban8fuben7,"")}.next-icon-huaban96:before{content:"\e6ae";content:var(--icon-content-huaban96,"")}.next-icon-huaban61:before{content:"\e6ad";content:var(--icon-content-huaban61,"")}.next-icon-huaban62:before{content:"\e6ac";content:var(--icon-content-huaban62,"")}.next-icon-huaban12fuben4:before{content:"\e6ab";content:var(--icon-content-huaban12fuben4,"")}.next-icon-huaban5fuben:before{content:"\e6aa";content:var(--icon-content-huaban5fuben,"")}.next-icon-huaban5:before{content:"\e6a9";content:var(--icon-content-huaban5,"")}.next-icon-huaban12fuben6:before{content:"\e6a8";content:var(--icon-content-huaban12fuben6,"")}.next-icon-huaban12:before{content:"\e6a7";content:var(--icon-content-huaban12,"")}.next-icon-huaban8fuben10:before{content:"\e6a6";content:var(--icon-content-huaban8fuben10,"")}.next-icon-huaban8fuben8:before{content:"\e6a5";content:var(--icon-content-huaban8fuben8,"")}.next-icon-huaban1161:before{content:"\e6a4";content:var(--icon-content-huaban1161,"")}.next-icon-huaban1171:before{content:"\e6a1";content:var(--icon-content-huaban1171,"")}.next-icon-huaban110:before{content:"\e6a0";content:var(--icon-content-huaban110,"")}.next-icon-huaban112:before{content:"\e69f";content:var(--icon-content-huaban112,"")}.next-icon-huaban111:before{content:"\e69e";content:var(--icon-content-huaban111,"")}.next-icon-huaban113:before{content:"\e69a";content:var(--icon-content-huaban113,"")}.next-icon-huaban65:before{content:"\e699";content:var(--icon-content-huaban65,"")}.next-icon-huaban66:before{content:"\e691";content:var(--icon-content-huaban66,"")}.next-icon-huaban108:before{content:"\e68f";content:var(--icon-content-huaban108,"")}.next-icon-huaban109:before{content:"\e68e";content:var(--icon-content-huaban109,"")}.next-icon-huaban59:before{content:"\e68a";content:var(--icon-content-huaban59,"")}.next-icon-huaban60:before{content:"\e67f";content:var(--icon-content-huaban60,"")}.next-icon-huaban58:before{content:"\e67d";content:var(--icon-content-huaban58,"")}.next-icon-huaban57:before{content:"\e67c";content:var(--icon-content-huaban57,"")}.next-icon-huaban70:before{content:"\e67a";content:var(--icon-content-huaban70,"")}.next-icon-huaban55:before{content:"\e679";content:var(--icon-content-huaban55,"")}.next-icon-huaban42fuben2:before{content:"\e678";content:var(--icon-content-huaban42fuben2,"")}.next-icon-huaban50:before{content:"\e675";content:var(--icon-content-huaban50,"")}.next-icon-huaban42fuben:before{content:"\e672";content:var(--icon-content-huaban42fuben,"")}.next-icon-huaban49:before{content:"\e671";content:var(--icon-content-huaban49,"")}.next-icon-huaban104:before{content:"\e670";content:var(--icon-content-huaban104,"")}.next-icon-huaban48:before{content:"\e66f";content:var(--icon-content-huaban48,"")}.next-icon-huaban128:before{content:"\e66e";content:var(--icon-content-huaban128,"")}.next-icon-huaban106:before{content:"\e66d";content:var(--icon-content-huaban106,"")}.next-icon-huaban107:before{content:"\e66c";content:var(--icon-content-huaban107,"")}.next-icon-huaban105:before{content:"\e66b";content:var(--icon-content-huaban105,"")}.next-icon-huaban133:before{content:"\e66a";content:var(--icon-content-huaban133,"")}.next-icon-huaban130:before{content:"\e669";content:var(--icon-content-huaban130,"")}.next-icon-huaban132:before{content:"\e667";content:var(--icon-content-huaban132,"")}.next-icon-huaban129:before{content:"\e666";content:var(--icon-content-huaban129,"")}.next-icon-huaban137:before{content:"\e662";content:var(--icon-content-huaban137,"")}.next-icon-huaban136:before{content:"\e661";content:var(--icon-content-huaban136,"")}.next-icon-huaban134:before{content:"\e660";content:var(--icon-content-huaban134,"")}.next-icon-huaban135:before{content:"\e65c";content:var(--icon-content-huaban135,"")}.next-icon-huaban138:before{content:"\e65b";content:var(--icon-content-huaban138,"")}.next-icon-huaban140:before{content:"\e65a";content:var(--icon-content-huaban140,"")}.next-icon-huaban139:before{content:"\e658";content:var(--icon-content-huaban139,"")}.next-icon-yingyong:before{content:"\e653";content:var(--icon-content-yingyong,"")}.next-icon-yunjitianchong:before{content:"\e652";content:var(--icon-content-yunjitianchong,"")}.next-icon-yunji:before{content:"\e651";content:var(--icon-content-yunji,"")}.next-icon-zuojiantoujuxing:before{content:"\e64f";content:var(--icon-content-zuojiantoujuxing,"")}.next-icon-youjiantoujuxing:before{content:"\e64e";content:var(--icon-content-youjiantoujuxing,"")}.next-icon-zhenduan:before{content:"\e64d";content:var(--icon-content-zhenduan,"")}.next-icon-yunxiazai:before{content:"\e64c";content:var(--icon-content-yunxiazai,"")}.next-icon-yunshangchuan:before{content:"\e64b";content:var(--icon-content-yunshangchuan,"")}.next-icon-zhongduantianchong:before{content:"\e64a";content:var(--icon-content-zhongduantianchong,"")}.next-icon-zhongduan:before{content:"\e649";content:var(--icon-content-zhongduan,"")}.next-icon-peijian:before{content:"\e648";content:var(--icon-content-peijian,"")}.next-icon-luopan:before{content:"\e647";content:var(--icon-content-luopan,"")}.next-icon-fuzhi:before{content:"\e642";content:var(--icon-content-fuzhi,"")}.next-icon-bujinmoshi:before{content:"\e63e";content:var(--icon-content-bujinmoshi,"")}.next-icon-huaban46fuben:before{content:"\e638";content:var(--icon-content-huaban46fuben,"")}.next-icon-huaban46:before{content:"\e637";content:var(--icon-content-huaban46,"")}.next-icon-huaban52:before{content:"\e636";content:var(--icon-content-huaban52,"")}.next-icon-huaban53:before{content:"\e635";content:var(--icon-content-huaban53,"")}.next-icon-huaban54:before{content:"\e630";content:var(--icon-content-huaban54,"")}.next-icon-huaban127:before{content:"\e77d";content:var(--icon-content-huaban127,"")}.next-icon-huaban12fuben:before{content:"\e77c";content:var(--icon-content-huaban12fuben,"")}.next-icon-1688-copy:before{content:"\e77b";content:var(--icon-content-1688-copy,"")}.next-icon-taobao-copy:before{content:"\e77a";content:var(--icon-content-taobao-copy,"")}.next-icon-alipay-copy:before{content:"\e779";content:var(--icon-content-alipay-copy,"")}.next-icon-dingtalk-copy:before{content:"\e778";content:var(--icon-content-dingtalk-copy,"")}.next-icon-huaban931:before{content:"\e773";content:var(--icon-content-huaban931,"")}.next-icon-huaban95:before{content:"\e768";content:var(--icon-content-huaban95,"")}.next-icon-huaban941:before{content:"\e767";content:var(--icon-content-huaban941,"")}.next-icon-huaban1fuben341:before{content:"\e766";content:var(--icon-content-huaban1fuben341,"")}.next-icon-huaban1fuben30:before{content:"\e765";content:var(--icon-content-huaban1fuben30,"")}.next-icon-huaban1fuben19:before{content:"\e764";content:var(--icon-content-huaban1fuben19,"")}.next-icon-huaban1fuben21:before{content:"\e763";content:var(--icon-content-huaban1fuben21,"")}.next-icon-huaban1fuben67:before{content:"\e762";content:var(--icon-content-huaban1fuben67,"")}.next-icon-huaban1fuben45:before{content:"\e761";content:var(--icon-content-huaban1fuben45,"")}.next-icon-huaban1fuben47:before{content:"\e760";content:var(--icon-content-huaban1fuben47,"")}.next-icon-huaban1fuben41:before{content:"\e75f";content:var(--icon-content-huaban1fuben41,"")}.next-icon-huaban1fuben591:before{content:"\e75e";content:var(--icon-content-huaban1fuben591,"")}.next-icon-huaban1fuben36:before{content:"\e75d";content:var(--icon-content-huaban1fuben36,"")}.next-icon-huaban1fuben7:before{content:"\e75c";content:var(--icon-content-huaban1fuben7,"")}.next-icon-huaban1fuben91:before{content:"\e75b";content:var(--icon-content-huaban1fuben91,"")}.next-icon-huaban1fuben80:before{content:"\e75a";content:var(--icon-content-huaban1fuben80,"")}.next-icon-huaban1401:before{content:"\e759";content:var(--icon-content-huaban1401,"")}.next-icon-huaban101fuben:before{content:"\e758";content:var(--icon-content-huaban101fuben,"")}.next-icon-huaban1391:before{content:"\e757";content:var(--icon-content-huaban1391,"")}.next-icon-huaban8fuben:before{content:"\e756";content:var(--icon-content-huaban8fuben,"")}.next-icon-huaban1361:before{content:"\e755";content:var(--icon-content-huaban1361,"")}.next-icon-huaban1381:before{content:"\e754";content:var(--icon-content-huaban1381,"")}.next-icon-huaban144:before{content:"\e753";content:var(--icon-content-huaban144,"")}.next-icon-huaban1331:before{content:"\e752";content:var(--icon-content-huaban1331,"")}.next-icon-huaban1321:before{content:"\e751";content:var(--icon-content-huaban1321,"")}.next-icon-huaban1301:before{content:"\e750";content:var(--icon-content-huaban1301,"")}.next-icon-huaban1fuben101:before{content:"\e74f";content:var(--icon-content-huaban1fuben101,"")}.next-icon-huaban1141:before{content:"\e74e";content:var(--icon-content-huaban1141,"")}.next-icon-huaban1291:before{content:"\e74d";content:var(--icon-content-huaban1291,"")}.next-icon-huaban131:before{content:"\e74c";content:var(--icon-content-huaban131,"")}.next-icon-huaban1351:before{content:"\e74b";content:var(--icon-content-huaban1351,"")}.next-icon-3226:before{content:"\e708";content:var(--icon-content-3226,"")}.next-icon-3225:before{content:"\e707";content:var(--icon-content-3225,"")}.next-icon-3224:before{content:"\e706";content:var(--icon-content-3224,"")}.next-icon-3223:before{content:"\e705";content:var(--icon-content-3223,"")}.next-icon-3222:before{content:"\e704";content:var(--icon-content-3222,"")}.next-icon-3221:before{content:"\e703";content:var(--icon-content-3221,"")}.next-icon-3220:before{content:"\e702";content:var(--icon-content-3220,"")}.next-icon-3219:before{content:"\e701";content:var(--icon-content-3219,"")}.next-icon-3218:before{content:"\e700";content:var(--icon-content-3218,"")}.next-icon-3217:before{content:"\e6ff";content:var(--icon-content-3217,"")}.next-icon-3216:before{content:"\e6fe";content:var(--icon-content-3216,"")}.next-icon-3215:before{content:"\e6fd";content:var(--icon-content-3215,"")}.next-icon-3214:before{content:"\e6fc";content:var(--icon-content-3214,"")}.next-icon-3213:before{content:"\e6fb";content:var(--icon-content-3213,"")}.next-icon-3212:before{content:"\e6fa";content:var(--icon-content-3212,"")}.next-icon-3211:before{content:"\e6f9";content:var(--icon-content-3211,"")}.next-icon-3210:before{content:"\e6f8";content:var(--icon-content-3210,"")}.next-icon-329:before{content:"\e6f7";content:var(--icon-content-329,"")}.next-icon-328:before{content:"\e6f6";content:var(--icon-content-328,"")}.next-icon-327:before{content:"\e6f5";content:var(--icon-content-327,"")}.next-icon-326:before{content:"\e6f4";content:var(--icon-content-326,"")}.next-icon-324:before{content:"\e6f3";content:var(--icon-content-324,"")}.next-icon-323:before{content:"\e6f2";content:var(--icon-content-323,"")}.next-icon-322:before{content:"\e6f1";content:var(--icon-content-322,"")}.next-icon-321:before{content:"\e6f0";content:var(--icon-content-321,"")}.next-icon-32:before{content:"\e6ef";content:var(--icon-content-32,"")}@font-face{font-family:WindIcon;src:url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.eot);src:url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.woff2) format("woff2"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.woff) format("woff"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.ttf) format("truetype"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.svg#NextIcon) format("svg")}.next-icon{font-family:NextIcon;font-family:var(--xconsole-icon-font-family,NextIcon)}.next-icon-cart:before{content:var(--icon-content-shopping-cart)}.next-icon-account-circle:before{content:var(--icon-content-user-circle)}.next-icon-points:before,.next-icon-star-circle:before{content:var(--icon-content-star-circle1)}.next-icon-rights:before{content:var(--icon-content-gem)}.next-icon-alert:before{content:var(--icon-content-wind-warning)}.next-icon-caret-up:before{content:var(--icon-content-sort-up)}.next-icon-caret-down:before{content:var(--icon-content-sort-down)}.next-icon-arrow-alt-left:before{content:var(--icon-content-wind-arrow-left)}.next-icon-arrow-alt-right:before{content:var(--icon-content-wind-arrow-right)}.next-icon-export:before{content:var(--icon-content-wind-upload)}.next-icon-import:before{content:var(--icon-content-wind-download)}.next-icon-list-collapsed:before{content:var(--icon-content-outdent)}.next-icon-list-expansion:before{content:var(--icon-content-indent)}.next-icon-remove:before{content:var(--icon-content-times)}.next-icon-expand-arrows-alt:before{content:var(--icon-content-expand-alt)}.next-icon-heart-regular:before{content:var(--icon-content-like)}.next-icon-play:before{content:var(--icon-content-playcircle)}.next-icon-stop:before{content:var(--icon-content-stopcircle)}.next-icon-pause:before{content:var(--icon-content-pausecircle)}.next-icon-folder-add:before{content:var(--icon-content-folder-plus)}.next-icon-installation-package:before{content:var(--icon-content-inbox-in)}.next-icon-light:before{content:var(--icon-content-lightbulb)}.next-icon-fliter-list:before{content:var(--icon-content-wind-filter)}.next-icon-collapse-card1:before{content:var(--icon-content-expandalt-fill)}.next-icon-collapse-card:before{content:var(--icon-content-compressalt-fill)}.next-icon-cloud-upload:before{content:var(--icon-content-cloudupload-fill)}.next-icon-cloud-download:before{content:var(--icon-content-clouddownload-fill)}.next-icon-heart-soild:before{content:var(--icon-content-heart-fill)}.next-icon-service:before{content:var(--icon-content-headset-fill)}.next-icon-file-add:before{content:var(--icon-content-fileplus-fill)}.next-icon-file-sql:before{content:var(--icon-content-file-SQL)}.next-icon-lock-open:before{content:var(--icon-content-unlock-fill)}.next-icon-layers:before{content:var(--icon-content-layergroup-fill)}.next-icon-data-set:before{content:var(--icon-content-databaseset-fill)}.next-icon-label:before{content:var(--icon-content-tag-fill)}.next-icon-invisible:before{content:var(--icon-content-eyeslash-fill)}.next-icon-multiple-tips:before{content:var(--icon-content-commentdots-fill)}.next-icon-comment:before{content:var(--icon-content-commentlines-fill)}.next-icon-data:before{content:var(--icon-content-database-fill)}.next-icon-renewals:before{content:var(--icon-content-transanction)}.next-icon-cell-phone:before{content:var(--icon-content-mobile-alt)}.next-icon-phone-bingding:before{content:var(--icon-content-mobile-check)}.next-icon-phone-untie:before{content:var(--icon-content-mobile-error)}.next-icon-online:before{content:var(--icon-content-laptop-check)}.next-icon-Keys:before{content:var(--icon-content-key)}.next-icon-mains:before{content:var(--icon-content-poweroff)}.next-icon-scanning:before{content:var(--icon-content-scan)}.next-icon-more:before{content:var(--icon-content-ellipsis-vertical)}.next-icon-shoppingcart:before{content:var(--icon-content-shopping-cart)}.next-icon-annex:before{content:var(--icon-content-paperclip)}.next-icon-external-link-alt:before{content:var(--icon-content-external-link)}.next-icon-subtract:before{content:var(--icon-content-wind-minus)}.next-icon-filter-list:before{content:var(--icon-content-wind-filter)}.next-icon-account-add-solid:before{content:var(--icon-content-userplus-fill)}.next-icon-supervisor-account:before{content:var(--icon-content-user-group-fill)}.next-icon-star-solid:before{content:var(--icon-content-collection-fill)}.next-icon-heart-solid:before{content:var(--icon-content-heart-fill)}.next-icon-phone-binding:before{content:var(--icon-content-mobile-check)}.next-icon-scatter-plot:before{content:var(--icon-content-chart-scatter-plot)}.next-icon-chart-pie:before{content:var(--icon-content-chart-pie-alt)}.next-icon-long-arrow-left:before{content:var(--icon-content-wind-arrow-left)}.next-icon-long-arrow-right:before{content:var(--icon-content-wind-arrow-right)}.next-range-scale-item.next-range-scale-item.next-range-scale-item.next-range-scale-item{top:var(--range-scale-item-position-top,0);width:var(--range-scale-item-width,1px)}.next-range .next-range-slider-inner:hover,.next-range .next-range-slider-moving .next-range-slider-inner.next-range-slider-inner.next-range-slider-inner{transform:scale(1.38)}.next-timeline-item.next-timeline-item-done .next-timeline-item-dot{border-radius:50%;background:var(--timeline-item-done-background,#c0c6cc);border:var(--timeline-item-done-border)}.next-balloon.next-balloon.next-balloon:after{box-shadow:none}.next-balloon.next-balloon-bottom-left:after,.next-balloon.next-balloon-bottom-right:after,.next-balloon.next-balloon-bottom:after{border-bottom-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon.next-balloon-top-left:after,.next-balloon.next-balloon-top-right:after,.next-balloon.next-balloon-top:after{border-top-left-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon.next-balloon-right-bottom:after,.next-balloon.next-balloon-right-top:after,.next-balloon.next-balloon-right:after{border-top-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon.next-balloon-left-bottom:after,.next-balloon.next-balloon-left-top:after,.next-balloon.next-balloon-left:after{border-bottom-left-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip.next-balloon-tooltip:after{box-shadow:none}.next-balloon-tooltip.next-balloon-tooltip-bottom-left:after,.next-balloon-tooltip.next-balloon-tooltip-bottom-right:after,.next-balloon-tooltip.next-balloon-tooltip-bottom:after{border-bottom-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip-top-left:after,.next-balloon-tooltip.next-balloon-tooltip-top-right:after,.next-balloon-tooltip.next-balloon-tooltip-top:after{border-top-left-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip-right-bottom:after,.next-balloon-tooltip.next-balloon-tooltip-right-top:after,.next-balloon-tooltip.next-balloon-tooltip-right:after{border-top-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip-left-bottom:after,.next-balloon-tooltip.next-balloon-tooltip-left-top:after,.next-balloon-tooltip.next-balloon-tooltip-left:after{border-bottom-left-radius:var(--balloon-arrow-border-radius,2px)}.next-btn{font-weight:var(--btn-font-weight,400);transition:all .1s}.next-btn[disabled]:hover{box-shadow:none}.next-btn-primary:focus-visible,.next-btn-primary:hover{box-shadow:var(--btn-primary-hover-shadow)}.next-btn-primary:active{box-shadow:var(--btn-primary-active-shadow)}.next-btn.next-btn-text:active,.next-btn.next-btn-text:focus-visible,.next-btn.next-btn-text:hover{box-shadow:none}.next-btn-normal:focus-visible,.next-btn-normal:hover{box-shadow:var(--btn-normal-hover-shadow)}.next-btn-normal:active{box-shadow:var(--btn-normal-active-shadow)}.next-btn.next-small:not(.isOnlyIcon):not(.next-btn-text){min-width:var(--btn-small-min-width,62px)}.next-btn.next-small.isTwoToThreeCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-small-cn2-3-width,62px);padding:0}.next-btn.next-small.isFourCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-small-cn4-width,72px);padding:0}.next-btn.next-small:not(.is-wind).isOnlyIcon{width:24px;padding:0}.next-btn.next-medium:not(.isOnlyIcon):not(.next-btn-text){min-width:var(--btn-medium-min-width,62px)}.next-btn.next-medium.isTwoToThreeCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-medium-cn2-3-width,62px);padding:0}.next-btn.next-medium.isFourCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-medium-cn4-width,80px);padding:0}.next-btn.next-medium:not(.is-wind).isOnlyIcon{width:32px;padding:0}.next-btn.next-large:not(.isOnlyIcon):not(.next-btn-text){min-width:var(--btn-large-min-width,64px)}.next-btn.next-large.isTwoToThreeCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-large-cn2-3-width,64px);padding:0}.next-btn.next-large.isFourCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-large-cn4-width,88px);padding:0}.next-btn.next-large:not(.is-wind).isOnlyIcon{width:36px;padding:0}.next-btn-group .next-btn.next-btn.next-btn.next-btn{min-width:unset}.next-btn-group .next-btn.next-btn-primary{border-style:solid;border-color:hsla(0,0%,100%,.2)}.next-btn .teamix-icon{vertical-align:middle}.next-btn .teamix-icon-first{margin-left:0;margin-right:4px}.next-btn .teamix-icon-last{margin-left:4px;margin-right:0}.next-btn.next-btn-normal.next-btn-text.next-btn-warning:hover{color:var(--color-error-5)}.next-btn.next-btn-normal.next-btn-text.next-btn-warning:active{color:var(--color-error-6)}.next-btn.next-btn-primary.next-btn-text.next-btn-warning{color:var(--color-error-5)}.next-btn.next-btn-primary.next-btn-text.next-btn-warning:hover{color:var(--color-error-4)}.next-btn.next-btn-primary.next-btn-text.next-btn-warning:active{color:var(--color-error-6)}.next-pagination{font-size:inherit}.next-pagination .next-pagination-item.next-current.next-current.next-current{z-index:2}.next-pagination .next-pagination-item:not(.next-current):focus-visible,.next-pagination .next-pagination-item:not(.next-current):hover{background-color:var(--pagination-item-hover-bg,#fff)}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn{min-width:32px}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-small{min-width:24px}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-next,.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-prev{border-color:var(--pagination-item-border-color,transparent)}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-next[disabled]:hover,.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-prev[disabled]:hover{background-color:var(--pagination-item-disabled-bg,#fff)}.next-pagination-size-selector-popup .next-select-menu-item.next-select-menu-item.next-select-menu-item.next-select-menu-item.next-select-menu-item{padding-right:0}.next-transfer.next-transfer .next-transfer-panel-list{padding:var(--transfer-panel-padding-mb,0) var(--transfer-panel-padding-lr,8px);margin:var(--transfer-panel-margin-mb,8px) 0}.next-transfer.next-transfer .next-transfer-panel-list::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-transfer.next-transfer .next-transfer-panel-list::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-transfer.next-transfer .next-transfer-panel-list::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation{padding:0;width:var(--transfer-operation-width,24px);height:var(--transfer-operation-height,24px)}.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation.next-btn{min-width:unset}.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation[disabled],.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation[disabled]:hover{color:var(--btn-pure-primary-color-disabled,#fff);background-color:var(--btn-pure-primary-bg-disabled,#d1d5d9);border-color:var(--btn-pure-primary-border-color-disabled,transparent)}.next-transfer-operations .next-transfer-move:before{width:var(--transfer-operation-simple-move-size,16px);height:var(--transfer-operation-simple-move-size,16px);font-size:var(--transfer-operation-simple-move-size,16px)}.next-tabs-pure .next-tabs-tab.next-tabs-tab.next-tabs-tab.next-tabs-tab:hover{background-color:var(--tab-pure-hover-bg)}.next-date-picker .next-date-picker-trigger{transition:box-shadow var(--active-transition)}.next-date-picker .next-date-picker-trigger:hover,.next-date-picker .next-date-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-date-picker .next-date-picker-trigger .next-date-picker-trigger-input{box-shadow:none}.next-range-picker .next-range-picker-trigger{transition:box-shadow var(--active-transition)}.next-range-picker .next-range-picker-trigger:hover,.next-range-picker .next-range-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-range-picker .next-range-picker-trigger .next-range-picker-trigger-input{box-shadow:none}.next-month-picker .next-month-picker-trigger{transition:box-shadow var(--active-transition)}.next-month-picker .next-month-picker-trigger:hover,.next-month-picker .next-month-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-month-picker .next-month-picker-trigger .next-month-picker-trigger-input{box-shadow:none}.next-year-picker .next-year-picker-trigger{transition:box-shadow var(--active-transition)}.next-year-picker .next-year-picker-trigger:hover,.next-year-picker .next-year-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-year-picker .next-year-picker-trigger .next-year-picker-trigger-input{box-shadow:none}.next-week-picker .next-week-picker-trigger{transition:box-shadow var(--active-transition)}.next-week-picker .next-week-picker-trigger:hover,.next-week-picker .next-week-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-week-picker .next-week-picker-trigger .next-week-picker-trigger-input{box-shadow:none}.next-calendar-panel-header-full .next-calendar-btn,.next-calendar-panel-header-left .next-calendar-btn,.next-calendar-panel-header-right .next-calendar-btn{line-height:30px}.next-date-picker-panel-footer,.next-month-picker-panel-footer,.next-range-picker-panel-footer,.next-week-picker-panel-footer,.next-year-picker-panel-footer{--popup-local-border-width:1px}.next-date-picker-panel-header,.next-month-picker-panel-header,.next-range-picker-panel-header,.next-week-picker-panel-header,.next-year-picker-panel-header{padding:8px}.next-search{transition:box-shadow var(--active-transition)}.next-search.next-search.next-search.focusing,.next-search.next-search.next-search.visible,.next-search.next-search.next-search:hover{box-shadow:var(--active-shadow)}.next-search.next-search.next-search.disabled,.next-search.next-search.next-search .next-btn:hover,.next-search.next-search.next-search .next-input-group:hover,.next-search.next-search.next-search .next-input:hover{box-shadow:none}.next-search-simple:not(.is-wind) .next-input{display:flex}.next-search-simple:not(.is-wind) .next-input input{padding-left:0}.next-search-simple:not(.is-wind) .next-input .next-input-inner{width:auto;order:-1;display:flex;justify-content:center;align-items:center}.next-search-simple:not(.is-wind) .next-input .next-input-inner .next-search-icon{margin-right:0;padding:0 12px}.next-search-simple:not(.is-wind) .next-input .next-input-control{width:auto;order:10;display:flex;justify-content:center;align-items:center}.next-search-simple:not(.is-wind) .next-input .next-input-control .next-input-hint-wrap{padding-right:0;width:auto}.next-search.next-normal.disabled .next-input-group,.next-search.next-search-normal.disabled .next-input-group{border-color:var(--search-simple-normal-color,#dedede)}.next-search.next-normal .next-after .next-btn-normal,.next-search.next-search-normal .next-after .next-btn-normal{padding:0 8px;margin-right:-1px}.next-search.next-normal .next-after .next-btn-normal .next-icon-search,.next-search.next-search-normal .next-after .next-btn-normal .next-icon-search{margin-right:0}.next-search.next-normal.custom-search-text .next-after .next-btn-normal{padding:0 16px}.next-input.next-disabled,.next-input.next-disabled>input,.next-input.next-disabled>textarea,.next-search .next-input.next-disabled *{cursor:not-allowed}.next-input.next-focus,.next-input:hover{box-shadow:var(--active-shadow)}.next-input.next-disabled{box-shadow:none}.next-input-group{transition:box-shadow var(--active-transition)}.next-input-group:hover{box-shadow:var(--active-shadow)}.next-input-group.next-disabled,.next-input-group .next-input{box-shadow:none}.next-input-group>.next-number-picker:first-child .next-input{border-top-right-radius:0;border-bottom-right-radius:0}.next-input-group>.next-number-picker:first-child .next-input.next-focus{position:relative;z-index:1}.next-input-group>.next-number-picker:last-child .next-input{border-top-left-radius:0;border-bottom-left-radius:0}.next-input-group>.next-number-picker:last-child .next-input.next-focus{position:relative;z-index:1}.next-input.next-noborder.next-focus,.next-input.next-noborder:hover{box-shadow:none}.next-select.next-active .next-select-inner{box-shadow:var(--active-shadow);border-color:var(--input-focus-border-color,#0064c8)}.next-select-menu.next-select-multiple-menu .next-icon-select,.next-select-menu.next-select-multiple-menu .next-icon-selected,.next-select-menu.next-select-single-menu .next-icon-select,.next-select-menu.next-select-single-menu .next-icon-selected,.next-select-menu.next-select-tag-menu .next-icon-select,.next-select-menu.next-select-tag-menu .next-icon-selected{margin-left:var(--select-menu-select-icon-ml,-20px)}.next-select-menu.next-select-multiple-menu .next-select-menu-item.next-selected,.next-select-menu.next-select-single-menu .next-select-menu-item.next-selected,.next-select-menu.next-select-tag-menu .next-select-menu-item.next-selected{font-weight:var(--select-selected-font-weight,400)}.next-menu.next-menu{padding:var(--menu-padding)}.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected{height:100%;overflow:hidden}.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected,.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected:before{width:var(--menu-icon-selected-size,16px);font-size:var(--menu-icon-selected-size,16px)}.next-menu-item{border-radius:var(--corner-1)}.next-menu-selectable-multiple .next-menu-item:not([role=menuitemcheckbox]):not([role=menuitemradio]):not(.next-nav-item),.next-menu-selectable-single .next-menu-item:not([role=menuitemcheckbox]):not([role=menuitemradio]):not(.next-nav-item){padding:0 var(--menu-padding-horizontal) 0 var(--menu-padding-horizontal-selectable,var(--menu-padding-horizontal))}.next-menu-item-inner .next-checkbox,.next-menu-item-inner .next-radio{margin-right:var(--menu-checkbox-mr,8px)}.next-menu .next-menu-icon-selected.next-icon{margin-left:var(--select-menu-select-icon-ml,-20px)}.next-split-btn.next-split-btn>.next-btn{box-shadow:none}.next-number-picker>.next-input .next-number-picker-handler:focus-within{opacity:1}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn{min-width:unset;border:var(--number-picker-handler-btn-border,none)}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn:not(.disabled):hover{border:var(--number-picker-handler-btn-border-hover,none)}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn.next-btn:first-child{border-right:none;border-top:none}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn.next-btn:last-child{border-right:none;border-bottom:none}.next-number-picker-inline .next-input-group{border:var(--number-picker-inline-group-border,1px solid #c0c6cc);border-radius:var(--number-picker-border-radius,2px);padding:var(--number-picker-inline-group-padding,4px)}.next-number-picker-inline .next-input-group .next-input-group-addon .next-btn{border:var(--number-picker-inline-group-btn-border,none);border-radius:var(--number-picker-border-radius,2px)!important;min-width:unset}.next-number-picker-inline .next-input-group .next-input-group-addon .next-btn:not(.disabled):hover{border:var(--number-picker-inline-group-btn-border-hover,none)}.next-number-picker-inline .next-input-group .next-input{border:var(--number-picker-inline-group-btn-border,none)}.next-number-picker-inline .next-input-group .next-input:hover{border:var(--number-picker-inline-group-btn-border-hover,none)}.next-number-picker.next-disabled{background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-number-picker.next-disabled>.next-input{border:var(--number-picker-normal-border,1px solid #dedede)}.next-number-picker.next-disabled .next-input-group{box-shadow:none}.next-number-picker.next-disabled .next-input-group:hover{border:var(--number-picker-inline-group-border,1px solid #c0c6cc)}.next-number-picker.next-disabled .next-input-group .next-input-group-addon .next-btn{background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-number-picker.next-disabled .next-input-group .next-input-group-addon .next-btn:hover,.next-number-picker.next-disabled .next-input-group .next-input:hover{border:var(--number-picker-inline-group-btn-border,none)}.next-number-picker-inline.next-medium .next-input-group .next-input-group-addon .next-btn{height:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px));width:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px));min-width:unset}.next-number-picker-inline.next-medium .next-input-group .next-input{display:inline-block;height:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px));line-height:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px))}.next-number-picker-inline.next-medium .next-input-group .next-input input{display:inline-block;height:100%}.next-number-picker-inline.next-small .next-input-group .next-input-group-addon .next-btn{height:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px));width:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px));min-width:unset}.next-number-picker-inline.next-small .next-input-group .next-input{display:inline-block;height:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px));line-height:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px))}.next-number-picker-inline.next-small .next-input-group .next-input input{display:inline-block;height:100%}.next-number-picker-inline.next-large .next-input-group .next-input-group-addon .next-btn{height:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px));width:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px));min-width:unset}.next-number-picker-inline.next-large .next-input-group .next-input{display:inline-block;height:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px));line-height:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px))}.next-number-picker-inline.next-large .next-input-group .next-input input{display:inline-block;height:100%}.next-number-picker-normal.next-small.next-small.next-small .next-icon .next-icon-remote,.next-number-picker-normal.next-small.next-small.next-small .next-icon:before{line-height:inherit}.next-number-picker.next-medium>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn{height:calc(var(--form-element-medium-height, 32px)/2 - var(--input-border-width, 1px)*2/2)}.next-card{transition:box-shadow var(--active-transition)}.next-card:hover{box-shadow:var(--card-hover-shadow,1px 1px 4px 0 rgba(0,0,0,.13));background-color:var(--card-hover-background,var(--card-background));border-color:var(--card-hover-border-color,var(--card-border-color))}.next-card .next-card-header-extra .next-icon-ellipsis-vertical:before{vertical-align:text-bottom}.next-card .next-card-collapsable-tail{height:18px;line-height:18px;font-size:12px;padding:0 var(--card-padding-lr,16px) var(--card-body-padding-bottom,16px);margin-bottom:var(--card-body-padding-bottom,16px)}.next-card .next-card-collapsable-tail:hover{color:var(--color-brand1-6,#0064c8);cursor:pointer}.next-card .next-card-collapsable-tail .next-icon{margin-left:4px}.next-card .next-card-collapsable-tail .next-icon:before{width:18px;height:18px;line-height:18px}.next-card .next-card-collapsable-head{padding:0 var(--card-padding-lr,16px);margin:var(--card-body-padding-bottom,16px) 0;line-height:22px;font-size:14px}.next-card .next-card-collapsable-head:hover{color:var(--color-brand1-6,#0064c8);cursor:pointer}.next-cascader:not(.multiple) .next-cascader-menu .next-menu-item{--menu-padding-horizontal:var(--menu-padding-horizontal-selectable);padding:0 var(--menu-padding-horizontal) 0 var(--menu-padding-horizontal)}.next-cascader .next-cascader-menu-wrapper::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-cascader .next-cascader-menu-wrapper::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-cascader .next-cascader-menu-wrapper::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}.next-cascader-select-dropdown{background-color:var(--dropdown-bg-color,#fff)}.next-cascader-select-dropdown .next-cascader-menu-wrapper{border-left:none;overflow-y:scroll}.next-cascader-select-dropdown .next-cascader-menu-wrapper::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-cascader-select-dropdown .next-cascader-menu-wrapper::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-cascader-select-dropdown .next-cascader-menu-wrapper::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}.next-cascader-select-dropdown .next-menu{border:none}.next-table-fix-left,.next-table-fix-right{background-clip:padding-box}.next-message-title{font-weight:var(--message-title-weight,500)}.next-message .next-message-close .next-icon-close{display:flex;align-items:center;justify-content:center}.next-message .next-message-close .next-icon-close:before{width:var(--message-close-icon-size,12px);height:var(--message-close-icon-size,12px);font-size:var(--message-close-icon-size,12px);line-height:var(--message-close-icon-size,12px)}.next-dialog-footer .next-btn{margin-left:var(--s-2,8px)}.next-dialog-footer .next-btn:first-child{margin-left:0}.next-dialog.next-dialog-quick.quick-show .next-dialog-body{padding:var(--dialog-content-padding-top,0) var(--dialog-content-padding-left-right,24px) var(--dialog-content-padding-bottom,16px) var(--dialog-content-padding-left-right,24px)}.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner>.next-icon{transform:scale(var(--checkbox-icon-scale,.8));margin-top:0}.next-nav.next-nav.next-nav.next-nav.next-menu{padding:0}.next-modal,body.next-modal-open{overflow:hidden}.next-modal{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:1001;background:var(--color-fill1-2)}.next-modal-header{position:relative;background:var(--color-fill1-1);z-index:1;height:60px;box-shadow:var(--shadow-1);display:flex;box-sizing:border-box;padding:var(--s-2) var(--s-4);align-items:center;justify-content:space-between}.next-modal-header .left-part .next-modal-title{font-size:var(--font-size-body-2);line-height:var(--font-lineheight-1);color:var(--color-text1-3)}.next-modal-header .left-part .next-modal-title .next-modal-edit-icon{margin-left:var(--s-1);vertical-align:middle}.next-modal-header .left-part .next-modal-title .edit-title{display:inline-block;vertical-align:middle}.next-modal-header .left-part .next-modal-description{font-size:var(--font-size-body-1);line-height:var(--font-lineheight-1);color:var(--color-text1-1)}.next-modal-header .right-part{display:flex;justify-content:flex-end}.next-modal-header .right-part .next-modal-operations{line-height:var(--s-9)}.next-modal-header .right-part .next-modal-side-drawer-switch{box-sizing:border-box;height:var(--s-8);margin:2px var(--s-3);border-radius:var(--corner-1);border:1px solid var(--color-line1-3);padding:5px var(--s-3);font-size:var(--font-size-body-1);line-height:var(--font-lineheight-1);color:var(--color-text1-3)}.next-modal-header .right-part .next-modal-side-drawer-switch-label{vertical-align:middle;display:inline-block}.next-modal-header .right-part .next-modal-side-drawer-switch .next-switch{margin:2px 0 2px var(--s-2);vertical-align:middle}.next-modal-header .right-part .next-modal-close{height:var(--s-6);margin:6px 0}.next-modal-body{height:calc(100% - 60px);overflow:hidden;display:flex}.next-modal-body .next-modal-children,.next-modal-body .next-modal-side-drawer{height:100%;overflow:auto}.next-modal-body .next-modal-children{flex:1;background:var(--color-fill1-2)}.next-modal-body .next-modal-side-drawer{background:var(--color-fill1-1);overflow:hidden;transition:width .3s ease-out}.next-modal-body .next-modal-side-drawer.next-modal-side-drawer-visible{box-shadow:-1px 0 0 0 var(--color-fill1-3);overflow:auto}.next-modal-header .next-modal-title-box{display:flex;align-items:center}.next-modal-header .next-modal-title-box .next-modal-title-icon{color:var(--color-fill1-6,#8b8b8b);font-size:var(--font-size-body-2,12px);margin-right:var(--modal-title-icon-margin-right,12px);cursor:pointer;transform:translateY(var(--modal-title-icon-transform-top,2px))}.next-badge .next-badge-count,.next-badge .next-badge-dot{box-shadow:0 0 0 2px var(--badge-border-color,#fff)}.next-upload-dragable .next-upload-drag{transition:all .1s linear}.next-upload-dragable .next-upload-drag-over{background:var(--color-brand1-1)}.next-upload-card{border-radius:var(--corner-1)}.next-upload-list-card .next-upload-list-item-wrapper{border-style:dashed;border-radius:var(--corner-1)}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-overlay{border-radius:0 var(--corner-1) var(--corner-1) var(--corner-1)}.next-calendar-card .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-year{animation:none}.next-drawer-footer{position:absolute;bottom:0;width:100%;padding:var(--drawer-footer-padding-top,10px) var(--drawer-footer-padding-right,16px) var(--drawer-footer-padding-bottom,10px) var(--drawer-footer-padding-left,16px);left:0;background:var(--drawer-title-bg-color,var(--drawer-bg));border-radius:0 0 4px 4px;z-index:3}.next-drawer-footer-has-shadow,.next-drawer-footer-line{border-top:var(--drawer-footer-border-width,1px) var(--line-solid,solid) var(--drawer-footer-border-color,var(--color-line1-1))}.next-drawer-footer-has-shadow{box-shadow:var(--shadow-1-up)}.next-drawer-footer-left,.next-drawer-footer-right{text-align:right}.next-drawer-footer-center{text-align:center}.next-drawer{overflow:hidden}.next-drawer .next-drawer-body{height:calc(100% - var(--drawer-has-footer-margin-bottom, 40px))}.next-drawer-has-footer .next-drawer-body{margin-bottom:var(--drawer-has-footer-margin-bottom,40px);padding-bottom:calc(var(--drawer-content-padding-bottom, 20px) + var(--drawer-has-footer-margin-bottom, 40px) + var(--drawer-footer-padding-bottom, 10px))}.next-overlay-wrapper .next-overlay-inner::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-overlay-wrapper .next-overlay-inner::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-overlay-wrapper .next-overlay-inner::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}body{line-height:1.5}code,kbd,pre,samp{font-family:Consolas,Menlo,Courier,monospace}a:active,a:hover,a:link,a:visited{text-decoration:none}body{color:var(--color-text1-9);background:#fff;background:var(--body-bg,var(--color-fill1-1))}body.lang-ja{font-family:Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,メイリオ,Meiryo,MS Pゴシック,Helvetica Neue,Helvetica,Arial,sans-serif}.next-checkbox-inner{position:relative}.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner>.next-icon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(var(--checkbox-icon-scale,.8));margin:0}.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner>.next-icon:before{display:inline-block;width:var(--checkbox-icon-size,16px);height:var(--checkbox-icon-size,16px);font-size:var(--checkbox-icon-size,16px);line-height:inherit}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon,.next-input .next-input-hint.next-input-hint.next-input-hint{color:var(--input-hint-icon-color,#333);border-radius:50%;width:var(--input-hint-icon-outer-size,16px);height:var(--input-hint-icon-outer-size,16px);display:flex;justify-content:center;align-items:center}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon:hover{background-color:var(--input-hint-icon-hover-color,#f7f9fa)}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon:before{transform:var(--input-clear-icon-transform,scale(.59))}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon:before,.next-input .next-input-hint.next-input-hint.next-input-hint:before{width:var(--input-hint-icon-inner-size,12px);font-size:var(--input-hint-icon-inner-size,12px);line-height:var(--input-hint-icon-inner-size,12px)}.next-balloon-close{display:inline-flex;justify-content:center;align-items:center;width:18px;height:18px;border-radius:50%}.next-balloon-close:hover{background-color:var(--balloon-hover-bg,#f7f9fa)}.next-breadcrumb-icon-sep:before{font-family:NextIcon}.next-dialog-header{padding-right:calc(var(--dialog-title-padding-left-right) + var(--dialog-close-right))}.next-dialog.next-closeable:not(.next-dialog-quick) .next-dialog-close{top:var(--dialog-close-top-normal,var(--dialog-close-top,24px))}.next-tag-large{border-radius:var(--tag-large-corner-radius,14px)}.next-tag:not([disabled]) .next-tag-body{cursor:var(--tag-cursor,pointer)}.next-tag:not([disabled]).next-tag.next-tag:focus{color:var(--tag-focus-color);background-color:var(--tag-focus-bg)}.next-tag:not([disabled]).next-tag.next-tag:hover{color:var(--tag-hover-color);background-color:var(--tag-hover-bg)}.next-tag:not([disabled]).next-tag.next-tag:hover .next-icon-close:before{content:var(--icon-content-delete-filling)}.next-tag.wind-tag-colored{border:0;cursor:default}.next-tag.wind-tag-colored .next-tag-body{top:0}.next-tag.wind-tag-colored-light-steel-blue,.next-tag.wind-tag-colored-light-steel-blue:hover{background:#edf3f7!important;color:#628099!important}.next-tag.wind-tag-colored-plum,.next-tag.wind-tag-colored-plum:hover{background:#f0edf7!important;color:#746299!important}.next-tag.wind-tag-colored-misty-rose,.next-tag.wind-tag-colored-misty-rose:hover{background:#f7eded!important;color:#996262!important}.next-tag.wind-tag-colored-light-goldenrod-yellow,.next-tag.wind-tag-colored-light-goldenrod-yellow:hover{background:#f7f6ed!important;color:#999062!important}.next-tag.wind-tag-colored-pale-green,.next-tag.wind-tag-colored-pale-green:hover{background:#edf7ed!important;color:#629962!important}.next-tag.wind-tag-colored-gray,.next-tag.wind-tag-colored-gray:hover{background:#e5e5e5!important;color:#595959!important}.next-tag.wind-tag-colored-silver{box-sizing:border-box;border:1px solid #bfbfbf}.next-tag.wind-tag-colored-silver,.next-tag.wind-tag-colored-silver:hover{background:#fafafa!important;color:#595959!important}.next-tag.wind-tag-colored-silver .next-tag-body{top:-1px}.next-tag.wind-tag-colored-silver:hover{border-color:#bfbfbf!important}.next-tag.is-wind.next-tag-small{border-radius:calc(var(--size-base)*5/2);cursor:pointer}.next-tag.is-wind.next-tag-small,.next-tag.is-wind.next-tag-small .next-tag-body{height:calc(var(--size-base)*5);line-height:calc(var(--size-base)*5);vertical-align:middle}.next-tag.is-wind.next-tag-small .next-tag-body{font-size:calc(var(--size-base)*3);top:-1px}.next-tag.is-wind.next-tag-medium{border-radius:calc(var(--size-base)*6/2);cursor:pointer}.next-tag.is-wind.next-tag-medium,.next-tag.is-wind.next-tag-medium .next-tag-body{height:calc(var(--size-base)*6);line-height:calc(var(--size-base)*6);vertical-align:middle}.next-tag.is-wind.next-tag-medium .next-tag-body{font-size:calc(var(--size-base)*3);top:-1px}.next-tag.is-wind.next-tag-large{border-radius:calc(var(--size-base)*7/2);cursor:pointer}.next-tag.is-wind.next-tag-large,.next-tag.is-wind.next-tag-large .next-tag-body{height:calc(var(--size-base)*7);line-height:calc(var(--size-base)*7);vertical-align:middle}.next-tag.is-wind.next-tag-large .next-tag-body{font-size:calc(var(--size-base)*3 + 2px);top:-1px}.next-tag.is-wind.next-tag-closable>.next-tag-close-btn{color:var(--color-text1-2);height:auto;position:relative;top:-1px}.next-tag.is-wind.next-tag-closable>.next-tag-close-btn .next-icon:before{transform:scale(.84)}.next-tag.is-wind .next-tag-body .next-icon{vertical-align:baseline}.next-message.next-message-success.next-toast{border-left:var(--message-border-width,4px) solid var(--message-success-border-color,#00a700)}.next-message.next-message-warning.next-toast{border-left:var(--message-border-width,4px) solid var(--message-warning-border-color,#fac800)}.next-message.next-message-error.next-toast{border-left:var(--message-border-width,4px) solid var(--message-error-border-color,#c80000)}.next-message.next-message-notice.next-toast{border-left:var(--message-border-width,4px) solid var(--message-notice-border-color,#0064c8)}.next-message.next-message-help.next-toast{border-left:var(--message-border-width,4px) solid var(--message-help-border-color,#888)}.next-message.next-medium{padding-left:16px;padding-right:12px}.next-message.next-medium.next-inline:not(.next-message-loading){border:0}.next-message.next-medium .next-message-symbol{line-height:var(--message-line-height,21px)}.next-message.next-medium .next-message-symbol:before{font-size:14px;width:14px;line-height:inherit}.next-message.next-medium.next-title-content .next-message-title{font-weight:600;line-height:var(--message-line-height,22px)}.next-message.next-medium .next-message-content{line-height:var(--message-line-height,20px);margin-top:0}.next-message.next-medium.next-only-content .next-message-symbol{line-height:var(--message-line-height,19px)}.next-message.next-medium.next-only-content .next-message-symbol:before{font-size:14px;width:14px;line-height:inherit}.next-message.next-medium.next-only-content .next-message-content{line-height:var(--message-line-height,20px)}.next-message.next-toast.next-overlay-inner.next-message-wrapper{z-index:1031}.next-menu-btn.next-btn-text.next-btn-normal:hover .next-menu-btn-arrow{color:var(--btn-text-normal-color-hover,#555)}.next-menu-btn.next-btn-text.next-btn-primary .next-menu-btn-arrow{color:var(--btn-text-primary-color,#555)}.next-menu-btn.next-btn-text.next-btn-primary:hover .next-menu-btn-arrow{color:var(--btn-text-primary-color-hover,#555)}.next-menu-btn.next-btn-text.next-btn-secondary .next-menu-btn-arrow{color:var(--btn-text-secondary-color,#555)}.next-menu-btn.next-btn-text.next-btn-secondary:hover .next-menu-btn-arrow{color:var(--btn-text-secondary-color-hover,#555)}.next-number-picker.is-wind.next-number-picker-inline.next-medium{min-width:calc(var(--size-base)*30)}.next-number-picker.is-wind.next-number-picker-inline .next-input{position:relative;left:-1px;z-index:1}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-before{position:relative}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-before:hover{z-index:2}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-before .next-btn{margin:0}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-after{position:relative;left:-2px}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-after:hover{z-index:2}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-after .next-btn{margin:0}.next-number-picker>.next-input{border:var(--number-picker-normal-border,1px solid #dedede)}.next-number-picker>.next-input:hover{border:var(--number-picker-normal-border-hover,1px solid #737373)}.next-pagination.is-wind .next-btn:not(.next-pagination-jump-go):not(.next-current){background:#fff}.next-pagination.is-wind .next-btn.next-btn-normal:not([disabled]):not(.next-current):not(.next-pagination-jump-go):hover{color:var(--color-text1-5);border-color:var(--color-line1-4);z-index:1}.next-pagination.is-wind .next-btn.next-btn-normal:not([disabled]):not(.next-current):not(.next-pagination-jump-go):hover .next-icon{color:var(--color-text1-5)}.next-pagination.is-wind .next-btn.next-current{border-color:var(--color-brand1-6);z-index:1}.next-pagination.is-wind .next-btn.next-pagination-jump-go{margin-left:calc(var(--size-base)*2)}.next-pagination.is-wind .next-btn.next-small{min-width:calc(var(--size-base)*6)}.next-pagination.is-wind .next-btn.next-medium{min-width:calc(var(--size-base)*8)}.next-pagination.is-wind .next-btn.next-large{min-width:calc(var(--size-base)*9)}.next-pagination.is-wind .next-btn.next-btn[disabled]{border:1px solid #ebebeb;color:#c1c1c1;background:#fafafa}.next-pagination.is-wind .next-btn.next-btn[disabled] .next-icon{color:#dedede}.next-pagination.is-wind .next-pagination-item.next-next,.next-pagination.is-wind .next-pagination-list,.next-pagination.is-wind .next-pagination-list .next-btn{margin:0 0 0 -1px!important}.next-pagination.is-wind .next-pagination-jump-input.next-input{margin:0 8px}.next-pagination.is-wind .next-pagination-jump-input.next-input input{padding:0 4px;text-align:center}.next-pagination.is-wind .next-pagination-size-selector .next-select{margin:0}.next-step.is-wind .next-step-item-content{color:var(--color-text1-2)!important}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-horizontal .next-step-item-node-placeholder,.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-node-placeholder{height:24px;width:24px}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-horizontal .next-step-item-node-placeholder .next-step-item-node-circle,.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-node-placeholder .next-step-item-node-circle{height:24px;width:24px;line-height:22px}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-horizontal .next-step-item-node-placeholder .next-step-item-node-circle .next-icon:before,.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-node-placeholder .next-step-item-node-circle .next-icon:before{font-size:12px}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-body>.next-step-item-title{margin-top:4px}.next-step.is-wind.next-step-circle.next-step-dot-circle-hoz-placement.next-step-label-horizontal.next-enhanced-step-size-small>.next-step-item .next-step-item-body .next-step-item-title{margin-top:3px}.next-step.is-wind.next-step-vertical>.next-step-item{height:auto}.next-step.is-wind.next-step-vertical>.next-step-item>.next-step-item-tail{margin:8px auto}.next-step.is-wind.next-step-dot-circle-hoz{display:flex;justify-content:space-between}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item{flex:1 0 auto;box-sizing:content-box}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-last{flex:0 0 auto}.next-step.is-wind.next-step-dot-circle-hoz.next-step-dot>.next-step-item-first{padding-left:40px}.next-step.is-wind.next-step-dot-circle-hoz.next-step-dot>.next-step-item-last{padding-right:40px}.next-step.is-wind.next-step-dot-circle-hoz.next-step-dot>.next-step-item-last>.next-step-item-body{left:-30px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-first{padding-left:25px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-first .next-step-item-body{left:2px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-last{padding-right:25px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-last .next-step-item-body{left:-23px}.next-step.is-wind.next-step-dot-circle-hoz-placement{display:flex;justify-content:space-between;padding:0}.next-step.is-wind.next-step-dot-circle-hoz-placement .next-step-item{flex:1 0 auto;box-sizing:content-box}.next-step.is-wind.next-step-dot-circle-hoz-placement .next-step-item-last{flex:0 0 auto}.next-step.is-wind.next-step-dot-circle-hoz-placement.next-step-dot>.next-step-item-first{padding-left:40px}.next-step.is-wind.next-step-dot-circle-hoz-placement.next-step-dot>.next-step-item-last{padding-right:40px}.next-step.is-wind.next-step-dot-circle-hoz-placement.next-step-dot>.next-step-item-last>.next-step-item-body{left:-30px}.next-step.is-wind.next-step-dot-circle-hoz-placement .next-step-item-first>.next-step-item-container{padding-left:0}.next-tabs.next-tabs-pure .next-tabs-tab{border-bottom:var(--line-solid,solid) var(--tab-pure-divider-line-width,1px) var(--tab-pure-divider-border-color,#e3e4e6)}.next-tabs.next-tabs-pure .next-tabs-tab.active:before{bottom:-1px}.next-table .next-table-expanded-row{background-color:#ebebeb}.next-table td .next-table-cell-wrapper,.next-table th .next-table-cell-wrapper{word-break:normal}.next-table td.next-table-selection .next-table-cell-wrapper,.next-table th.next-table-selection .next-table-cell-wrapper{line-height:14px}.next-table .next-table-empty{height:20px;line-height:20px;margin:16px 0;padding:0}.next-table.is-wind th:not(.next-table-selection) .next-icon{color:#888}.next-table.is-wind .next-table-sort.next-table.is-wind .next-table-sort:hover .next-icon,.next-table.is-wind th:not(.next-table-selection) .next-icon:hover{color:#555}.next-table.is-wind .next-table-sort.next-table.is-wind .next-table-sort .current .next-icon{color:#0070cc}.next-table-expanded-ctrl .next-table-expand-fold .next--icon-remote,.next-table-expanded-ctrl .next-table-expand-fold:before,.next-table-expanded-ctrl .next-table-expand-unfold .next--icon-remote,.next-table-expanded-ctrl .next-table-expand-unfold:before{width:var(--table-expand-icon-size,16px);font-size:var(--table-expand-icon-size,16px)}.next-menu{padding:var(--menu-padding)}.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected{color:var(--menu-icon-selected-color)}.next-menu-item:focus-visible{background-color:var(--menu-background-hover,#f7f9fa)}.next-menu .next-menu-group-label{color:var(--menu-group-label-color,#888)}.next-search.next-normal .next-after .next-btn-normal,.next-search.next-search-normal .next-after .next-btn-normal{--btn-medium-min-width:32px}.next-form .next-form-item.next-left .next-form-item-label{padding-right:calc(var(--size-base, 4px)*4)}.next-form .next-form-item.next-top .next-form-item-label{line-height:calc(var(--size-base, 4px)*5);margin-bottom:var(--size-base,4px)}.next-form .next-form-item .next-form-item-label label[required]:before{display:inline}.next-form .next-form-item .next-form-item-label label[required]:after{display:none}.next-form .next-form-item-control .next-select{margin:0}.next-form .next-form-item-control .next-checkbox-group.next-checkbox-group-ver .next-checkbox-wrapper,.next-form .next-form-item-control .next-checkbox-group.next-checkbox-group-ver .next-radio-wrapper,.next-form .next-form-item-control .next-radio-group.next-radio-group-ver .next-checkbox-wrapper,.next-form .next-form-item-control .next-radio-group.next-radio-group-ver .next-radio-wrapper{margin-top:var(--size-base,4px);line-height:calc(var(--size-base, 4px)*5)}.next-radio-label{margin-left:calc(var(--size-base, 4px)*2)}.next-radio-wrapper{display:inline-block;vertical-align:middle;line-height:.5}.next-radio-wrapper .next-radio-inner{width:var(--radio-box-size,14px)!important;height:var(--radio-box-size,14px)!important}.next-radio-wrapper .next-radio-inner>.next-icon{display:inline-block;line-height:var(--radio-box-size,14px);position:static;margin:0;vertical-align:top}.next-radio-wrapper input[type=radio]{width:var(--radio-box-size,14px)!important;height:var(--radio-box-size,14px)!important}.next-radio-group.next-radio-button .next-radio-wrapper{text-align:center}.next-btn-secondary:focus-visible,.next-btn-secondary:hover{box-shadow:var(--btn-normal-hover-shadow)}.next-btn-secondary:active{box-shadow:var(--btn-normal-active-shadow)}.next-btn-secondary.next-btn-text:focus-visible,.next-btn-secondary.next-btn-text:hover{background-color:var(--btn-text-secondary-bg-hover)}.next-btn-secondary.next-btn-text:active{background-color:var(--btn-text-secondary-bg-active)}.next-btn-secondary.next-btn-text[disabled]{background-color:initial}.next-btn-secondary.next-btn-text.next-small{border-radius:var(--btn-size-s-corner,2px);padding:0 var(--btn-size-s-padding,8px);height:var(--btn-size-s-height,24px);font-size:var(--btn-size-s-font,12px);border-width:var(--btn-size-s-border-width,1px)}.next-btn-secondary.next-btn-text.next-medium{border-radius:var(--btn-size-m-corner,2px);padding:0 var(--btn-size-m-padding,16px);height:var(--btn-size-m-height,32px);font-size:var(--btn-size-m-font,12px);border-width:var(--btn-size-m-border-width,1px)}.next-btn-secondary.next-btn-text.next-large{border-radius:var(--btn-size-l-corner,2px);padding:0 var(--btn-size-l-padding,16px);height:var(--btn-size-l-height,36px);font-size:var(--btn-size-l-font,14px);border-width:var(--btn-size-l-border-width,1px)}.next-collapse-panel-expanded>.next-collapse-panel-content{padding-bottom:8px}.next-range-picker{width:auto}.next-range-picker-trigger-input.next-input{min-width:200px}.next-date-picker2,.next-range-picker2-panel{--color-brand1-9:#0064c8}.next-date-picker2 .next-date-picker2-input-range .next-input{box-shadow:none}.next-time-picker2,.next-time-picker2-panel{--color-brand1-1:#0064c8}.next-time-picker2 .next-time-picker2-menu-item.next-selected,.next-time-picker2-panel .next-time-picker2-menu-item.next-selected{color:#fff}.next-calendar2,.next-calendar2-panel{--color-brand1-9:#0064c8}.next-dialog-message.next-message{margin-top:var(--dialog-message-padding,0)}:root{--range-scale-item-position-top:initial;--range-size-m-scale-height:initial;--range-size-m-scale-item-border-width:initial;--timeline-item-done-background:initial;--timeline-item-done-border:initial;--switch-size-s-width:initial;--balloon-size-arrow-expose:initial;--pagination-item-hover-bg:initial;--active-shadow:initial;--active-transition:initial;--btn-font-weight:initial;--btn-pure-primary-bg-disabled:initial;--btn-pure-primary-color-disabled:initial;--btn-pure-primary-border-style:initial;--btn-primary-hover-shadow:initial;--btn-primary-active-shadow:initial;--btn-normal-hover-shadow:initial;--btn-normal-active-shadow:initial;--btn-text-secondary-bg-hover:initial;--btn-text-secondary-bg-active:initial;--btn-small-min-width:initial;--btn-small-cn-width:initial;--btn-medium-min-width:initial;--btn-medium-cn-width:initial;--btn-large-cn-width:initial;--tab-pure-text-color-hover:initial;--tab-pure-text-color-normal:initial;--tab-pure-hover-bg:initial;--search-normal-normal-btn-bg-color:initial;--search-btn-hover-bg:initial;--menu-icon-selected-color:initial;--select-selected-font-weight:initial;--tag-hover-color:initial;--tag-focus-color:initial;--tag-focus-bg:initial;--tag-hover-bg:initial;--number-picker-height-small:initial;--number-picker-height-medium:initial;--number-picker-height-large:initial;--cascader-menu-width:initial;--dialog-footer-align-default:initial;--message-line-height:initial;--balloon-arrow-border-radius:initial;--dialog-close-top-normal:initial;--select-hint-color:initial;--balloon-hover-bg:initial;--card-hover-shadow:initial;--card-background:initial;--card-hover-background:initial;--card-header-background:initial;--card-hover-border-color:initial;--card-corner:initial;--input-hint-color:initial;--input-hint-icon-color:initial;--input-hint-icon-hover-color:initial;--input-bg-color:initial;--dropdown-bg-color:initial;--tree-select-background:initial;--tree-node-normal-background:initial;--icon-font-path:"//at.alicdn.com/t/font_1435786_ccri5b3kw0n";--icon-content-undo-fill:"";--icon-content-info-for-component:"";--icon-content-questionnaire-line:"";--icon-content-accesskey-line:"";--icon-content-management-fill:"";--icon-content-hourglass-fill:"";--icon-content-chart-relation-fill:"";--icon-content-screen-code-line:"";--icon-content-map-line:"";--icon-content-display-arrow-right-line:"";--icon-content-database-plus-line:"";--icon-content-wangwang-line:"";--icon-content-alipay-fill:"";--icon-content-image-line:"";--icon-content-key-line:"";--icon-content-hatch-line:"";--icon-content-scan-line:"";--icon-content-balance-line:"";--icon-content-align-vertical-bottom-fill:"";--icon-content-align-horizontal-left-line:"";--icon-content-chart-bar-line:"";--icon-content-align-vertical-top-fill:"";--icon-content-pic-center-line:"";--icon-content-cloud-machine-line:"";--icon-content-chart-scatter-plot-line:"";--icon-content-all-line:"";--icon-content-border-verticle-line:"";--icon-content-cut-line:"";--icon-content-balance-fill:"";--icon-content-layer-line:"";--icon-content-box-line:"";--icon-content-chart-area-fill:"";--icon-content-mobile-check-line:"";--icon-content-pic-side-line:"";--icon-content-up-to-top-line:"";--icon-content-enlarge-line:"";--icon-content-double-up-line:"";--icon-content-page-first-line:"";--icon-content-naver-fill:"";--icon-content-sina-fill:"";--icon-content-cloud-upload-fill:"";--icon-content-stackoverflow-fill:"";--icon-content-youtube-fill:"";--icon-content-WeChat-fill:"";--icon-content-button-right-fill:"";--icon-content-page-last-line:"";--icon-content-authentication-line:"";--icon-content-dollar-line:"";--icon-content-applets-fill:"";--icon-content-hot-fill:"";--icon-content-server-fault-fill:"";--icon-content-gallery-view-line:"";--icon-content-authentication-fill:"";--icon-content-linkedin-fill:"";--icon-content-align-horizontal-left-fill:"";--icon-content-button-down-fill:"";--icon-content-button-up-fill:"";--icon-content-align-vertical-top-line:"";--icon-content-screen-arrow-left-line:"";--icon-content-googleplus-fill:"";--icon-content-play-outline-fill:"";--icon-content-comment-fill:"";--icon-content-document-task-line:"";--icon-content-calculator-fill:"";--icon-content-database-plus-fill:"";--icon-content-twitter-fill:"";--icon-content-chart-scatter-plot-fill:"";--icon-content-copy-line:"";--icon-content-border-verticle-fill:"";--icon-content-folders-line:"";--icon-content-check-line:"";--icon-content-star-fill:"";--icon-content-chevron-sort-line:"";--icon-content-user-certification-line:"";--icon-content-help-fill:"";--icon-content-like-fill:"";--icon-content-arrow-up-line:"";--icon-content-info-line:"";--icon-content-refresh-line:"";--icon-content-checkmark-line:"";--icon-content-list-line:"";--icon-content-calculator-line:"";--icon-content-minus-fill:"";--icon-content-forbidden-line:"";--icon-content-warning-line:"";--icon-content-caution-line:"";--icon-content-a-1688-fill:"";--icon-content-like-line:"";--icon-content-closemark-line:"";--icon-content-warning-fill:"";--icon-content-help-line:"";--icon-content-plus-fill:"";--icon-content-info-fill:"";--icon-content-caution-fill:"";--icon-content-ascending-line:"";--icon-content-double-down-line:"";--icon-content-arrow-down-line:"";--icon-content-arrow-left-line:"";--icon-content-double-left-line:"";--icon-content-button-sort-fill:"";--icon-content-down-to-bottom-line:"";--icon-content-star-line:"";--icon-content-forward-line:"";--icon-content-sort-line:"";--icon-content-enlarge-fill:"";--icon-content-double-right-line:"";--icon-content-GitHub-fill:"";--icon-content-expand-line:"";--icon-content-switch-line:"";--icon-content-descending-line:"";--icon-content-play-fill:"";--icon-content-back-line:"";--icon-content-stop-outline-line:"";--icon-content-email-fill:"";--icon-content-pause-outline-line:"";--icon-content-unlock-line:"";--icon-content-pause-fill:"";--icon-content-discount-line:"";--icon-content-sub-account-line:"";--icon-content-navigation-line:"";--icon-content-plus-circle-line:"";--icon-content-user-avatar-full-fill:"";--icon-content-close-line:"";--icon-content-notification-line:"";--icon-content-taobao-fill:"";--icon-content-notification-fill:"";--icon-content-flow-line:"";--icon-content-download-line:"";--icon-content-international-line:"";--icon-content-notification-off-fill:"";--icon-content-compress-fill:"";--icon-content-document-add-line:"";--icon-content-notification-off-line:"";--icon-content-lock-line:"";--icon-content-forbidden-fill:"";--icon-content-user-avatar-line:"";--icon-content-partner-line:"";--icon-content-et-line:"";--icon-content-international-fill:"";--icon-content-customer-sercive-line:"";--icon-content-user-follow-line:"";--icon-content-screen-arrow-right-line:"";--icon-content-more-line:"";--icon-content-close-fill:"";--icon-content-minus-circle-line:"";--icon-content-facebook-fill:"";--icon-content-check-fill:"";--icon-content-user-admin-line:"";--icon-content-collapse-line:"";--icon-content-bug-report-line:"";--icon-content-credits-line:"";--icon-content-view-off-fill:"";--icon-content-upload-line:"";--icon-content-setting-line:"";--icon-content-message-line:"";--icon-content-edit-line:"";--icon-content-message-unread-line:"";--icon-content-view-off-line:"";--icon-content-phonecall-line:"";--icon-content-edit-fill:"";--icon-content-document-download-line:"";--icon-content-order-unread-line:"";--icon-content-view-line:"";--icon-content-document-line:"";--icon-content-credits-fill:"";--icon-content-chart-pie-line:"";--icon-content-folder-line:"";--icon-content-time-fill:"";--icon-content-renew-line:"";--icon-content-order-line:"";--icon-content-cart-empty-line:"";--icon-content-zoom-out-line:"";--icon-content-play-outline-line:"";--icon-content-share-fill:"";--icon-content-time-line:"";--icon-content-arrow-right-line:"";--icon-content-button-left-fill:"";--icon-content-cart-with-line:"";--icon-content-user-profile-line:"";--icon-content-zoom-in-line:"";--icon-content-cart-fill:"";--icon-content-search-line:"";--icon-content-phonecall-off-line:"";--icon-content-location-line:"";--icon-content-stop-fill:"";--icon-content-user-avatar-fill:"";--icon-content-compress-line:"";--icon-content-share-line:"";--icon-content-trainin-line:"";--icon-content-paper-plane-fill:"";--icon-content-recharge-line:"";--icon-content-print-fill:"";--icon-content-scroll-mode-line:"";--icon-content-sort-circle-line:"";--icon-content-drag-line:"";--icon-content-arrow-circular-line:"";--icon-content-calendar-line:"";--icon-content-external-link-line:"";--icon-content-remote-control-line:"";--icon-content-backspace-fill:"";--icon-content-compass-line:"";--icon-content-cloud-download-fill:"";--icon-content-diagnose-line:"";--icon-content-management-line:"";--icon-content-display-arrow-left-line:"";--icon-content-resource-setting-fill:"";--icon-content-plus-line:"";--icon-content-minus-line:"";--icon-content-backspace-line:"";--icon-content-terminal-line:"";--icon-content-home-line:"";--icon-content-structured-data-line:"";--icon-content-step-mode-line:"";--icon-content-database-line:"";--icon-content-pic-center-fill:"";--icon-content-transanction-line:"";--icon-content-package-fill:"";--icon-content-inbox-line:"";--icon-content-align-horizontal-center-line:"";--icon-content-comment-line:"";--icon-content-pin-fill:"";--icon-content-gift-line:"";--icon-content-filter-line:"";--icon-content-flag-line:"";--icon-content-package-line:"";--icon-content-power-off-line:"";--icon-content-screen-check-line:"";--icon-content-cloud-download-line:"";--icon-content-wifi-line:"";--icon-content-screen-error-line:"";--icon-content-save-line:"";--icon-content-mobile-line:"";--icon-content-charging-pile-line:"";--icon-content-application-group-fill:"";--icon-content-outdent-line:"";--icon-content-screen-line:"";--icon-content-pin-fixed-fill:"";--icon-content-layer-fill:"";--icon-content-cloud-upload-line:"";--icon-content-screen-monitoring-line:"";--icon-content-tag-line:"";--icon-content-qrcode-line:"";--icon-content-pic-side-fill:"";--icon-content-mobile-error-line:"";--icon-content-paperclip-line:"";--icon-content-delete-line:"";--icon-content-indent-line:"";--icon-content-application-line:"";--icon-content-align-horizontal-right-fill:"";--icon-content-email-line:"";--icon-content-align-horizontal-center-fill:"";--icon-content-sql-line:"";--icon-content-dingtalk-fill:"";--icon-content-inbox-fill:"";--icon-content-folder-add-line:"";--icon-content-align-horizontal-right-line:"";--icon-content-align-vertical-bottom-line:"";--icon-content-connection-line:"";--icon-content-new-fill:"";--icon-content-hourglass-line:"";--icon-content-terminal-fill:"";--icon-content-alert-fill:"";--icon-content-rank-line:"";--icon-content-new-releases-fill:"";--icon-content-news-line:"";--icon-reset:"";--icon-xxxl:var(--s-16,64px);--icon-xxl:var(--s-12,48px);--icon-xl:var(--s-8,32px);--icon-l:var(--s-6,24px);--icon-m:var(--s-5,20px);--icon-s:var(--s-4,16px);--icon-xs:var(--s-3,12px);--icon-xxs:var(--s-2,8px);--icon-font-name:"icon";--icon-content-dashboard:"";--icon-content-list:"";--icon-content-detail:"";--icon-content-form:"";--icon-content-chart-pie:"";--icon-content-exit:"";--icon-content-eye-close:"";--icon-content-toggle-right:"";--icon-content-toggle-left:"";--icon-content-wind-loading:"";--icon-content-shoppingcart:"";--icon-content-Group:"";--icon-content-Group1:"";--icon-content-Xconsole:"";--icon-content-Directory-tree:"";--icon-content-cry1:"";--icon-content-email1:"";--icon-content-help1:"";--icon-content-refresh1:"";--icon-content-set1:"";--icon-content-account1:"";--icon-content-atm1:"";--icon-content-clock1:"";--icon-content-attachment1:"";--icon-content-filter1:"";--icon-content-download1:"";--icon-content-ellipsis1:"";--icon-content-favorites-filling1:"";--icon-content-smile1:"";--icon-content-arrow-right1:"";--icon-content-arrow-down1:"";--icon-content-arrow-up1:"";--icon-content-add1:"";--icon-content-minus1:"";--icon-content-edit1:"";--icon-content-error1:"";--icon-content-select1:"";--icon-content-ashbin1:"";--icon-content-calendar1:"";--icon-content-success1:"";--icon-content-warning1:"";--icon-content-search1:"";--icon-content-prompt1:"";--icon-content-sorting1:"";--icon-content-ascending1:"";--icon-content-descending1:"";--icon-content-upload1:"";--icon-content-success-filling1:"";--icon-content-picture1:"";--icon-content-close1:"";--icon-content-semi-select1:"";--icon-content-loading1:"";--icon-content-arrow-double-left1:"";--icon-content-arrow-double-right1:"";--icon-content-delete-filling1:"";--icon-content-arrow-left1:"";--icon-content-accesskeys:"";--icon-content-management:"";--icon-content-aliyun-logo:"";--icon-content-drag:"";--icon-content-ellipsis-vertical:"";--icon-content-gallery-view:"";--icon-content-WIFI:"";--icon-content-bug-report:"";--icon-content-qrcode:"";--icon-content-scan:"";--icon-content-cut:"";--icon-content-gift:"";--icon-content-link:"";--icon-content-poweroff:"";--icon-content-key:"";--icon-content-safety-certificate:"";--icon-content-supervise:"";--icon-content-tag-subscipt:"";--icon-content-chart-pie-alt:"";--icon-content-chart-relation:"";--icon-content-chart-scatter-plot:"";--icon-content-chart-area:"";--icon-content-chart-line:"";--icon-content-display-code:"";--icon-content-display-arrow-right:"";--icon-content-display-arrow-left:"";--icon-content-laptop-error:"";--icon-content-laptop-check:"";--icon-content-laptop:"";--icon-content-mobile-error:"";--icon-content-mobile-check:"";--icon-content-mobile-alt:"";--icon-content-aliwangwang:"";--icon-content-nail:"";--icon-content-nail-fixed:"";--icon-content-wind-edit:"";--icon-content-dollar:"";--icon-content-transanction:"";--icon-content-filter-fill:"";--icon-content-all-fill:"";--icon-content-databaseplus-fill:"";--icon-content-database-fill:"";--icon-content-commentlines-fill:"";--icon-content-commentdots-fill:"";--icon-content-paperplane-fill:"";--icon-content-eyeslash-fill:"";--icon-content-eye-fill:"";--icon-content-lightbulb-fill:"";--icon-content-flag-fill:"";--icon-content-tag-fill:"";--icon-content-position-fill:"";--icon-content-location-fill:"";--icon-content-map-fill:"";--icon-content-inboxin-fill:"";--icon-content-box-fill:"";--icon-content-databaseset-fill:"";--icon-content-layergroup-fill:"";--icon-content-cry-fill:"";--icon-content-smile-fill:"";--icon-content-unlock-fill:"";--icon-content-lock-fill:"";--icon-content-alignright-fill:"";--icon-content-alignleft-fill:"";--icon-content-borderbottom-fill:"";--icon-content-bordertop-fill:"";--icon-content-aligncenter-fill:"";--icon-content-borderverticle-fill:"";--icon-content-piccenter-fill:"";--icon-content-picside-fill:"";--icon-content-folderopen-fill:"";--icon-content-folderplus-fill:"";--icon-content-folder-fill:"";--icon-content-file-SQL:"";--icon-content-fileplus-fill:"";--icon-content-file-fill:"";--icon-content-copy-fill:"";--icon-content-headset-fill:"";--icon-content-phone-fill:"";--icon-content-pausecircle-fill:"";--icon-content-stopcircle-fill:"";--icon-content-playcircle-fill:"";--icon-content-delete-fill:"";--icon-content-picture-fill:"";--icon-content-mail-fill:"";--icon-content-heart-fill:"";--icon-content-collection-fill:"";--icon-content-user-group-fill:"";--icon-content-userplus-fill:"";--icon-content-user-fill:"";--icon-content-cog-fill:"";--icon-content-clock-fill:"";--icon-content-calendaralt-fill:"";--icon-content-clouddownload-fill:"";--icon-content-cloudupload-fill:"";--icon-content-exchange-fill:"";--icon-content-info-circle-fill:"";--icon-content-question-circle-fill:"";--icon-content-exclamationcircle-f:"";--icon-content-chart-bar:"";--icon-content-atm:"";--icon-content-email:"";--icon-content-account:"";--icon-content-attachment:"";--icon-content-filter:"";--icon-content-refresh:"";--icon-content-edit:"";--icon-content-set:"";--icon-content-download:"";--icon-content-upload:"";--icon-content-ashbin:"";--icon-content-calendar:"";--icon-content-picture:"";--icon-content-ellipsis:"";--icon-content-close:"";--icon-content-search:"";--icon-content-loading:"";--icon-content-semi-select:"";--icon-content-select:"";--icon-content-ascending:"";--icon-content-descending:"";--icon-content-sorting:"";--icon-content-switch:"";--icon-content-arrow-double-right:"";--icon-content-arrow-double-left:"";--icon-content-arrow-right:"";--icon-content-arrow-left:"";--icon-content-arrow-down:"";--icon-content-arrow-up:"";--icon-content-minus:"";--icon-content-add:"";--icon-content-favorites-filling:"";--icon-content-delete-filling:"";--icon-content-success-filling:"";--icon-content-clock:"";--icon-content-help:"";--icon-content-error:"";--icon-content-prompt:"";--icon-content-warning:"";--icon-content-success:"";--icon-content-cry:"";--icon-content-smile:"";--icon-content-minus-circle-fill:"";--icon-content-plus-circle-fill:"";--icon-content-times-circle-fill:"";--icon-content-check-circle-fill:"";--icon-content-compressalt-fill:"";--icon-content-expandalt-fill:"";--icon-content-wind-filter:"";--icon-content-all:"";--icon-content-database-plus:"";--icon-content-database:"";--icon-content-comment-lines:"";--icon-content-comment-dots:"";--icon-content-paper-plane:"";--icon-content-eye-slash:"";--icon-content-lightbulb:"";--icon-content-flag:"";--icon-content-tag:"";--icon-content-position:"";--icon-content-location:"";--icon-content-map:"";--icon-content-inbox-in:"";--icon-content-box:"";--icon-content-database-set:"";--icon-content-layer-group:"";--icon-content-wind-cry:"";--icon-content-wind-smile:"";--icon-content-align-right:"";--icon-content-align-left:"";--icon-content-border-bottom:"";--icon-content-border-top:"";--icon-content-align-center:"";--icon-content-border-verticle:"";--icon-content-pic-center:"";--icon-content-pic-side:"";--icon-content-folder-plus:"";--icon-content-folder:"";--icon-content-file-SQL1:"";--icon-content-file-plus:"";--icon-content-file:"";--icon-content-headset:"";--icon-content-phone:"";--icon-content-pausecircle:"";--icon-content-stopcircle:"";--icon-content-playcircle:"";--icon-content-delete:"";--icon-content-wind-picture:"";--icon-content-mail:"";--icon-content-like:"";--icon-content-collection:"";--icon-content-user-group:"";--icon-content-account-plus:"";--icon-content-wind-account:"";--icon-content-cog:"";--icon-content-wind-clock:"";--icon-content-calendar-alt:"";--icon-content-clouddownload:"";--icon-content-cloudupload:"";--icon-content-exchange:"";--icon-content-info-circle:"";--icon-content-question-circle:"";--icon-content-exclamation-circle:"";--icon-content-minus-circle:"";--icon-content-plus-circle:"";--icon-content-times-circle:"";--icon-content-check-circle:"";--icon-content-compress-alt:"";--icon-content-expand-alt:"";--icon-content-ban:"";--icon-content-wind-minus:"";--icon-content-plus:"";--icon-content-times:"";--icon-content-check:"";--icon-content-search-minus:"";--icon-content-search-plus:"";--icon-content-wind-search:"";--icon-content-reply:"";--icon-content-undo:"";--icon-content-redo:"";--icon-content-external-link:"";--icon-content-arrows-alt:"";--icon-content-indent:"";--icon-content-outdent:"";--icon-content-wind-sorting:"";--icon-content-wind-switch:"";--icon-content-wind-ascending:"";--icon-content-wind-descending:"";--icon-content-wind-download:"";--icon-content-wind-upload:"";--icon-content-arrow-to-bottom:"";--icon-content-arrow-to-top:"";--icon-content-long-arrow-down:"";--icon-content-long-arrow-up:"";--icon-content-wind-arrow-right:"";--icon-content-wind-arrow-left:"";--icon-content-sort:"";--icon-content-sort-down:"";--icon-content-sort-up:"";--icon-content-caret-right:"";--icon-content-caret-left:"";--icon-content-arrows-v:"";--icon-content-angle-double-down:"";--icon-content-angle-double-up:"";--icon-content-angle-double-right:"";--icon-content-angle-double-left:"";--icon-content-angle-down:"";--icon-content-angle-up:"";--icon-content-angle-right:"";--icon-content-angle-left:"";--icon-content-paperclip:"";--icon-content-connection:"";--icon-content-training:"";--icon-content-process:"";--icon-content-news:"";--icon-content-save:"";--icon-content-print:"";--icon-content-new-releases:"";--icon-content-release:"";--icon-content-wind-warning:"";--icon-content-backspace:"";--icon-content-gem:"";--icon-content-integral:"";--icon-content-star-circle1:"";--icon-content-user-circle:"";--icon-content-cloud-machine-fill:"";--icon-content-cloud-machine:"";--icon-content-terminal:"";--icon-content-shopping-cart:"";--icon-content-folder-open:"";--icon-content-resource:"";--icon-content-rank:"";--icon-content-sync-alt:"";--icon-content-compass:"";--icon-content-arrow-alt-from-top:"";--icon-content-arrow-alt-from-bottom:"";--icon-content-menu:"";--icon-content-icon-drag:"";--icon-content-share:"";--icon-content-arrow-sortdown-smal:"";--icon-content-minus-square-fill:"";--icon-content-plus-square-fill:"";--icon-content-minus-square:"";--icon-content-plus-square:"";--icon-content-stepmode:"";--icon-content-scrollingmode:"";--icon-content-HOT:"";--icon-content-NEW:"";--icon-content-waiting-fill:"";--icon-content-waiting:"";--icon-content-right-arrow-rect:"";--icon-content-left-arrow-rect:"";--icon-content-bell:"";--icon-content-structured-data:"";--icon-content-vector:"";--icon-content-home:"";--icon-content-monitoring:"";--icon-content-diagnose:"";--icon-content-add-subset:"";--icon-content-lock:"";--icon-content-unlock:"";--icon-content-eye:"";--icon-content-copy:"";--line-dotted:dotted;--line-dashed:dashed;--line-solid:solid;--line-zero:0px;--line-3:3px;--line-2:2px;--line-1:1px;--popup-global-shadow:var(--shadow-2-down,0px 2px 8px 0px rgba(0,0,0,0.13));--popup-global-corner:var(--corner-1,0px);--popup-global-border-color:var(--color-line1-2,#c9c9c9);--popup-global-border-style:var(--line-solid,solid);--popup-global-border-width:var(--line-zero,0px);--popup-local-corner:var(--corner-1,0px);--popup-local-border-style:var(--line-solid,solid);--popup-local-border-width:var(--line-1,1px);--popup-local-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--popup-local-border-color:var(--color-line1-5,#ebebeb);--mask-background:var(--color-black,#000);--mask-opacity:0.45;--form-element-large-corner:var(--corner-1,0px);--form-element-medium-corner:var(--corner-1,0px);--form-element-small-corner:var(--corner-1,0px);--form-element-large-icon-size:var(--icon-s,16px);--form-element-medium-icon-size:var(--icon-xs,12px);--form-element-small-icon-size:var(--icon-xs,12px);--form-element-large-preview-font-size:var(--font-size-subhead,14px);--form-element-large-preview-label-font-size:var(--font-size-subhead,14px);--form-element-medium-preview-font-size:var(--font-size-body-1,12px);--form-element-medium-preview-label-font-size:var(--font-size-body-1,12px);--form-element-small-preview-font-size:var(--font-size-caption,12px);--form-element-small-preview-label-font-size:var(--font-size-caption,12px);--form-element-large-preview-height:var(--s-10,40px);--form-element-medium-preview-height:var(--s-7,28px);--form-element-small-preview-height:var(--s-5,20px);--form-element-medium-font-size:var(--font-size-body-1,12px);--form-element-small-font-size:var(--font-size-caption,12px);--form-element-large-font-size:var(--font-size-body-2,14px);--form-element-large-height:var(--s-9,36px);--form-element-medium-height:var(--s-8,32px);--form-element-small-height:var(--s-6,24px);--s-50:200px;--s-49:196px;--s-48:192px;--s-47:188px;--s-46:184px;--s-45:180px;--s-44:176px;--s-43:172px;--s-42:168px;--s-41:164px;--s-40:160px;--s-39:156px;--s-38:152px;--s-37:148px;--s-36:144px;--s-35:140px;--s-34:136px;--s-33:132px;--s-32:128px;--s-31:124px;--s-30:120px;--s-29:116px;--s-28:112px;--s-27:108px;--s-26:104px;--s-25:100px;--s-24:96px;--s-23:92px;--s-22:88px;--s-21:84px;--s-20:80px;--s-19:76px;--s-18:72px;--s-17:68px;--s-16:64px;--s-15:60px;--s-14:56px;--s-13:52px;--s-12:48px;--s-11:44px;--s-10:40px;--s-9:36px;--s-8:32px;--s-7:28px;--s-6:24px;--s-5:20px;--s-4:16px;--s-3:12px;--s-2:8px;--s-1:4px;--s-zero:0px;--size-base:4px;--shadow-3-left:-4px 0px 16px 0px rgba(0,0,0,0.21);--shadow-3-down:0px 4px 16px 0px rgba(0,0,0,0.21);--shadow-3-right:4px 0px 16px 0px rgba(0,0,0,0.21);--shadow-3-up:0px -4px 16px 0px rgba(0,0,0,0.21);--shadow-3:4px 4px 16px 0px rgba(0,0,0,0.21);--shadow-2-left:-2px 0px 8px 0px rgba(0,0,0,0.13);--shadow-2-down:0px 2px 8px 0px rgba(0,0,0,0.13);--shadow-2-right:2px 0px 8px 0px rgba(0,0,0,0.13);--shadow-2-up:0px -2px 8px 0px rgba(0,0,0,0.13);--shadow-2:2px 2px 8px 0px rgba(0,0,0,0.13);--shadow-1-left:-1px 0px 4px 0px rgba(0,0,0,0.13);--shadow-1-down:0px 1px 4px 0px rgba(0,0,0,0.13);--shadow-1-right:1px 0px 4px 0px rgba(0,0,0,0.13);--shadow-1-up:0px -1px 4px 0px rgba(0,0,0,0.13);--shadow-1:1px 1px 4px 0px rgba(0,0,0,0.13);--shadow-zero:none;--shadow-spread-sd3:0;--shadow-spread-sd2:0;--shadow-spread-sd1:0;--shadow-blur-sd3:16;--shadow-blur-sd2:8;--shadow-blur-sd1:4;--shadow-color-sd3:var(--color-black,#000);--shadow-color-sd2:var(--color-black,#000);--shadow-color-sd1:var(--color-black,#000);--shadow-opacity-sd3:0.21;--shadow-opacity-sd2:0.13;--shadow-opacity-sd1:0.13;--shadow-distance-sd3y:4;--shadow-distance-sd2y:2;--shadow-distance-sd1y:1;--shadow-distance-sd3:4;--shadow-distance-sd2:2;--shadow-distance-sd1:1;--shadow-sides-left:"left";--shadow-sides-down:"down";--shadow-sides-right:"right";--shadow-sides-up:"up";--shadow-sides-base:"base";--font-weight-ultra-bold:900;--font-weight-extra-bold:800;--font-weight-semi-bold:600;--font-weight-medium:500;--font-weight-light:300;--font-weight-thin:200;--font-family-base:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;--font-lineheight-5:2;--font-lineheight-4:1.8;--font-weight-3:bold;--font-weight-2:normal;--font-weight-1:lighter;--font-size-caption:12px;--font-size-body-1:12px;--font-size-body-2:14px;--font-size-subhead:14px;--font-size-title:16px;--font-size-headline:18px;--font-size-display-1:24px;--font-size-display-2:28px;--font-size-display-3:32px;--font-lineheight-3:1.6;--font-lineheight-2:1.5;--font-lineheight-1:1;--corner-zero:0;--corner-semicircle:500px;--corner-circle:50%;--corner-4:16px;--corner-3:12px;--corner-0:0px;--corner-2:2px;--corner-1:0px;--color-data1-8:#18b1f7;--color-data1-7:#4dde6d;--color-data1-6:#ffd74d;--color-data1-5:#ff934d;--color-data1-4:#ff445f;--color-data1-3:#ae66fc;--color-data1-2:#506fed;--color-data1-1:#00dccd;--color-brand1-2:#e0f1ff;--color-fill1-9:#1c1c1c;--color-fill1-8:#737373;--color-line1-5:#ebebeb;--color-brand1-10:#001a2f;--color-brand1-8:#00457e;--color-brand1-7:#005aa5;--color-brand1-5:#43aaff;--color-brand1-4:#7ec5ff;--color-brand1-3:#b8dfff;--color-brand2-6:#ff6a00;--color-brand7-9:#2d559c;--color-brand7-6:#4f74b3;--color-brand7-4:#a9bad0;--color-brand7-5:#657c99;--color-text1-5:#333;--color-success-5:#acdcba;--color-fill1-7:#a8a8a8;--color-fill1-6:#c9c9c9;--color-fill1-5:#dedede;--color-text1-4:#111;--color-text1-3:#555;--color-text1-2:#888;--color-text1-1:#c1c1c1;--color-fill1-4:#ebebeb;--color-fill1-3:#f5f5f5;--color-fill1-2:#f7f7f7;--color-fill1-1:#fafafa;--color-line1-4:#737373;--color-line1-3:#a8a8a8;--color-line1-2:#c9c9c9;--color-line1-1:#dedede;--color-other-3:#fff;--color-other-2:#fff;--color-other-1:#0070cc;--color-link-3:#0070cc;--color-link-2:#0070cc;--color-link-1:#0070cc;--color-help-4:#333;--color-help-3:#888;--color-help-2:#c9c9c9;--color-help-1:#f5f5f5;--color-error-4:#b82920;--color-error-3:#d93026;--color-error-2:#ffc4c0;--color-error-1:#fcebea;--color-warning-4:#f1a600;--color-warning-3:#ffc440;--color-warning-2:#ffe2a2;--color-warning-1:#fff7db;--color-notice-4:#005aa5;--color-notice-3:#0070cc;--color-notice-2:#a0cded;--color-notice-1:#e5f3ff;--color-success-4:#176e30;--color-success-3:#1e8e3e;--color-success-2:#acdcba;--color-success-1:#dff4e5;--color-transparent:transparent;--color-black:#000;--color-white:#fff;--color-brand1-9:#003a6a;--color-brand1-6:#0070cc;--color-brand1-1:#f3faff;--balloon-primary-color:var(--color-warning-3,#ffc440);--balloon-size-padding-top:var(--s-2,8px);--balloon-size-padding-closable-right:var(--s-10,40px);--balloon-size-close-margin-top:var(--s-2,8px);--balloon-size-close-margin-right:var(--s-3,12px);--balloon-size-arrow-size:var(--s-2,8px);--balloon-tooltip-size-padding-right:var(--s-4,16px);--balloon-tooltip-size-padding-left:var(--s-4,16px);--balloon-normal-color-border:var(--color-line1-5,#ebebeb);--balloon-normal-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--balloon-normal-color:var(--color-text1-5,#333);--balloon-primary-color-bg:var(--color-white,#fff);--balloon-primary-color-border:var(--color-line1-5,#ebebeb);--balloon-tooltip-color-bg:var(--color-white,#fff);--balloon-tooltip-color-border:var(--color-line1-5,#ebebeb);--balloon-tooltip-color:var(--color-text1-5,#333);--balloon-normal-color-bg:var(--color-white,#fff);--balloon-size-max-width:300px;--balloon-size-padding-right:var(--s-4,16px);--balloon-content-font-size:var(--font-size-body-1,12px);--balloon-content-font-weight:var(--font-weight-2,normal);--balloon-normal-border-width:var(--line-1,1px);--balloon-primary-border-width:var(--line-1,1px);--balloon-tooltip-border-width:var(--line-1,1px);--balloon-tooltip-content-font-size:var(--font-size-body-1,12px);--balloon-tooltip-content-font-weight:var(--font-weight-2,normal);--balloon-size-close:var(--icon-xs,12px);--balloon-size-arrow-margin:var(--s-3,12px);--balloon-tooltip-size-padding-top:var(--s-2,8px);--balloon-tooltip-size-padding-bottom:var(--s-2,8px);--balloon-border-style:var(--line-solid,solid);--balloon-corner:var(--corner-1,0px);--balloon-normal-color-close:var(--color-text1-2,#888);--balloon-normal-color-close-hover:var(--color-text1-3,#555);--balloon-primary-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--balloon-primary-color-close:var(--color-text1-2,#888);--balloon-primary-color-close-hover:var(--color-text1-4,#111);--balloon-tooltip-shadow:var(--shadow-zero,none);--balloon-tooltip-border-style:var(--line-solid,solid);--btn-size-s-height:var(--s-6,24px);--btn-size-s-icon-size:var(--icon-xs,12px);--btn-size-s-icon-margin:var(--s-2,8px);--btn-size-m-height:var(--s-8,32px);--btn-size-m-padding:var(--s-4,16px);--btn-size-m-icon-size:var(--icon-xs,12px);--btn-size-m-icon-margin:var(--s-2,8px);--btn-size-l-height:var(--s-9,36px);--btn-size-l-padding:var(--s-6,24px);--btn-size-l-font:var(--font-size-body-2,14px);--btn-size-l-icon-size:var(--icon-s,16px);--btn-size-l-icon-margin:var(--s-2,8px);--btn-pure-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-border-color-disabled:var(--color-transparent,transparent);--btn-pure-normal-color:var(--color-text1-5,#333);--btn-pure-normal-color-hover:var(--color-text1-5,#333);--btn-pure-normal-bg:var(--color-fill1-1,#fafafa);--btn-pure-normal-bg-hover:var(--color-white,#fff);--btn-pure-normal-border-color:var(--color-line1-1,#dedede);--btn-pure-normal-border-color-hover:var(--color-line1-4,#737373);--btn-pure-secondary-color:var(--color-brand1-6,#0070cc);--btn-pure-secondary-bg:var(--color-transparent,transparent);--btn-pure-secondary-bg-hover:var(--color-brand1-6,#0070cc);--btn-pure-secondary-border-color:var(--color-brand1-6,#0070cc);--btn-pure-secondary-border-color-hover:var(--color-transparent,transparent);--btn-pure-primary-bg:var(--color-brand1-6,#0070cc);--btn-pure-primary-bg-hover:var(--color-brand1-7,#005aa5);--btn-ghost-dark-bg-hover-opacity:0.29;--btn-ghost-dark-color-disabled-opacity:0.25;--btn-ghost-dark-border-color-disabled-opacity:0.15;--btn-ghost-light-color:var(--color-brand1-6,#0070cc);--btn-ghost-light-border-color:var(--color-brand1-6,#0070cc);--btn-ghost-light-bg:var(--color-white,#fff);--btn-ghost-light-bg-opacity:1;--btn-ghost-light-color-hover:var(--color-white,#fff);--btn-ghost-light-border-color-hover:var(--color-transparent,transparent);--btn-ghost-light-bg-hover-rgb:var(--color-brand1-7,#005aa5);--btn-ghost-light-bg-hover-opacity:1;--btn-ghost-light-color-disabled-rgb:var(--color-text1-1,#c1c1c1);--btn-ghost-light-color-disabled-opacity:1;--btn-ghost-light-bg-disabled:var(--color-fill1-2,#f7f7f7);--btn-ghost-light-border-color-disabled-rgb:var(--color-white,#fff);--btn-ghost-light-border-color-disabled-opacity:1;--btn-warning-primary-border-color:var(--color-error-3,#d93026);--btn-warning-primary-color-disabled:var(--color-text1-1,#c1c1c1);--btn-warning-primary-border-color-disabled:var(--color-white,#fff);--btn-warning-primary-bg-disabled:var(--color-fill1-2,#f7f7f7);--btn-warning-normal-border-color-hover:var(--color-error-4,#b82920);--btn-warning-normal-bg:var(--color-transparent,transparent);--btn-warning-normal-bg-hover:var(--color-error-4,#b82920);--btn-warning-normal-color-disabled:var(--color-text1-1,#c1c1c1);--btn-warning-normal-border-color-disabled:var(--color-white,#fff);--btn-warning-normal-bg-disabled:var(--color-fill1-2,#f7f7f7);--btn-text-primary-color-hover:var(--color-link-3,#0070cc);--btn-text-secondary-color:var(--color-text1-3,#555);--btn-text-secondary-color-hover:var(--color-text1-2,#888);--btn-text-normal-color:var(--color-text1-5,#333);--btn-text-normal-color-hover:var(--color-text1-3,#555);--btn-pure-normal-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-normal-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-normal-border-color-disabled:var(--color-transparent,transparent);--btn-pure-normal-color-active:var(--color-text1-5,#333);--btn-pure-normal-bg-active:var(--color-white,#fff);--btn-pure-normal-border-color-active:var(--color-line1-4,#737373);--btn-pure-secondary-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-secondary-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-secondary-border-color-disabled:var(--color-transparent,transparent);--btn-pure-secondary-bg-active:var(--color-brand1-6,#0070cc);--btn-pure-secondary-border-color-active:var(--color-transparent,transparent);--btn-pure-primary-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-primary-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-primary-border-color-disabled:var(--color-transparent,transparent);--btn-pure-primary-bg-active:var(--color-brand1-7,#005aa5);--btn-warning-normal-border-color-active:var(--color-error-4,#b82920);--btn-warning-normal-bg-active:var(--color-error-4,#b82920);--btn-shadow:var(--shadow-zero,none);--btn-shadow-hover:var(--shadow-zero,none);--btn-size-s-padding:var(--s-2,8px);--btn-size-s-border-width:var(--line-1,1px);--btn-size-s-font:var(--font-size-caption,12px);--btn-size-s-icon-split-size:var(--icon-xs,12px);--btn-size-s-corner:var(--corner-1,0px);--btn-size-m-border-width:var(--line-1,1px);--btn-size-m-font:var(--font-size-body-1,12px);--btn-size-m-icon-split-size:var(--icon-xs,12px);--btn-size-m-corner:var(--corner-1,0px);--btn-size-l-border-width:var(--line-1,1px);--btn-size-l-icon-split-size:var(--icon-s,16px);--btn-size-l-corner:var(--corner-1,0px);--btn-pure-normal-border-style:var(--line-solid,solid);--btn-pure-secondary-color-hover:var(--color-white,#fff);--btn-pure-secondary-color-active:var(--color-white,#fff);--btn-pure-secondary-border-style:var(--line-solid,solid);--btn-pure-primary-color:var(--color-white,#fff);--btn-pure-primary-color-hover:var(--color-white,#fff);--btn-pure-primary-color-active:var(--color-white,#fff);--btn-pure-primary-border-color:var(--color-transparent,transparent);--btn-pure-primary-border-color-hover:var(--color-transparent,transparent);--btn-pure-primary-border-color-active:var(--color-transparent,transparent);--btn-pure-primary-border-style:var(--line-solid,solid);--btn-ghost-border-style:var(--line-solid,solid);--btn-ghost-dark-color:var(--color-white,#fff);--btn-ghost-dark-border-color:var(--color-white,#fff);--btn-ghost-dark-color-hover:var(--color-white,#fff);--btn-ghost-dark-bg:var(--color-transparent,transparent);--btn-ghost-dark-bg-opacity:0;--btn-ghost-dark-bg-hover-rgb:var(--color-white,#fff);--btn-ghost-dark-border-color-hover:var(--color-white,#fff);--btn-ghost-dark-color-disabled-rgb:var(--color-white,#fff);--btn-ghost-dark-bg-disabled:var(--color-transparent,transparent);--btn-ghost-dark-border-color-disabled-rgb:var(--color-white,#fff);--btn-warning-border-style:var(--line-solid,solid);--btn-warning-primary-color:var(--color-white,#fff);--btn-warning-primary-color-hover:var(--color-white,#fff);--btn-warning-primary-color-active:var(--color-white,#fff);--btn-warning-primary-border-color-hover:var(--color-error-4,#b82920);--btn-warning-primary-border-color-active:var(--color-error-4,#b82920);--btn-warning-primary-bg:var(--color-error-3,#d93026);--btn-warning-primary-bg-hover:var(--color-error-4,#b82920);--btn-warning-primary-bg-active:var(--color-error-4,#b82920);--btn-warning-normal-color:var(--color-error-3,#d93026);--btn-warning-normal-color-hover:var(--color-white,#fff);--btn-warning-normal-color-active:var(--color-white,#fff);--btn-warning-normal-border-color:var(--color-error-3,#d93026);--btn-text-primary-color:var(--color-link-1,#0070cc);--btn-text-disabled-color:var(--color-text1-1,#c1c1c1);--btn-text-loading-color:var(--color-text1-4,#111);--btn-text-size-s-height:var(--s-4,16px);--btn-text-size-s-font:var(--font-size-caption,12px);--btn-text-icon-size-s:var(--icon-s,16px);--btn-text-icon-s-margin:var(--s-1,4px);--btn-text-size-m-height:var(--s-5,20px);--btn-text-size-m-font:var(--font-size-body-1,12px);--btn-text-icon-size-m:var(--icon-m,20px);--btn-text-icon-m-margin:var(--s-1,4px);--btn-text-size-l-height:var(--s-6,24px);--btn-text-size-l-font:var(--font-size-body-2,14px);--btn-text-icon-size-l:var(--icon-l,24px);--btn-text-icon-l-margin:var(--s-1,4px);--calendar-card-table-cell-font-size:var(--font-size-body-1,12px);--calendar-panel-header-background:var(--color-white,#fff);--calendar-btn-arrow-size:var(--icon-s,16px);--calendar-btn-arrow-color:var(--color-text1-2,#888);--calendar-btn-arrow-color-hover:var(--color-text1-3,#555);--calendar-btn-date-color:var(--color-text1-3,#555);--calendar-fullscreen-table-head-color:var(--color-text1-2,#888);--calendar-fullscreen-table-cell-normal-color:var(--color-text1-5,#333);--calendar-fullscreen-table-cell-normal-border-color:var(--color-line1-1,#dedede);--calendar-fullscreen-table-cell-hover-background:var(--color-brand1-1,#f3faff);--calendar-fullscreen-table-cell-hover-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-hover-border-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-select-background:var(--color-brand1-1,#f3faff);--calendar-fullscreen-table-cell-select-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-select-border-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-current-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-current-border-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-disabled-background:var(--color-fill1-2,#f7f7f7);--calendar-card-table-cell-hover-background:var(--color-brand1-1,#f3faff);--calendar-card-table-cell-hover-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-hover-border-color:var(--color-transparent,transparent);--calendar-card-table-cell-select-background:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-select-border-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-disabled-background:var(--color-fill1-2,#f7f7f7);--calendar-card-table-cell-disabled-border-color:var(--color-transparent,transparent);--calendar-card-table-cell-current-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-current-border-color:var(--color-line1-1,#dedede);--calendar-card-table-cell-inrange-background:var(--color-brand1-1,#f3faff);--calendar-card-table-cell-inrange-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-inrange-border-color:var(--color-transparent,transparent);--calendar-panel-header-border-bottom-color:var(--color-white,#fff);--calendar-btn-date-color-hover:var(--color-brand1-6,#0070cc);--calendar-fullscreen-header-margin-bottom:var(--s-2,8px);--calendar-fullscreen-table-head-font-weight:var(--font-weight-3,bold);--calendar-fullscreen-table-head-font-size:var(--font-size-subhead,14px);--calendar-fullscreen-table-head-padding-r:var(--s-3,12px);--calendar-fullscreen-table-head-padding-b:var(--s-1,4px);--calendar-fullscreen-table-cell-font-size:var(--font-size-body-2,14px);--calendar-fullscreen-table-cell-boder-top-width:var(--line-2,2px);--calendar-fullscreen-table-cell-margin-tb:var(--s-zero,0px);--calendar-fullscreen-table-cell-margin-lr:var(--s-1,4px);--calendar-fullscreen-table-cell-padding-tb:var(--s-1,4px);--calendar-fullscreen-table-cell-padding-lr:var(--s-2,8px);--calendar-fullscreen-table-cell-min-height:var(--s-20,80px);--calendar-fullscreen-table-cell-normal-background:var(--color-white,#fff);--calendar-fullscreen-table-cell-select-font-weight:var(--font-weight-3,bold);--calendar-fullscreen-table-cell-current-background:var(--color-white,#fff);--calendar-fullscreen-table-cell-current-font-weight:var(--font-weight-3,bold);--calendar-fullscreen-table-cell-other-background:var(--color-transparent,transparent);--calendar-fullscreen-table-cell-other-color:var(--color-text1-1,#c1c1c1);--calendar-fullscreen-table-cell-other-border-color:var(--color-transparent,transparent);--calendar-fullscreen-table-cell-disabled-color:var(--color-text1-1,#c1c1c1);--calendar-fullscreen-table-cell-disabled-border-color:var(--color-line1-1,#dedede);--calendar-card-header-margin-bottom:var(--s-2,8px);--calendar-card-table-head-font-size:var(--font-size-caption,12px);--calendar-card-table-head-font-weight:var(--font-weight-2,normal);--calendar-card-table-cell-date-border-radius:var(--corner-1,0px);--calendar-card-table-cell-date-width:var(--s-6,24px);--calendar-card-table-cell-date-height:var(--s-6,24px);--calendar-card-table-cell-month-border-radius:var(--corner-1,0px);--calendar-card-table-cell-month-width:var(--s-15,60px);--calendar-card-table-cell-month-height:var(--s-6,24px);--calendar-card-table-cell-year-border-radius:var(--corner-1,0px);--calendar-card-table-cell-year-width:var(--s-12,48px);--calendar-card-table-cell-year-height:var(--s-6,24px);--calendar-card-table-head-color:var(--color-text1-2,#888);--calendar-card-table-cell-corner:var(--corner-zero,0);--calendar-card-table-cell-normal-background:var(--color-white,#fff);--calendar-card-table-cell-normal-color:var(--color-text1-3,#555);--calendar-card-table-cell-normal-border-color:var(--color-white,#fff);--calendar-card-table-cell-select-color:var(--color-white,#fff);--calendar-card-table-cell-select-font-weight:var(--font-weight-3,bold);--calendar-card-table-cell-other-background:var(--color-white,#fff);--calendar-card-table-cell-other-color:var(--color-text1-1,#c1c1c1);--calendar-card-table-cell-other-border-color:var(--color-white,#fff);--calendar-card-table-cell-disabled-color:var(--color-text1-1,#c1c1c1);--calendar-card-table-cell-current-background:var(--color-white,#fff);--calendar-card-table-cell-current-font-weight:var(--font-weight-3,bold);--calendar-panel-header-margin-bottom:var(--s-2,8px);--calendar-panel-header-height:var(--s-8,32px);--calendar-panel-header-border-bottom-width:var(--line-1,1px);--calendar-btn-date-font-weight:var(--font-weight-3,bold);--calendar-btn-date-margin-lr:var(--s-1,4px);--calendar-btn-arrow-single-offset-lr:var(--s-7,28px);--calendar-btn-arrow-double-offset-lr:var(--s-2,8px);--calendar-btn-arrow-content-prev:var(--icon-content-arrow-left,"");--calendar-btn-arrow-content-next:var(--icon-content-arrow-right,"");--calendar-btn-arrow-content-prev-super:var(--icon-content-arrow-double-left,"");--calendar-btn-arrow-content-next-super:var(--icon-content-arrow-double-right,"");--breadcrumb-text-color:var(--color-text1-5,#333);--breadcrumb-text-current-color:var(--color-text1-2,#888);--breadcrumb-text-keyword-color:var(--color-link-1,#0070cc);--breadcrumb-icon-color:var(--color-text1-2,#888);--breadcrumb-text-color-hover:var(--color-link-3,#0070cc);--breadcrumb-size-m-font-size:var(--font-size-caption,12px);--breadcrumb-size-ellipsis-font-size:var(--font-size-caption,12px);--breadcrumb-size-m-icon-size:var(--icon-xxs,8px);--breadcrumb-size-m-icon-margin:var(--s-2,8px);--breadcrumb-text-current-weight:var(--font-weight-2,normal);--breadcrumb-text-ellipsis-color:var(--color-text1-3,#555);--breadcrumb-icon-sep-content:var(--icon-content-arrow-right,"");--breadcrumb-text-current-color-hover:var(--color-brand1-6,#0070cc);--breadcrumb-text-keyword-color-hover:var(--color-brand1-6,#0070cc);--checkbox-size:var(--s-3,12px);--checkbox-circle-size:var(--icon-xs,12px);--checkbox-border-color:var(--color-line1-1,#dedede);--checkbox-hovered-border-color:var(--color-line1-4,#737373);--checkbox-disabled-border-color:var(--color-line1-1,#dedede);--checkbox-checked-bg-color:var(--color-brand1-6,#0070cc);--checkbox-hovered-bg-color:var(--color-transparent,transparent);--checkbox-checked-hovered-bg-color:var(--color-brand1-7,#005aa5);--checkbox-disabled-bg-color:var(--color-fill1-4,#ebebeb);--checkbox-border-radius:var(--corner-1,0px);--checkbox-border-width:var(--line-1,1px);--checkbox-shadow:var(--shadow-zero,none);--checkbox-checked-border-color:var(--color-transparent,transparent);--checkbox-checked-hovered-border-color:var(--color-transparent,transparent);--checkbox-checked-circle-color:var(--color-white,#fff);--checkbox-label-color:var(--color-text1-4,#111);--checkbox-disabled-label-color:var(--color-text1-1,#c1c1c1);--checkbox-disabled-circle-color:var(--color-text1-1,#c1c1c1);--checkbox-checked-hovered-circle-color:var(--color-white,#fff);--checkbox-bg-color:var(--color-white,#fff);--checkbox-font-size:var(--font-size-body-1,12px);--checkbox-margin-left:var(--s-1,4px);--checkbox-semi-select-icon-content:var(--icon-content-semi-select,"");--checkbox-select-icon-content:var(--icon-content-select,"");--cascader-menu-icon-expand-size:var(--icon-xs,12px);--cascader-menu-border-color:var(--color-line1-1,#dedede);--cascader-menu-icon-expand-color:var(--color-text1-2,#888);--cascader-menu-icon-hover-expand-color:var(--color-text1-3,#555);--cascader-menu-item-expanded-color:var(--color-text1-5,#333);--cascader-menu-border-width:var(--line-1,1px);--cascader-menu-width:var(--s-25,100px);--cascader-menu-height:var(--s-48,192px);--cascader-menu-border-radius:var(--corner-1,0px);--cascader-menu-item-expanded-background-color:var(--color-fill1-2,#f7f7f7);--card-head-bottom-border-width:var(--line-1,1px);--card-head-main-height:var(--s-6,24px);--card-head-main-margin-top:var(--s-3,12px);--card-head-main-margin-bottom:var(--s-3,12px);--card-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--card-border-color:var(--color-line1-1,#dedede);--card-title-color:var(--color-text1-5,#333);--card-corner:var(--corner-1,0px);--card-padding-lr:var(--s-4,16px);--card-border-width:var(--line-1,1px);--card-head-padding-bottom:var(--s-3,12px);--card-title-font-size:var(--font-size-subhead,14px);--card-title-font-weight:var(--font-weight-2,normal);--card-sub-title-font-size:var(--font-size-caption,12px);--card-title-extra-font-size:var(--font-size-body-1,12px);--card-title-bullet-width:var(--line-3,3px);--card-title-bullet-height:var(--s-4,16px);--card-title-padding-left:var(--s-2,8px);--card-sub-title-padding-left:var(--s-2,8px);--card-body-show-divider-padding-top:var(--s-3,12px);--card-body-hide-divider-padding-top:var(--s-zero,0px);--card-content-font-size:var(--font-size-body-1,12px);--card-content-line-height:var(--font-lineheight-2,1.5);--card-body-padding-bottom:var(--s-3,12px);--card-more-btn-height:var(--s-4,16px);--card-more-btn-padding-top:var(--s-2,8px);--card-more-btn-font-size:var(--font-size-body-1,12px);--card-border-style:var(--line-solid,solid);--card-background:var(--color-white,#fff);--card-header-background:var(--color-white,#fff);--card-sub-title-color:var(--color-text1-3,#555);--card-title-extra-color:var(--color-link-1,#0070cc);--card-title-bullet-color:var(--color-brand1-6,#0070cc);--card-content-color:var(--color-text1-3,#555);--card-head-bottom-border-color:var(--color-line1-1,#dedede);--card-more-btn-color:var(--color-link-1,#0070cc);--card-more-btn-background:var(--color-white,#fff);--collapse-border-color:var(--color-white,#fff);--collapse-panel-border-color:var(--color-white,#fff);--collapse-disabled-border-color:var(--color-white,#fff);--collapse-title-border-width:var(--line-2,2px);--collapse-title-height:var(--s-6,24px);--collapse-title-bg-color:var(--color-fill1-2,#f7f7f7);--collapse-title-hover-bg-color:var(--color-fill1-4,#ebebeb);--collapse-title-font-color:var(--color-text1-5,#333);--collapse-title-hover-font-color:var(--color-text1-5,#333);--collapse-title-font-size:var(--font-size-body-1,12px);--collapse-icon-size:var(--icon-xs,12px);--collapse-icon-color:var(--color-text1-2,#888);--collapse-icon-hover-color:var(--color-text1-2,#888);--collapse-icon-margin-l:var(--s-4,16px);--collapse-content-padding-y:var(--s-2,8px);--collapse-content-color:var(--color-text1-5,#333);--collapse-border-width:var(--line-zero,0px);--collapse-border-corner:var(--corner-1,0px);--collapse-title-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--collapse-title-font-disabled-color:var(--color-text1-1,#c1c1c1);--collapse-title-font-weight:var(--font-weight-2,normal);--collapse-title-hover-font-weight:var(--font-weight-2,normal);--collapse-title-padding-tb:var(--s-2,8px);--collapse-icon-margin-r:var(--s-2,8px);--collapse-content-bg-color:var(--color-white,#fff);--collapse-content-padding-x:var(--s-4,16px);--collapse-content-font-size:var(--font-size-body-1,12px);--collapse-fold-icon-content:var(--icon-content-arrow-right,"");--collapse-unfold-icon-content:var(--icon-reset,var(--icon-reset));--menu-btn-pure-text-secondary-icon-color:var(--color-brand1-6,#0070cc);--menu-btn-ghost-light-icon-color:var(--color-brand1-6,#0070cc);--menu-btn-text-text-normal-icon-color:var(--color-text1-5,#333);--menu-btn-disabled-icon-color:var(--color-text1-1,#c1c1c1);--menu-btn-ghost-light-disabled-icon-color:var(--btn-ghost-light-color-disabled,#c1c1c1);--menu-btn-ghost-dark-disabled-icon-color:var(--btn-ghost-dark-color-disabled,hsla(0,0%,100%,0.25));--menu-btn-pure-text-normal-icon-color:var(--color-text1-2,#888);--menu-btn-pure-text-primary-icon-color:var(--color-white,#fff);--menu-btn-text-text-primary-icon-color:var(--color-link-1,#0070cc);--menu-btn-ghost-dark-icon-color:var(--color-white,#fff);--menu-btn-fold-icon-content:var(--icon-content-arrow-down,"");--menu-btn-unfold-icon-content:var(--icon-reset,var(--icon-reset));--input-text-color:var(--color-text1-5,#333);--input-border-color:var(--color-line1-1,#dedede);--input-focus-border-color:var(--color-line1-4,#737373);--input-disabled-border-color:var(--color-fill1-3,#f5f5f5);--input-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--input-multiple-padding-lr:var(--s-4,16px);--input-multiple-padding-tb:var(--s-3,12px);--input-addon-bg-color:var(--color-fill1-1,#fafafa);--input-l-padding:var(--s-4,16px);--input-m-padding:var(--s-4,16px);--input-feedback-loading-color:var(--color-text1-2,#888);--input-s-padding:var(--s-2,8px);--input-l-label-padding-left:var(--s-4,16px);--input-m-label-padding-left:var(--s-4,16px);--input-label-color:var(--color-text1-3,#555);--input-hover-border-color:var(--color-line1-4,#737373);--input-hover-bg-color:var(--color-white,#fff);--input-focus-bg-color:var(--color-white,#fff);--input-focus-shadow-spread:var(--line-2,2px);--input-border-width:var(--line-1,1px);--input-bg-color:var(--color-white,#fff);--input-placeholder-color:var(--color-text1-2,#888);--input-disabled-color:var(--color-text1-1,#c1c1c1);--input-multiple-font-size:var(--font-size-body-1,12px);--input-multiple-corner:var(--corner-1,0px);--input-addon-text-color:var(--color-text1-2,#888);--input-addon-padding:var(--s-2,8px);--input-l-icon-padding-right:var(--s-2,8px);--input-m-icon-padding-right:var(--s-2,8px);--input-s-label-padding-left:var(--s-2,8px);--input-s-icon-padding-right:var(--s-1,4px);--input-feedback-warning-border-color:var(--color-warning-3,#ffc440);--input-feedback-warning-bg-color:var(--color-white,#fff);--input-feedback-warning-color:var(--color-warning-3,#ffc440);--input-feedback-success-color:var(--color-success-3,#1e8e3e);--input-feedback-loading-icon:var(--icon-content-loading,"");--input-feedback-error-border-color:var(--color-error-3,#d93026);--input-feedback-error-bg-color:var(--color-white,#fff);--input-maxlen-error-color:var(--color-error-3,#d93026);--input-maxlen-warning-color:var(--color-warning-3,#ffc440);--input-maxlen-color:var(--color-text1-2,#888);--input-maxlen-font-size:var(--font-size-caption,12px);--input-hint-color:var(--color-text1-2,#888);--input-hint-hover-color:var(--color-text1-3,#555);--input-feedback-warning-icon:var(--icon-content-warning-fill,"");--input-feedback-success-icon:var(--icon-content-check-fill,"");--input-feedback-clear-icon:var(--icon-content-close-fill,"");--form-label-padding-r:var(--s-2,8px);--form-item-l-margin-b:var(--s-4,16px);--form-help-color:var(--color-text1-2,#888);--form-label-color:var(--color-text1-3,#555);--form-item-m-margin-b:var(--s-4,16px);--form-item-s-margin-b:var(--s-3,12px);--form-inline-l-item-margin-r:var(--s-6,24px);--form-inline-m-item-margin-r:var(--s-5,20px);--form-inline-s-item-margin-r:var(--s-4,16px);--form-help-margin-top:var(--s-1,4px);--form-help-font-size:var(--font-size-caption,12px);--form-error-color:var(--color-error-3,#d93026);--form-warning-color:var(--color-warning-3,#ffc440);--form-top-label-margin-b:2px;--loading-dot-color:var(--color-brand1-6,#0070cc);--loading-icon-size:var(--icon-xl,32px);--loading-large-size:var(--s-12,48px);--loading-large-dot-size:var(--icon-xs,12px);--loading-medium-size:var(--s-8,32px);--loading-medium-dot-size:var(--icon-xxs,8px);--message-size-l-border-width:var(--line-1,1px);--message-size-l-title-content-padding-left:var(--s-2,8px);--message-size-l-title-content-padding-right:var(--s-4,16px);--message-size-l-title-font:var(--font-size-title,16px);--message-size-l-icon:var(--icon-m,20px);--message-size-m-padding:var(--s-2,8px);--message-size-m-title-content-padding-right:var(--s-4,16px);--message-size-m-title-font:var(--font-size-body-2,14px);--message-success-color-border-inline:var(--color-transparent,transparent);--message-success-color-title-inline:var(--color-text1-5,#333);--message-success-color-content-inline:var(--color-text1-3,#555);--message-success-color-icon-inline:var(--color-success-3,#1e8e3e);--message-error-color-border-inline:var(--color-transparent,transparent);--message-error-color-title-inline:var(--color-error-3,#d93026);--message-error-color-content-inline:var(--color-error-3,#d93026);--message-warning-color-border-inline:var(--color-transparent,transparent);--message-warning-color-title-inline:var(--color-text1-5,#333);--message-warning-color-icon-inline:var(--color-warning-3,#ffc440);--message-notice-color-bg-inline:var(--color-notice-1,#e5f3ff);--message-notice-color-border-inline:var(--color-transparent,transparent);--message-notice-color-title-inline:var(--color-text1-5,#333);--message-help-color-border-inline:var(--color-transparent,transparent);--message-help-color-icon-inline:var(--color-help-3,#888);--message-help-color-icon-addon:var(--color-help-3,#888);--message-help-color-icon-toast:var(--color-help-3,#888);--message-loading-color-icon-inline:var(--color-text1-3,#555);--message-size-l-padding:var(--s-2,8px);--message-size-l-close-top:var(--s-2,8px);--message-size-l-close-right:var(--s-2,8px);--message-size-m-title-content-padding-left:var(--s-2,8px);--message-size-m-close-top:var(--s-2,8px);--message-size-m-close-right:var(--s-2,8px);--message-success-color-title-addon:var(--color-text1-5,#333);--message-success-color-title-toast:var(--color-text1-5,#333);--message-error-color-title-addon:var(--color-text1-5,#333);--message-error-color-title-toast:var(--color-text1-5,#333);--message-warning-color-title-addon:var(--color-text1-5,#333);--message-warning-color-title-toast:var(--color-text1-5,#333);--message-notice-color-title-toast:var(--color-text1-5,#333);--message-help-color-title-addon:var(--color-text1-5,#333);--message-help-color-title-toast:var(--color-text1-5,#333);--message-loading-color-border-inline:var(--color-line1-1,#dedede);--message-loading-color-title-inline:var(--color-text1-5,#333);--message-loading-color-title-addon:var(--color-text1-5,#333);--message-loading-color-title-toast:var(--color-text1-5,#333);--message-loading-color-icon-addon:var(--color-fill1-8,#737373);--message-loading-color-icon-toast:var(--color-text1-2,#888);--message-size-m-icon:var(--icon-m,20px);--message-size-l-content-margin-top:var(--s-2,8px);--message-size-l-content-font:var(--font-size-body-1,12px);--message-size-m-border-width:var(--line-1,1px);--message-size-m-content-margin-top:var(--s-2,8px);--message-size-m-content-font:var(--font-size-body-1,12px);--message-close-icon-size:var(--icon-xs,12px);--message-size-l-border-radius:var(--corner-1,0px);--message-size-m-border-radius:var(--corner-1,0px);--message-size-l-border-radius-toast:var(--corner-1,0px);--message-size-m-border-radius-toast:var(--corner-1,0px);--message-border-style:var(--line-solid,solid);--message-border-style-toast:var(--line-solid,solid);--message-shadow-toast:var(--shadow-2-down,0px 2px 8px 0px rgba(0,0,0,0.13));--message-success-color-bg-inline:var(--color-success-1,#dff4e5);--message-success-color-bg-addon:var(--color-transparent,transparent);--message-success-color-bg-toast:var(--color-white,#fff);--message-success-color-border-toast:var(--color-white,#fff);--message-success-color-content-addon:var(--color-text1-3,#555);--message-success-color-content-toast:var(--color-text1-3,#555);--message-success-color-icon-addon:var(--color-success-3,#1e8e3e);--message-success-color-icon-toast:var(--color-success-3,#1e8e3e);--message-error-color-bg-inline:var(--color-error-1,#fcebea);--message-error-color-bg-addon:var(--color-transparent,transparent);--message-error-color-bg-toast:var(--color-white,#fff);--message-error-color-border-toast:var(--color-white,#fff);--message-error-color-content-addon:var(--color-text1-3,#555);--message-error-color-content-toast:var(--color-text1-3,#555);--message-error-color-icon-inline:var(--color-error-3,#d93026);--message-error-color-icon-addon:var(--color-error-3,#d93026);--message-error-color-icon-toast:var(--color-error-3,#d93026);--message-warning-color-bg-inline:var(--color-warning-1,#fff7db);--message-warning-color-bg-addon:var(--color-transparent,transparent);--message-warning-color-bg-toast:var(--color-white,#fff);--message-warning-color-border-toast:var(--color-white,#fff);--message-warning-color-content-inline:var(--color-text1-3,#555);--message-warning-color-content-addon:var(--color-text1-3,#555);--message-warning-color-content-toast:var(--color-text1-3,#555);--message-warning-color-icon-addon:var(--color-warning-3,#ffc440);--message-warning-color-icon-toast:var(--color-warning-3,#ffc440);--message-notice-color-bg-addon:var(--color-transparent,transparent);--message-notice-color-bg-toast:var(--color-white,#fff);--message-notice-color-border-toast:var(--color-white,#fff);--message-notice-color-title-addon:var(--color-text1-4,#111);--message-notice-color-content-inline:var(--color-text1-3,#555);--message-notice-color-content-addon:var(--color-text1-3,#555);--message-notice-color-content-toast:var(--color-text1-3,#555);--message-notice-color-icon-inline:var(--color-notice-3,#0070cc);--message-notice-color-icon-addon:var(--color-notice-3,#0070cc);--message-notice-color-icon-toast:var(--color-notice-3,#0070cc);--message-help-color-bg-inline:var(--color-help-1,#f5f5f5);--message-help-color-bg-addon:var(--color-transparent,transparent);--message-help-color-bg-toast:var(--color-white,#fff);--message-help-color-border-toast:var(--color-white,#fff);--message-help-color-title-inline:var(--color-text1-4,#111);--message-help-color-content-inline:var(--color-text1-3,#555);--message-help-color-content-addon:var(--color-text1-3,#555);--message-help-color-content-toast:var(--color-text1-3,#555);--message-loading-color-bg-inline:var(--color-white,#fff);--message-loading-color-bg-addon:var(--color-transparent,transparent);--message-loading-color-bg-toast:var(--color-white,#fff);--message-loading-color-border-toast:var(--color-white,#fff);--message-loading-color-content-inline:var(--color-text1-3,#555);--message-loading-color-content-addon:var(--color-text1-3,#555);--message-loading-color-content-toast:var(--color-text1-3,#555);--message-close-icon-color:var(--color-text1-2,#888);--message-hover-close-icon-color:var(--color-text1-3,#555);--message-success-icon-content:var(--icon-content-success,"");--message-warning-icon-content:var(--icon-content-warning,"");--message-error-icon-content:var(--icon-content-error,"");--message-notice-icon-content:var(--icon-content-prompt,"");--message-help-icon-content:var(--icon-content-help,"");--message-loading-icon-content:var(--icon-content-loading,"");--dialog-title-font-size:var(--font-size-title,16px);--dialog-title-padding-bottom:var(--s-4,16px);--dialog-title-padding-left-right:var(--s-6,24px);--dialog-content-font-size:var(--font-size-body-2,14px);--dialog-content-padding-top:var(--s-4,16px);--dialog-content-padding-bottom:var(--s-4,16px);--dialog-footer-padding-top:var(--s-4,16px);--dialog-close-size:var(--icon-s,16px);--dialog-border-color:var(--color-transparent,transparent);--dialog-shadow:var(--shadow-3-down,0px 4px 16px 0px rgba(0,0,0,0.21));--dialog-title-color:var(--color-text1-5,#333);--dialog-title-bg-color:var(--color-white,#fff);--dialog-title-border-color:var(--color-white,#fff);--dialog-content-color:var(--color-text1-5,#333);--dialog-footer-bg-color:var(--color-white,#fff);--dialog-footer-border-color:var(--color-white,#fff);--dialog-close-color-hovered:var(--color-text1-3,#555);--dialog-close-bg-hovered:var(--color-white,#fff);--dialog-message-title-padding-top:var(--s-4,16px);--dialog-message-title-padding-bottom:var(--s-4,16px);--dialog-message-title-padding-left-right:var(--s-6,24px);--dialog-close-top:var(--s-5,20px);--dialog-close-right:var(--s-6,24px);--dialog-footer-padding-left-right:var(--s-6,24px);--dialog-content-padding-left-right:var(--s-6,24px);--dialog-border-width:var(--line-1,1px);--dialog-title-border-width:var(--line-zero,0px);--dialog-message-content-padding-top:var(--s-5,20px);--dialog-message-content-padding-bottom:var(--s-5,20px);--dialog-message-content-padding-left-right:var(--s-5,20px);--dialog-footer-border-width:var(--line-zero,0px);--dialog-footer-button-spacing:var(--s-1,4px);--dialog-close-width:var(--s-4,16px);--dialog-bg:var(--color-white,#fff);--dialog-border-style:var(--line-solid,solid);--dialog-corner:var(--corner-1,0px);--dialog-close-color:var(--color-text1-2,#888);--dialog-title-padding-top:var(--s-6,24px);--dialog-footer-padding-bottom:var(--s-6,24px);--menu-icon-selected-size:var(--icon-xs,12px);--menu-icon-size:var(--icon-xs,12px);--menu-color:var(--color-text1-5,#333);--menu-arrow-color:var(--color-fill1-7,#a8a8a8);--menu-background-selected:var(--color-brand1-1,#f3faff);--menu-background-hover:var(--color-fill1-4,#ebebeb);--menu-color-hover:var(--color-text1-5,#333);--menu-arrow-color-hover:var(--color-text1-3,#555);--menu-icon-selected-hover-color:var(--color-brand1-6,#0070cc);--menu-padding-horizontal:var(--s-4,16px);--menu-item-padding-ver-padding-l:var(--s-4,16px);--menu-item-padding-ver-padding-r:var(--s-4,16px);--menu-item-padding-hoz-padding-lr:var(--s-4,16px);--menu-icon-selected-color:var(--color-brand1-6,#0070cc);--menu-padding-ver-padding-lr:var(--s-zero,0px);--menu-padding-ver-padding-tb:var(--s-2,8px);--menu-padding-hoz-padding-lr:var(--s-zero,0px);--menu-padding-hoz-padding-tb:var(--s-2,8px);--menu-line-height:var(--s-8,32px);--menu-font-size:var(--font-size-body-1,12px);--menu-submenu-title-size:var(--font-size-body-1,12px);--menu-padding-title-horizontal:var(--s-3,12px);--menu-divider-width:var(--line-1,1px);--menu-divider-margin-ver:var(--s-2,8px);--menu-divider-margin-hoz:var(--s-3,12px);--menu-icon-selected-right:var(--s-1,4px);--menu-hoz-icon-size:var(--icon-xs,12px);--menu-icon-margin:var(--s-1,4px);--menu-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--menu-divider-style:var(--line-solid,solid);--menu-divider-color:var(--color-line1-1,#dedede);--menu-background:var(--color-white,#fff);--menu-color-selected:var(--color-text1-4,#111);--menu-color-disabled:var(--color-text1-1,#c1c1c1);--menu-select-icon-content:var(--icon-content-select,"");--menu-fold-icon-content:var(--icon-content-arrow-down,"");--menu-unfold-icon-content:var(--icon-reset,var(--icon-reset));--menu-popupfold-icon-content:var(--icon-content-arrow-right,"");--date-picker-panel-footer-padding-lr:var(--s-4,16px);--date-picker-panel-footer-padding-tb:var(--s-2,8px);--date-picker-panel-background:var(--color-white,#fff);--date-picker-panel-time-panel-separator-color:var(--color-line1-2,#c9c9c9);--date-picker-calendar-icon:var(--icon-content-calendar,"");--range-normal-unselected-color:var(--color-fill1-3,#f5f5f5);--range-normal-selected-color:var(--color-brand1-6,#0070cc);--range-normal-unselected-color-hover:var(--color-fill1-3,#f5f5f5);--range-normal-selected-color-hover:var(--color-brand1-6,#0070cc);--range-size-m-slider-shadow-hover:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--range-normal-unselected-color-disabled:var(--color-fill1-4,#ebebeb);--range-normal-selected-color-disabled:var(--color-line1-2,#c9c9c9);--range-normal-slider-bg-color-disabled:var(--color-fill1-4,#ebebeb);--range-normal-slider-border-color:var(--color-line1-1,#dedede);--range-normal-slider-border-color-disabled:var(--color-line1-1,#dedede);--range-size-m-track-height:var(--s-1,4px);--range-size-m-scale-height:var(--s-3,12px);--range-size-m-scale-item-border-width:var(--line-1,1px);--range-size-m-slider-hw:var(--s-4,16px);--range-size-slider-border-style:var(--line-solid,solid);--range-size-slider-border-width:var(--line-1,1px);--range-size-m-mark-top:30px;--range-size-m-mark-font-size:var(--font-size-body-1,12px);--range-size-m-mark-font-weight:var(--font-weight-2,normal);--range-size-m-mark-font-lineheight:20px;--range-size-m-track-radius:var(--corner-zero,0);--range-size-m-scale-radius:var(--corner-zero,0);--range-size-m-slider-shadow-moving:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--range-normal-slider-bg-color:var(--color-white,#fff);--range-normal-mark-color:var(--color-text1-2,#888);--range-normal-mark-selected-color:var(--color-text1-4,#111);--range-normal-slider-bg-color-hover:var(--color-white,#fff);--range-size-m-slider-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--range-normal-mark-color-hover:var(--color-text1-2,#888);--range-normal-mark-selected-color-hover:var(--color-text1-4,#111);--range-normal-slider-border-color-hover:var(--color-transparent,transparent);--range-normal-mark-color-disabled:var(--color-text1-1,#c1c1c1);--range-normal-mark-selected-color-disabled:var(--color-text1-2,#888);--rating-normal-underlay-color:var(--color-fill1-5,#dedede);--rating-normal-overlay-hover-color:var(--color-brand1-6,#0070cc);--rating-grade-low-overlay-color:var(--color-brand1-6,#0070cc);--rating-grade-high-overlay-color:var(--color-brand1-6,#0070cc);--rating-grade-high-overlay-hover-color:var(--color-brand1-6,#0070cc);--rating-small-text-margin-left:var(--s-2,8px);--rating-small-icon-size:var(--icon-xs,12px);--rating-small-font-size:var(--font-size-caption,12px);--rating-medium-text-margin-left:var(--s-3,12px);--rating-medium-icon-size:var(--icon-s,16px);--rating-medium-font-size:var(--font-size-body-1,12px);--rating-large-text-margin-left:var(--s-4,16px);--rating-large-icon-size:var(--icon-m,20px);--rating-large-font-size:var(--font-size-subhead,14px);--rating-normal-overlay-color:var(--color-brand1-6,#0070cc);--rating-grade-low-overlay-hover-color:var(--color-text1-2,#888);--rating-grade-icon-content:var(--icon-content-favorites-filling,"");--search-normal-primary-border-width:var(--line-1,1px);--search-normal-primary-l-height:var(--s-9,36px);--search-normal-primary-l-icon-size:var(--icon-s,16px);--search-normal-primary-m-height:var(--s-8,32px);--search-normal-secondary-color:var(--color-line1-1,#dedede);--search-normal-secondary-hover-color:var(--color-brand1-7,#005aa5);--search-normal-secondary-btn-hover-bg-color:var(--color-brand1-7,#005aa5);--search-normal-secondary-l-height:var(--s-9,36px);--search-normal-secondary-l-icon-size:var(--icon-s,16px);--search-normal-secondary-m-height:var(--s-8,32px);--search-normal-normal-l-height:var(--s-9,36px);--search-normal-normal-l-icon-size:var(--icon-s,16px);--search-normal-normal-m-height:var(--s-8,32px);--search-normal-dark-btn-hover-bg-color:var(--color-brand1-7,#005aa5);--search-normal-dark-l-height:var(--s-9,36px);--search-normal-dark-l-icon-size:var(--icon-s,16px);--search-normal-dark-m-height:var(--s-8,32px);--search-simple-normal-color:var(--color-line1-1,#dedede);--search-simple-normal-m-icon-size:var(--icon-s,16px);--search-simple-dark-m-icon-size:var(--icon-s,16px);--search-normal-primary-color:var(--color-brand1-6,#0070cc);--search-normal-primary-hover-color:var(--color-brand1-7,#005aa5);--search-normal-secondary-btn-bg-color:var(--color-brand1-6,#0070cc);--search-normal-normal-color:var(--color-line1-1,#dedede);--search-normal-normal-btn-text-color:var(--color-text1-5,#333);--search-normal-normal-btn-hover-bg-color:var(--color-fill1-1,#fafafa);--search-normal-normal-btn-hover-text-color:var(--color-text1-5,#333);--search-normal-dark-color:var(--color-brand1-6,#0070cc);--search-normal-dark-hover-color:var(--color-brand1-7,#005aa5);--search-simple-normal-split-color:var(--color-line1-1,#dedede);--search-simple-normal-icon-text-color:var(--color-text1-2,#888);--search-simple-normal-l-icon-size:var(--icon-s,16px);--search-simple-dark-l-icon-size:var(--icon-s,16px);--search-normal-primary-btn-hover-bg-color:var(--color-brand1-7,#005aa5);--search-normal-corner:var(--corner-1,0px);--search-normal-primary-split-color:var(--color-line1-1,#dedede);--search-normal-primary-shadow:var(--shadow-zero,none);--search-normal-primary-btn-text-color:var(--color-white,#fff);--search-normal-primary-btn-hover-text-color:var(--color-white,#fff);--search-normal-primary-btn-text-padding-left:var(--s-zero,0px);--search-normal-primary-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-primary-m-icon-size:var(--icon-s,16px);--search-normal-primary-m-btn-text-size:var(--font-size-subhead,14px);--search-normal-secondary-split-color:var(--color-line1-1,#dedede);--search-normal-secondary-shadow:var(--shadow-zero,none);--search-normal-secondary-btn-text-color:var(--color-white,#fff);--search-normal-secondary-btn-hover-text-color:var(--color-white,#fff);--search-normal-secondary-border-width:var(--line-1,1px);--search-normal-secondary-btn-text-padding-left:var(--s-zero,0px);--search-normal-secondary-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-secondary-m-icon-size:var(--icon-s,16px);--search-normal-secondary-m-btn-text-size:var(--font-size-subhead,14px);--search-normal-normal-split-color:var(--color-line1-1,#dedede);--search-normal-normal-hover-color:var(--color-line1-4,#737373);--search-normal-normal-shadow:var(--shadow-zero,none);--search-normal-normal-btn-bg-color:var(--color-fill1-1,#fafafa);--search-normal-normal-border-width:var(--line-1,1px);--search-normal-normal-btn-text-padding-left:var(--s-zero,0px);--search-normal-normal-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-normal-m-icon-size:var(--icon-s,16px);--search-normal-normal-m-btn-text-size:var(--font-size-subhead,14px);--search-normal-dark-text-color:var(--color-white,#fff);--search-normal-dark-bg-color:var(--color-white,#fff);--search-normal-dark-bg-opacity:0;--search-normal-dark-shadow:var(--shadow-zero,none);--search-normal-dark-btn-text-color:var(--color-white,#fff);--search-normal-dark-btn-hover-text-color:var(--color-white,#fff);--search-normal-dark-border-width:var(--line-1,1px);--search-normal-dark-btn-text-padding-left:var(--s-zero,0px);--search-normal-dark-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-dark-m-icon-size:var(--icon-s,16px);--search-normal-dark-m-btn-text-size:var(--font-size-subhead,14px);--search-simple-corner:var(--corner-1,0px);--search-simple-l-icon-margin-right:var(--s-3,12px);--search-simple-m-icon-margin-right:var(--s-2,8px);--search-simple-normal-hover-color:var(--color-line1-4,#737373);--search-simple-normal-shadow:var(--shadow-zero,none);--search-simple-normal-icon-hover-text-color:var(--color-text1-3,#555);--search-simple-normal-border-width:var(--line-1,1px);--search-simple-normal-btn-text-padding-left:var(--s-zero,0px);--search-simple-dark-color:var(--color-line1-3,#a8a8a8);--search-simple-dark-hover-color:var(--color-line1-3,#a8a8a8);--search-simple-dark-bg-color:var(--color-white,#fff);--search-simple-dark-bg-opacity:0;--search-simple-dark-text-color:var(--color-white,#fff);--search-simple-dark-shadow:var(--shadow-zero,none);--search-simple-dark-icon-text-color:var(--color-text1-2,#888);--search-simple-dark-icon-hover-text-color:var(--color-text1-3,#555);--search-simple-dark-btn-text-padding-left:var(--s-zero,0px);--search-simple-dark-split-color:var(--color-line1-3,#a8a8a8);--search-simple-dark-border-width:var(--line-1,1px);--search-search-icon-content:var(--icon-content-search,"");--progress-line-underlay-color:var(--color-fill1-3,#f5f5f5);--progress-line-radius-l:var(--corner-1,0px);--progress-line-radius-m:var(--corner-1,0px);--progress-line-radius-s:var(--corner-1,0px);--progress-line-normal-color:var(--color-brand1-6,#0070cc);--progress-line-started-color:var(--color-brand1-6,#0070cc);--progress-line-middle-color:var(--color-brand1-6,#0070cc);--progress-line-finishing-color:var(--color-brand1-6,#0070cc);--progress-circle-started-color:var(--color-brand1-6,#0070cc);--progress-circle-middle-color:var(--color-brand1-6,#0070cc);--progress-circle-finishing-color:var(--color-brand1-6,#0070cc);--progress-line-height-size-l:var(--s-3,12px);--progress-line-height-size-m:var(--s-2,8px);--progress-line-height-size-s:var(--s-1,4px);--progress-line-underlay-border-width:var(--line-1,1px);--progress-line-font-l:var(--font-size-body-1,12px);--progress-line-font-m:var(--font-size-caption,12px);--progress-line-font-s:var(--font-size-caption,12px);--progress-line-underlay-border-color:var(--color-line1-2,#c9c9c9);--progress-line-font-color:var(--color-text1-4,#111);--progress-line-error-color:var(--color-error-3,#d93026);--progress-line-success-color:var(--color-success-3,#1e8e3e);--progress-circle-size-l:var(--s-33,132px);--progress-circle-size-m:var(--s-29,116px);--progress-circle-size-s:var(--s-25,100px);--progress-circle-underlay-width:var(--s-2,8px);--progress-circle-overlay-width:var(--s-2,8px);--progress-circle-font-l:var(--font-size-display-1,24px);--progress-circle-font-m:var(--font-size-headline,18px);--progress-circle-font-s:var(--font-size-title,16px);--progress-circle-underlay-color:var(--color-fill1-3,#f5f5f5);--progress-circle-text-color:var(--color-text1-4,#111);--progress-circle-corner:round;--progress-circle-normal-color:var(--color-brand1-6,#0070cc);--progress-circle-error-color:var(--color-error-3,#d93026);--progress-circle-success-color:var(--color-success-3,#1e8e3e);--pagination-large-item-split:var(--s-2,8px);--pagination-small-item-split:var(--s-1,4px);--pagination-current-color:var(--color-brand1-6,#0070cc);--pagination-total-color:var(--color-text1-5,#333);--pagination-size-selector-filter-current-color:var(--color-brand1-6,#0070cc);--pagination-item-border-color:var(--color-line1-1,#dedede);--pagination-item-color:var(--color-text1-5,#333);--pagination-item-bg:var(--color-fill1-1,#fafafa);--pagination-item-current-border-color:var(--color-brand1-6,#0070cc);--pagination-item-current-color:var(--color-brand1-6,#0070cc);--pagination-item-current-bg:var(--color-white,#fff);--pagination-item-hover-border-color:var(--color-line1-4,#737373);--pagination-item-hover-color:var(--color-text1-5,#333);--pagination-item-hover-bg:var(--color-white,#fff);--pagination-arrow-color:var(--color-text1-2,#888);--pagination-item-current-hover-border-color:var(--color-brand1-6,#0070cc);--pagination-item-current-hover-color:var(--color-brand1-6,#0070cc);--pagination-item-current-hover-bg:var(--color-white,#fff);--pagination-arrow-hover-color:var(--color-text1-3,#555);--pagination-item-border-style:var(--line-solid,solid);--pagination-item-border-width:var(--line-1,1px);--pagination-item-corner:var(--corner-1,0px);--pagination-ellipsis-size:var(--icon-xs,12px);--pagination-ellipsis-margin:var(--s-2,8px);--pagination-current-font-size:var(--font-size-body-1,12px);--pagination-total-font-size:var(--font-size-body-1,12px);--pagination-jump-font-size:var(--font-size-body-1,12px);--pagination-input-width:var(--s-9,36px);--pagination-size-selector-title-margin-right:var(--s-1,4px);--pagination-size-selector-number-padding:var(--s-3,12px);--pagination-large-item-border-width:var(--line-1,1px);--pagination-large-item-corner:var(--corner-1,0px);--pagination-large-ellipsis-size:var(--icon-s,16px);--pagination-large-current-font-size:var(--font-size-subhead,14px);--pagination-large-total-font-size:var(--font-size-subhead,14px);--pagination-large-input-width:var(--s-12,48px);--pagination-large-jump-font-size:var(--font-size-subhead,14px);--pagination-large-size-selector-number-padding:var(--s-4,16px);--pagination-small-item-border-width:var(--line-1,1px);--pagination-small-item-corner:var(--corner-1,0px);--pagination-small-ellipsis-size:var(--icon-xs,12px);--pagination-small-current-font-size:var(--font-size-caption,12px);--pagination-small-total-font-size:var(--font-size-caption,12px);--pagination-small-input-width:var(--s-7,28px);--pagination-small-jump-font-size:var(--font-size-caption,12px);--pagination-small-size-selector-number-padding:var(--s-2,8px);--pagination-ellipsis-color:var(--color-text1-2,#888);--pagination-jump-color:var(--color-text1-2,#888);--pagination-size-selector-title-color:var(--color-text1-2,#888);--pagination-size-selector-filter-color:var(--color-text1-3,#555);--pagination-item-shadow:var(--shadow-zero,none);--pagination-item-current-shadow:var(--shadow-zero,none);--pagination-item-hover-shadow:var(--shadow-zero,none);--pagination-icon-prev-content:var(--icon-content-arrow-left,"");--pagination-icon-next-content:var(--icon-content-arrow-right,"");--pagination-icon-ellipsis-content:var(--icon-content-ellipsis,"");--pagination-item-current-hover-shadow:var(--shadow-zero,none);--pagination-arrow-hover-color-noboder:var(--color-brand1-6,#0070cc);--pagination-item-split:var(--s-1,4px);--pagination-input-margin:var(--s-1,4px);--radio-width:var(--s-4,16px);--radio-circle-size:var(--s-2,8px);--radio-hovered-bg-color:var(--color-transparent,transparent);--radio-checked-bg-color:var(--color-white,#fff);--radio-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--radio-checked-hovered-bg-color:var(--color-white,#fff);--radio-hovered-border-color:var(--color-line1-4,#737373);--radio-checked-border-color:var(--color-brand1-6,#0070cc);--radio-disabled-border-color:var(--color-fill1-4,#ebebeb);--radio-checked-disabled-border-color:var(--color-fill1-4,#ebebeb);--radio-checked-hovered-border-color:var(--color-brand1-7,#005aa5);--radio-checked-circle-color:var(--color-brand1-6,#0070cc);--radio-checked-hovered-circle-color:var(--color-brand1-7,#005aa5);--radio-button-height-large:var(--s-9,36px);--radio-button-height-medium:var(--s-8,32px);--radio-button-height-small:var(--s-6,24px);--radio-button-font-size-large:var(--font-size-body-2,14px);--radio-button-bg-color-hovered:var(--color-white,#fff);--radio-button-bg-color-checked-disabled:var(--color-fill1-4,#ebebeb);--radio-button-border-color:var(--color-line1-2,#c9c9c9);--radio-button-border-color-hovered:var(--color-line1-4,#737373);--radio-button-border-color-checked:var(--color-brand1-6,#0070cc);--radio-button-font-color:var(--color-text1-3,#555);--radio-button-font-color-checked:var(--color-brand1-6,#0070cc);--radio-checked-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--radio-circle-border-width:var(--line-1,1px);--radio-font-margin-left:var(--s-1,4px);--radio-font-size:var(--font-size-body-1,12px);--radio-shadow:var(--shadow-zero,none);--radio-radius-size:var(--corner-circle,50%);--radio-bg-color:var(--color-white,#fff);--radio-border-color:var(--color-line1-3,#a8a8a8);--radio-disabled-circle-color:var(--color-text1-1,#c1c1c1);--radio-checked-disabled-circle-color:var(--color-text1-1,#c1c1c1);--radio-normal-font-color:var(--color-text1-4,#111);--radio-normal-font-color-disabled:var(--color-text1-1,#c1c1c1);--radio-button-padding-large:var(--s-2,8px);--radio-button-padding-medium:var(--s-2,8px);--radio-button-padding-small:var(--s-2,8px);--radio-button-corner-large:var(--corner-1,0px);--radio-button-corner-medium:var(--corner-1,0px);--radio-button-corner-small:var(--corner-1,0px);--radio-button-font-size-medium:var(--font-size-body-1,12px);--radio-button-font-size-small:var(--font-size-caption,12px);--radio-button-bg-color:var(--color-white,#fff);--radio-button-bg-color-checked:var(--color-white,#fff);--radio-button-bg-color-disabled:var(--color-fill1-1,#fafafa);--radio-button-border-color-disabled:var(--color-line1-1,#dedede);--radio-button-border-color-checked-disabled:var(--color-line1-1,#dedede);--radio-button-font-color-hovered:var(--color-text1-4,#111);--radio-button-font-color-disabled:var(--color-text1-1,#c1c1c1);--radio-button-font-color-checked-disabled:var(--color-text1-1,#c1c1c1);--switch-size-m-width:var(--s-11,44px);--switch-size-m-trigger:var(--s-5,20px);--switch-size-m-radius-trigger:var(--corner-circle,50%);--switch-size-s-width:var(--s-8,32px);--switch-size-s-radius-trigger:var(--corner-circle,50%);--switch-disabled-on-trigger-bg-color:var(--color-white,#fff);--switch-normal-off-bg-color:var(--color-text1-2,#888);--switch-hover-off-bg-color:var(--color-fill1-8,#737373);--switch-disabled-off-bg-color:var(--color-fill1-4,#ebebeb);--switch-handle-disabled-border-color:var(--color-transparent,transparent);--switch-normal-off-color-font:var(--color-fill1-1,#fafafa);--switch-normal-off-border-color:var(--color-transparent,transparent);--switch-hover-off-border-color:var(--color-transparent,transparent);--switch-disabled-on-bg-color:var(--color-brand1-4,#7ec5ff);--switch-size-s-trigger:var(--s-4,16px);--switch-border-width-container:var(--line-1,1px);--switch-normal-on-bg-color:var(--color-success-3,#1e8e3e);--switch-hover-on-bg-color:var(--color-success-4,#176e30);--switch-size-m-radius-container:var(--corner-3,12px);--switch-size-s-radius-container:var(--corner-3,12px);--switch-text-on-left:var(--s-2,8px);--switch-size-s-text-on-left:var(--s-1,4px);--switch-text-off-right:var(--s-2,8px);--switch-size-s-text-off-right:var(--s-1,4px);--switch-border-width-trigger:var(--line-1,1px);--switch-normal-on-trigger-bg-color:var(--color-white,#fff);--switch-hover-on-trigger-bg-color:var(--color-white,#fff);--switch-normal-on-color-font:var(--color-white,#fff);--switch-disabled-on-color-font:var(--color-text1-1,#c1c1c1);--switch-disabled-on-border-color:var(--color-line1-3,#a8a8a8);--switch-handle-on-border-color:var(--color-transparent,transparent);--switch-on-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--switch-normal-off-trigger-bg-color:var(--color-white,#fff);--switch-hover-off-trigger-bg-color:var(--color-white,#fff);--switch-disabled-off-trigger-bg-color:var(--color-fill1-1,#fafafa);--switch-disabled-off-color-font:var(--color-line1-3,#a8a8a8);--switch-handle-off-border-color:var(--color-transparent,transparent);--switch-off-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--switch-rtl-on-shadow:var(--shadow-1-left,-1px 0px 4px 0px rgba(0,0,0,0.13));--select-color:var(--color-text1-5,#333);--select-s-lineheight:16px;--select-hint-color:var(--color-text1-2,#888);--select-highlight-color:var(--color-brand1-6,#0070cc);--select-highlight-font:var(--font-size-body-1,12px);--select-l-lineheight:var(--s-6,24px);--select-m-lineheight:var(--s-5,20px);--select-fold-icon-content:var(--icon-content-arrow-down,"");--select-unfold-icon-content:var(--icon-reset,var(--icon-reset));--slick-arrow-bg-color-disabled:var(--color-black,#000);--slick-arrow-bg-opacity-disabled:0.05;--slick-dots-position-bottom:var(--s-3,12px);--slick-dots-position-right:var(--s-5,20px);--slick-dots-width:var(--s-2,8px);--slick-dots-height:var(--s-2,8px);--slick-dots-margin-lr:var(--s-1,4px);--slick-dots-margin-tb:var(--s-zero,0px);--slick-arrow-width-m:var(--s-7,28px);--slick-arrow-width-l:var(--s-12,48px);--slick-arrow-height-m:var(--s-14,56px);--slick-arrow-height-l:var(--s-24,96px);--slick-ver-arrow-width-m:var(--s-14,56px);--slick-ver-arrow-width-l:var(--s-24,96px);--slick-ver-arrow-height-m:var(--s-7,28px);--slick-ver-arrow-height-l:var(--s-12,48px);--slick-arrow-icon-m:var(--icon-m,20px);--slick-arrow-icon-l:var(--icon-xl,32px);--slick-arrow-position-lr-m:var(--s-1,4px);--slick-arrow-position-lr-l:var(--s-2,8px);--slick-ver-arrow-position-tb-m:var(--s-1,4px);--slick-ver-arrow-position-tb-l:var(--s-4,16px);--slick-track-padding-lr:var(--s-6,24px);--slick-ver-track-padding-tb:var(--s-6,24px);--slick-dots-background-color-normal:var(--color-black,#000);--slick-dots-background-color-hover:var(--color-black,#000);--slick-dots-background-color-selected:var(--color-brand1-6,#0070cc);--slick-dots-background-opacity-normal:.32;--slick-dots-background-opacity-hover:.32;--slick-dots-background-opacity-selected:1;--slick-dots-border-width:var(--line-zero,0px);--slick-dots-border-radius:var(--corner-circle,50%);--slick-dots-border-color-normal:var(--color-white,#fff);--slick-dots-border-color-hover:var(--color-white,#fff);--slick-dots-border-color-selected:var(--color-white,#fff);--slick-dots-border-opacity-normal:1;--slick-dots-border-opacity-hover:1;--slick-dots-border-opacity-selected:1;--slick-arrow-icon-color-normal:var(--color-white,#fff);--slick-arrow-icon-color-normal-outer:var(--color-text1-3,#555);--slick-arrow-icon-color-hover:var(--color-white,#fff);--slick-arrow-icon-color-hover-outer:var(--color-text1-4,#111);--slick-arrow-icon-color-disabled:var(--color-text1-1,#c1c1c1);--slick-arrow-icon-color-disabled-outer:var(--color-text1-1,#c1c1c1);--slick-arrow-bg-color-normal:var(--color-black,#000);--slick-arrow-bg-color-hover:var(--color-black,#000);--slick-arrow-bg-opacity-normal:.2;--slick-arrow-bg-opacity-hover:.4;--slick-arrow-bg-color-normal-outer:var(--color-transparent,transparent);--slick-arrow-bg-color-hover-outer:var(--color-transparent,transparent);--slick-arrow-bg-color-disabled-outer:var(--color-transparent,transparent);--slick-arrow-bg-opacity-normal-outer:.32;--slick-arrow-bg-opacity-hover-outer:.32;--slick-arrow-bg-opacity-disabled-outer:.32;--slick-arrow-corner-radius-outer:var(--s-zero,0px);--step-arrow-item-title-weight:var(--font-weight-2,normal);--step-arrow-item-wait-background:var(--color-fill1-2,#f7f7f7);--step-arrow-item-process-background:var(--color-brand1-6,#0070cc);--step-arrow-item-finish-background:var(--color-brand1-6,#0070cc);--step-arrow-item-title-finish-color:var(--color-white,#fff);--step-circle-item-node-padding:var(--s-3,12px);--step-circle-item-node-icon-size:var(--icon-s,16px);--step-circle-item-node-font-size:var(--font-size-body-1,12px);--step-circle-item-content-font-size:var(--font-size-body-1,12px);--step-circle-item-body-width:var(--s-24,96px);--step-circle-item-tail-wait-color:var(--color-line1-1,#dedede);--step-circle-item-tail-process-color:var(--color-line1-1,#dedede);--step-circle-item-tail-finish-color:var(--color-brand1-6,#0070cc);--step-circle-item-title-wait-color:var(--color-text1-2,#888);--step-circle-item-title-process-color:var(--color-text1-5,#333);--step-circle-item-title-finish-color:var(--color-text1-5,#333);--step-circle-item-title-disabled-color:var(--color-fill1-4,#ebebeb);--step-circle-item-node-wait-border-color:var(--color-line1-1,#dedede);--step-circle-item-node-wait-color:var(--color-text1-2,#888);--step-circle-item-node-process-border-color:var(--color-brand1-6,#0070cc);--step-circle-item-node-process-background:var(--color-brand1-6,#0070cc);--step-circle-item-node-process-percent-color:var(--color-brand1-6,#0070cc);--step-circle-item-node-process-percent-size:var(--font-size-body-1,12px);--step-circle-item-node-finish-border-color:var(--color-brand1-6,#0070cc);--step-circle-item-node-finish-color:var(--color-brand1-6,#0070cc);--step-dot-item-dot-icon-size:var(--icon-s,16px);--step-dot-item-body-width:var(--s-24,96px);--step-dot-item-tail-wait-color:var(--color-line1-1,#dedede);--step-dot-item-tail-process-color:var(--color-line1-1,#dedede);--step-dot-item-tail-finish-color:var(--color-brand1-6,#0070cc);--step-dot-item-title-wait-color:var(--color-text1-2,#888);--step-dot-item-title-process-color:var(--color-text1-5,#333);--step-dot-item-title-finish-color:var(--color-text1-5,#333);--step-dot-item-node-wait-border-color:var(--color-line1-1,#dedede);--step-dot-item-node-process-color:var(--color-brand1-6,#0070cc);--step-dot-item-node-finish-border-color:var(--color-brand1-6,#0070cc);--step-dot-item-node-finish-color:var(--color-brand1-6,#0070cc);--step-dot-item-tail-bg-color:var(--color-fill1-1,#fafafa);--step-arrow-item-height:var(--s-8,32px);--step-arrow-item-title-size:var(--font-size-body-2,14px);--step-arrow-item-title-wait-color:var(--color-text1-2,#888);--step-arrow-item-title-process-color:var(--color-white,#fff);--step-arrow-item-disabled-background:var(--color-fill1-1,#fafafa);--step-arrow-item-title-disabled-color:var(--color-text1-1,#c1c1c1);--step-circle-item-node-border-width:var(--line-1,1px);--step-circle-item-node-corner:var(--corner-circle,50%);--step-circle-item-tail-size:var(--line-1,1px);--step-circle-item-title-margin-top:var(--s-2,8px);--step-circle-item-content-margin-top:var(--s-1,4px);--step-circle-item-title-size:var(--font-size-body-2,14px);--step-circle-item-title-weight:var(--font-weight-3,bold);--step-circle-item-node-wait-size:var(--s-8,32px);--step-circle-item-node-process-size:var(--s-8,32px);--step-circle-item-node-finish-size:var(--s-8,32px);--step-circle-item-node-disabled-size:var(--s-8,32px);--step-circle-item-tail-disabled-color:var(--color-line1-1,#dedede);--step-circle-item-node-wait-font-weight:var(--font-weight-2,normal);--step-circle-item-node-process-font-weight:var(--font-weight-2,normal);--step-circle-item-node-disabled-font-weight:var(--font-weight-2,normal);--step-circle-item-node-finish-font-weight:var(--font-weight-2,normal);--step-circle-item-node-wait-background:var(--color-white,#fff);--step-circle-item-node-process-color:var(--color-white,#fff);--step-circle-item-node-finish-background:var(--color-white,#fff);--step-circle-item-node-disabled-border-color:var(--color-line1-1,#dedede);--step-circle-item-node-disabled-background:var(--color-white,#fff);--step-circle-item-node-disabled-color:var(--color-text1-1,#c1c1c1);--step-circle-vertical-item-node-padding:var(--s-2,8px);--step-circle-vertical-item-body-margin-left:var(--s-4,16px);--step-circle-vertical-item-title-margin-top:var(--s-2,8px);--step-circle-vertical-item-content-margin-top:var(--s-1,4px);--step-circle-item-content-color:var(--color-text1-3,#555);--step-circle-item-tail-bg-color:var(--color-line1-1,#dedede);--step-circle-vertical-item-tail-size:var(--line-1,1px);--step-dot-item-dot-padding:var(--s-2,8px);--step-dot-item-dot-border-width:var(--line-1,1px);--step-dot-item-content-margin-top:var(--s-1,4px);--step-dot-item-dot-corner:var(--corner-circle,50%);--step-dot-item-title-size:var(--font-size-body-1,12px);--step-dot-item-title-weight:var(--font-weight-3,bold);--step-dot-item-title-margin-top:var(--s-2,8px);--step-dot-item-tail-size:var(--line-1,1px);--step-dot-item-dot-wait-size:var(--s-3,12px);--step-dot-item-dot-process-size:var(--s-3,12px);--step-dot-item-dot-finish-size:var(--s-3,12px);--step-dot-item-dot-disabled-size:var(--s-3,12px);--step-dot-item-tail-disabled-color:var(--color-line1-1,#dedede);--step-dot-item-title-disabled-color:var(--color-text1-1,#c1c1c1);--step-dot-item-node-wait-background:var(--color-white,#fff);--step-dot-item-node-wait-color:var(--color-text1-2,#888);--step-dot-item-node-process-border-color:var(--color-brand1-6,#0070cc);--step-dot-item-node-process-background:var(--color-brand1-6,#0070cc);--step-dot-item-node-finish-background:var(--color-white,#fff);--step-dot-item-node-disabled-border-color:var(--color-line1-2,#c9c9c9);--step-dot-item-node-disabled-background:var(--color-white,#fff);--step-dot-item-node-disabled-color:var(--color-line1-1,#dedede);--step-dot-vertical-item-node-padding:var(--s-2,8px);--step-dot-vertical-item-body-margin-left:var(--s-4,16px);--step-dot-vertical-item-title-margin-top:var(--s-zero,0px);--step-dot-vertical-item-content-margin-top:var(--s-2,8px);--step-dot-item-content-font-size:var(--font-size-caption,12px);--step-dot-item-content-color:var(--color-text1-3,#555);--step-dot-vertical-item-tail-size:var(--line-1,1px);--tab-nav-tab-icon-size-s:var(--icon-xs,12px);--tab-nav-arrow-right-positon-right:var(--s-3,12px);--tab-item-padding-tb-size-m:var(--s-2,8px);--tab-item-text-size-m:var(--font-size-body-2,14px);--tab-item-text-size-s:var(--font-size-body-1,12px);--tab-pure-text-color-hover:var(--color-brand1-6,#0070cc);--tab-wrapped-border-line-color:var(--color-line1-1,#dedede);--tab-wrapped-bg-color:var(--color-white,#fff);--tab-wrapped-bg-color-hover:var(--color-fill1-1,#fafafa);--tab-wrapped-border-line-color-hover:var(--color-line1-1,#dedede);--tab-capsule-text-color:var(--color-text1-3,#555);--tab-capsule-text-color-selected:var(--color-brand1-6,#0070cc);--tab-capsule-bg-color:var(--color-white,#fff);--tab-capsule-bg-color-hover:var(--color-fill1-1,#fafafa);--tab-capsule-bg-color-selected:var(--color-white,#fff);--tab-capsule-tab-border-line-color:var(--color-line1-1,#dedede);--tab-item-padding-tb-size-s:var(--s-1,4px);--tab-nav-arrow-color-normal:var(--color-text1-2,#888);--tab-nav-arrow-color-hover:var(--color-text1-3,#555);--tab-nav-arrow-color-disabled:var(--color-text1-1,#c1c1c1);--tab-pure-text-color-selected:var(--color-brand1-6,#0070cc);--tab-pure-ink-bar-color:var(--color-brand1-6,#0070cc);--tab-pure-divider-border-color:var(--color-line1-1,#dedede);--tab-wrapped-bar-bg-color:var(--color-transparent,transparent);--tab-wrapped-ink-bar-color:var(--color-brand1-6,#0070cc);--tab-wrapped-text-color-hover:var(--color-text1-5,#333);--tab-wrapped-text-color-selected:var(--color-brand1-6,#0070cc);--tab-wrapped-bg-color-selected:var(--color-white,#fff);--tab-capsule-text-color-hover:var(--color-text1-5,#333);--tab-capsule-tab-border-line-color-active:var(--color-brand1-6,#0070cc);--tab-text-item-sep-height:var(--s-3,12px);--tab-text-text-color-hover:var(--color-brand1-6,#0070cc);--tab-text-text-color-selected:var(--color-brand1-6,#0070cc);--tab-capsule-tab-border-line-color-hover:var(--color-brand1-6,#0070cc);--tab-wrapped-tab-margin-right:-1px;--tab-nav-scroll-padding-right-m:var(--s-15,60px);--tab-nav-scroll-padding-right-s:var(--s-14,56px);--tab-nav-tab-icon-size-m:var(--icon-s,16px);--tab-nav-close-icon-size-m:var(--icon-xs,12px);--tab-nav-close-icon-size-s:var(--icon-xxs,8px);--tab-nav-close-icon-padding-l-size-m:var(--s-2,8px);--tab-nav-close-icon-padding-l-size-s:var(--s-2,8px);--tab-nav-arrow-left-positon-right:var(--s-8,32px);--tab-nav-arrow-down-positon-right:var(--s-2,8px);--tab-item-padding-lr-size-m:var(--s-4,16px);--tab-item-padding-lr-size-s:var(--s-3,12px);--tab-close-icon-color:var(--color-text1-3,#555);--tab-close-icon-color-hover:var(--color-text1-4,#111);--tab-close-icon-color-selected:var(--color-brand1-6,#0070cc);--tab-close-icon-color-disabled:var(--color-line1-2,#c9c9c9);--tab-item-font-weight-selected:var(--font-weight-2,normal);--tab-pure-divider-line-width:var(--line-1,1px);--tab-pure-ink-bar-width:var(--line-2,2px);--tab-pure-text-color-normal:var(--color-text1-3,#555);--tab-pure-bg-color:var(--color-transparent,transparent);--tab-pure-text-color-disabled:var(--color-line1-2,#c9c9c9);--tab-pure-divider-shadow:var(--shadow-zero,none);--tab-wrapped-border-line-style:var(--line-solid,solid);--tab-wrapped-border-line-width:var(--line-1,1px);--tab-wrapped-border-side-width:var(--line-1,1px);--tab-wrapped-tab-corner-radius:var(--corner-1,0px);--tab-wrapped-tab-margin-bottom:var(--s-1,4px);--tab-wrapped-ink-bar-width:var(--line-2,2px);--tab-wrapped-nav-item-border-color-active:var(--color-brand1-6,#0070cc);--tab-wrapped-content-border-line-width:var(--line-1,1px);--tab-wrapped-content-border-line-style:var(--line-solid,solid);--tab-wrapped-content-border-line-color:var(--color-line1-2,#c9c9c9);--tab-wrapped-text-color:var(--color-text1-3,#555);--tab-wrapped-text-color-disabled:var(--color-text1-1,#c1c1c1);--tab-wrapped-bg-color-disabled:var(--color-fill1-1,#fafafa);--tab-capsule-text-color-disabled:var(--color-text1-1,#c1c1c1);--tab-capsule-bg-color-disabled:var(--color-fill1-1,#fafafa);--tab-capsule-tab-border-line-color-disabled:var(--color-line1-1,#dedede);--tab-capsule-corner-radius:var(--corner-1,0px);--tab-capsule-tab-border-line-width:var(--line-1,1px);--tab-capsule-tab-border-line-style:var(--line-solid,solid);--tab-text-item-sep-width:var(--line-1,1px);--tab-text-item-sep-color:var(--color-line1-2,#c9c9c9);--tab-text-text-color-normal:var(--color-text1-3,#555);--tab-text-text-color-disabled:var(--color-text1-1,#c1c1c1);--tab-icon-dropdown-content:var(--icon-content-arrow-down,"");--tab-icon-prev-content:var(--icon-content-arrow-left,"");--tab-icon-next-content:var(--icon-content-arrow-right,"");--timeline-item-icon-size:var(--icon-s,16px);--timeline-item-content-margin-left:var(--s-4,16px);--timeline-item-time-margin-bottom:var(--s-2,8px);--timeline-item-body-font-size:var(--font-size-body-1,12px);--timeline-item-title-color:var(--color-text1-5,#333);--timeline-item-tail-color:var(--color-line1-1,#dedede);--timeline-item-done-background:var(--color-fill1-4,#ebebeb);--timeline-item-process-background:var(--color-brand1-6,#0070cc);--timeline-item-node-size:var(--s-4,16px);--timeline-item-custom-node-size:var(--s-10,40px);--timeline-item-custom-node-font-size:var(--font-size-caption,12px);--timeline-item-node-padding:var(--s-1,4px);--timeline-item-dot-size:var(--s-2,8px);--timeline-item-tail-size:var(--line-1,1px);--timeline-item-left-content-width:var(--s-20,80px);--timeline-item-body-margin-top:var(--s-2,8px);--timeline-item-title-font-size:var(--font-size-body-1,12px);--timeline-item-title-font-weight:var(--font-weight-3,bold);--timeline-item-title-margin-top:var(--s-1,4px);--timeline-item-time-margin-top:var(--s-1,4px);--timeline-item-left-body-font-size:var(--font-size-caption,12px);--timeline-item-time-font-size:var(--font-size-caption,12px);--timeline-item-folder-font-size:var(--font-size-caption,12px);--timeline-item-folder-margin-top:var(--s-1,4px);--timeline-item-folder-margin-bottom:var(--s-1,4px);--timeline-item-body-color:var(--color-text1-3,#555);--timeline-item-left-body-color:var(--color-text1-2,#888);--timeline-item-time-color:var(--color-text1-2,#888);--timeline-item-done-dot-size:var(--s-2,8px);--timeline-item-done-color:var(--color-white,#fff);--timeline-item-process-dot-size:var(--s-2,8px);--timeline-item-process-color:var(--color-white,#fff);--timeline-item-success-dot-size:var(--s-2,8px);--timeline-item-success-background:var(--color-success-3,#1e8e3e);--timeline-item-success-color:var(--color-white,#fff);--timeline-item-error-dot-size:var(--s-2,8px);--timeline-item-error-background:var(--color-error-3,#d93026);--timeline-item-error-color:var(--color-white,#fff);--tree-switch-icon-size:var(--icon-xs,12px);--tree-switch-margint-right:var(--s-1,4px);--tree-node-normal-color:var(--color-text1-5,#333);--tree-switch-icon-color:var(--color-text1-3,#555);--tree-switch-border-color:var(--color-fill1-7,#a8a8a8);--tree-line-color:var(--color-line1-1,#dedede);--tree-node-hover-color:var(--color-text1-5,#333);--tree-node-hover-bg-color:var(--color-fill1-4,#ebebeb);--tree-switch-hover-arrow-color:var(--color-text1-3,#555);--tree-switch-hover-icon-color:var(--color-text1-3,#555);--tree-switch-hover-bg-color:var(--color-white,#fff);--tree-switch-hover-border-color:var(--color-text1-3,#555);--tree-node-selected-color:var(--color-brand1-6,#0070cc);--tree-node-selected-background:var(--color-transparent,transparent);--tree-node-disabled-background:var(--color-transparent,transparent);--tree-node-padding:var(--s-1,4px);--tree-node-title-margin:var(--s-1,4px);--tree-node-title-padding:var(--s-1,4px);--tree-node-title-font-size:var(--font-size-body-1,12px);--tree-switch-arrow-size:var(--icon-xs,12px);--tree-switch-size:var(--s-4,16px);--tree-switch-border-width:var(--line-1,1px);--tree-line-width:var(--line-1,1px);--tree-node-normal-background:var(--color-white,#fff);--tree-node-title-border-radius:var(--corner-1,0px);--tree-switch-arrow-color:var(--color-text1-2,#888);--tree-switch-bg-color:var(--color-white,#fff);--tree-switch-corner:var(--corner-1,0px);--tree-line-style:var(--line-solid,solid);--tree-node-disabled-color:var(--color-text1-1,#c1c1c1);--tree-fold-icon-content:var(--icon-content-arrow-down,"");--tree-unfold-icon-content:var(--icon-reset,var(--icon-reset));--tag-size-m-icon-font:var(--icon-xs,12px);--tag-size-s-icon-font:var(--icon-xs,12px);--tag-closable-bordered-bg:var(--color-fill1-1,#fafafa);--tag-fill-bg-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-bordered-text-color:var(--color-text1-5,#333);--tag-bordered-text-color-hover:var(--color-text1-5,#333);--tag-secondary-text-color-hover:var(--color-brand1-6,#0070cc);--tag-bordered-border-color:var(--color-line1-1,#dedede);--tag-checkable-normal-bg-selected:var(--color-brand1-6,#0070cc);--tag-secondary-border-color-hover:var(--color-brand1-6,#0070cc);--tag-checkable-normal-bg-selected-hover:var(--color-brand1-6,#0070cc);--tag-bordered-bg:var(--color-fill1-1,#fafafa);--tag-checkable-normal-border-selected-disabled:var(--color-transparent,transparent);--tag-checkable-primary-bg-color:var(--color-brand1-6,#0070cc);--tag-checkable-primary-border-color:var(--color-brand1-6,#0070cc);--tag-checkable-primary-bg-color-hover:var(--color-brand1-7,#005aa5);--tag-checkable-primary-border-color-hover:var(--color-brand1-7,#005aa5);--tag-checkable-primary-border-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-checkable-primary-bg-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-closable-primary-fill-bg-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-size-l-height:var(--s-7,28px);--tag-size-m-height:var(--s-6,24px);--tag-size-m-padding-lr:var(--s-2,8px);--tag-size-m-text-size:var(--font-size-body-1,12px);--tag-size-s-height:var(--s-5,20px);--tag-corner-radius:var(--corner-semicircle,500px);--tag-size-l-padding-lr:var(--s-4,16px);--tag-size-s-padding-lr:var(--s-2,8px);--tag-checkable-corner-radius:var(--corner-1,0px);--tag-border-width:var(--line-1,1px);--tag-shadow:var(--shadow-zero,none);--tag-size-l-text-size:var(--font-size-subhead,14px);--tag-size-s-text-size:var(--font-size-caption,12px);--tag-size-s-content-min-width:var(--s-7,28px);--tag-size-m-content-min-width:var(--s-10,40px);--tag-size-l-content-min-width:var(--s-12,48px);--tag-size-l-icon-font:var(--icon-xs,12px);--tag-size-l-tick-icon-size:var(--icon-s,16px);--tag-size-m-tick-icon-size:var(--icon-xs,12px);--tag-size-s-tick-icon-size:var(--icon-xxs,8px);--tag-size-l-tick-icon-bg-size:var(--s-9,36px);--tag-size-m-tick-icon-bg-size:var(--s-7,28px);--tag-size-s-tick-icon-bg-size:var(--s-5,20px);--tag-normal-text-color:var(--color-text1-4,#111);--tag-fill-text-color:var(--color-text1-3,#555);--tag-closable-normal-icon-color:var(--color-white,#fff);--tag-closable-normal-icon-color-hover:var(--color-white,#fff);--tag-closable-normal-icon-color-disabled:var(--color-white,#fff);--tag-closable-normal-bg:var(--color-line1-3,#a8a8a8);--tag-closable-normal-bg-hover:var(--color-line1-4,#737373);--tag-closable-normal-bg-disabled:var(--color-line1-1,#dedede);--tag-closable-bordered-text-color:var(--color-text1-3,#555);--tag-closable-bordered-border-color:var(--color-line1-3,#a8a8a8);--tag-closable-bordered-text-color-hover:var(--color-text1-4,#111);--tag-closable-bordered-border-color-hover:var(--color-line1-4,#737373);--tag-closable-bordered-bg-hover:var(--color-transparent,transparent);--tag-closable-bordered-tail-color:var(--color-text1-3,#555);--tag-closable-bordered-tail-color-hover:var(--color-text1-4,#111);--tag-closable-bordered-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-closable-bordered-border-color-disabled:var(--color-line1-1,#dedede);--tag-closable-bordered-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-closable-bordered-bg-disabled:var(--color-transparent,transparent);--tag-fill-tail-color:var(--color-text1-3,#555);--tag-fill-border-color:var(--color-fill1-3,#f5f5f5);--tag-fill-border-color-hover:var(--color-fill1-4,#ebebeb);--tag-fill-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-fill-border-color-disabled:var(--color-fill1-1,#fafafa);--tag-fill-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-bordered-tail-color:var(--color-text1-3,#555);--tag-secondary-text-color:var(--color-brand1-6,#0070cc);--tag-normal-text-color-hover:var(--color-brand1-6,#0070cc);--tag-fill-text-color-hover:var(--color-text1-4,#111);--tag-fill-tail-color-hover:var(--color-text1-4,#111);--tag-bordered-tail-color-hover:var(--color-text1-4,#111);--tag-bordered-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-bordered-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-bordered-border-color-disabled:var(--color-line1-1,#dedede);--tag-bordered-bg-disabled:var(--color-fill1-1,#fafafa);--tag-secondary-border-color:var(--color-brand1-6,#0070cc);--tag-checkable-secondary-bg-selected:var(--color-brand1-6,#0070cc);--tag-bordered-border-color-hover:var(--color-line1-4,#737373);--tag-checkable-secondary-bg-selected-hover:var(--color-brand1-9,#003a6a);--tag-fill-bg-color:var(--color-fill1-3,#f5f5f5);--tag-primary-background-color:var(--color-brand1-6,#0070cc);--tag-secondary-bg:var(--color-transparent,transparent);--tag-fill-bg-color-hover:var(--color-fill1-4,#ebebeb);--tag-bordered-bg-hover:var(--color-transparent,transparent);--tag-secondary-bg-hover:var(--color-transparent,transparent);--tag-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-border-color-disabled:var(--color-line1-1,#dedede);--tag-checkable-fill-text-color:var(--color-text1-3,#555);--tag-checkable-fill-bg-color:var(--color-fill1-3,#f5f5f5);--tag-checkable-fill-border-color:var(--color-fill1-3,#f5f5f5);--tag-checkable-fill-text-color-hover:var(--color-text1-4,#111);--tag-checkable-fill-bg-color-hover:var(--color-fill1-4,#ebebeb);--tag-checkable-fill-border-color-hover:var(--color-fill1-4,#ebebeb);--tag-checkable-fill-tail-color:var(--color-text1-3,#555);--tag-checkable-fill-tail-color-hover:var(--color-text1-4,#111);--tag-checkable-fill-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-fill-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-fill-border-color-disabled:var(--color-fill1-1,#fafafa);--tag-checkable-fill-bg-color-disabled:var(--color-fill1-1,#fafafa);--tag-checkable-normal-text-color:var(--color-text1-3,#555);--tag-checkable-normal-border-color:var(--color-line1-3,#a8a8a8);--tag-checkable-normal-bg:var(--color-transparent,transparent);--tag-checkable-normal-text-color-hover:var(--color-text1-4,#111);--tag-checkable-normal-border-color-hover:var(--color-line1-3,#a8a8a8);--tag-checkable-normal-bg-hover:var(--color-transparent,transparent);--tag-checkable-normal-text-selected-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-normal-bg-selected-disabled:var(--color-fill1-1,#fafafa);--tag-checkable-normal-tick-bg-selected-disabled:var(--color-line1-1,#dedede);--tag-checkable-primary-text-color:var(--color-white,#fff);--tag-checkable-primary-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-primary-text-color-hover:var(--color-white,#fff);--tag-checkable-primary-tail-color:var(--color-white,#fff);--tag-checkable-primary-tail-color-hover:var(--color-white,#fff);--tag-checkable-secondary-bg-selected-disabled:var(--color-line1-1,#dedede);--tag-checkable-normal-icon-color-selected:var(--color-white,#fff);--tag-checkable-normal-icon-color-selected-hover:var(--color-white,#fff);--tag-checkable-normal-icon-color-selected-disabled:var(--color-white,#fff);--tag-checkable-secondary-icon-color-selected:var(--color-white,#fff);--tag-checkable-secondary-icon-color-selected-hover:var(--color-white,#fff);--tag-checkable-secondary-icon-color-selected-disabled:var(--color-white,#fff);--tag-closable-primary-fill-text-color:var(--color-text1-3,#555);--tag-closable-primary-fill-border-color:var(--color-fill1-3,#f5f5f5);--tag-closable-primary-fill-bg-color:var(--color-fill1-3,#f5f5f5);--tag-closable-primary-fill-text-color-hover:var(--color-text1-4,#111);--tag-closable-primary-fill-border-color-hover:var(--color-fill1-4,#ebebeb);--tag-closable-primary-fill-bg-color-hover:var(--color-fill1-4,#ebebeb);--tag-closable-primary-fill-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-closable-primary-fill-border-color-disabled:var(--color-fill1-1,#fafafa);--table-cell-padding-top:var(--s-2,8px);--table-header-padding-top:var(--s-2,8px);--table-normal-border-color:var(--color-line1-5,#ebebeb);--table-th-bg:var(--color-fill1-1,#fafafa);--table-th-color:var(--color-text1-3,#555);--table-group-th-bg:var(--color-fill1-2,#f7f7f7);--table-row-color:var(--color-text1-5,#333);--table-empty-color:var(--color-text1-5,#333);--table-group-footer-bg:var(--color-fill1-2,#f7f7f7);--table-row-hover-bg:var(--color-fill1-1,#fafafa);--table-row-hover-color:var(--color-text1-5,#333);--table-row-selected-bg:var(--color-brand1-1,#f3faff);--table-row-selected-color:var(--color-text1-5,#333);--table-normal-border-width:var(--line-1,1px);--table-th-font-size:var(--font-size-body-1,12px);--table-th-font-weight:var(--font-weight-2,normal);--table-sort-icon-size:var(--icon-xs,12px);--table-filter-icon-size:var(--icon-xs,12px);--table-body-font-size:var(--font-size-body-1,12px);--table-empty-padding:var(--s-8,32px);--table-expanded-icon-size:var(--icon-xs,12px);--table-tree-expanded-icon-size:var(--icon-xs,12px);--table-cell-padding-left:var(--s-4,16px);--table-header-padding-left:var(--s-4,16px);--table-header-icon-margin-left:var(--s-2,8px);--table-size-s-cell-padding-top:var(--s-2,8px);--table-size-s-cell-padding-left:var(--s-2,8px);--table-size-s-header-padding-top:var(--s-2,8px);--table-size-s-header-padding-left:var(--s-2,8px);--table-group-split:var(--s-2,8px);--table-normal-border-style:var(--line-solid,solid);--table-sort-color:var(--color-text1-4,#111);--table-group-th-color:var(--color-text1-4,#111);--table-row-bg:var(--color-white,#fff);--table-td-gray:var(--color-fill1-1,#fafafa);--table-td-normal:var(--color-white,#fff);--table-group-footer-color:var(--color-text1-4,#111);--table-sort-color-current:var(--color-brand1-6,#0070cc);--table-expanded-ctrl-disabled-color:var(--color-text1-2,#888);--table-tree-fold-icon-content:var(--icon-content-arrow-right,"");--table-tree-unfold-icon-content:var(--icon-content-arrow-down,"");--table-expand-fold-icon-content:var(--icon-content-add,"");--table-expand-unfold-icon-content:var(--icon-content-minus,"");--upload-text-list-height:var(--s-11,44px);--upload-text-list-padding-left-right:var(--s-4,16px);--upload-text-list-close-icon-size:var(--icon-xs,12px);--upload-text-list-bg-color:var(--color-fill1-1,#fafafa);--upload-text-list-bg-color-hover:var(--color-fill1-1,#fafafa);--upload-text-list-name-font-color:var(--color-text1-5,#333);--upload-text-list-name-font-color-hover:var(--color-brand1-6,#0070cc);--upload-text-list-size-font-color-hover:var(--color-brand1-6,#0070cc);--upload-image-list-item-bg-color:var(--color-fill1-1,#fafafa);--upload-image-list-item-uploading-bg-color:var(--color-fill1-1,#fafafa);--upload-image-list-item-error-bg-color:var(--color-error-1,#fcebea);--upload-image-list-item-border-color:var(--color-transparent,transparent);--upload-image-list-item-border-color-error:var(--color-transparent,transparent);--upload-image-list-item-border-color-hover:var(--color-transparent,transparent);--upload-image-list-item-picture-border-color:var(--color-line1-1,#dedede);--upload-image-list-item-picture-background-color:var(--color-fill1-1,#fafafa);--upload-card-bg-color:var(--color-white,#fff);--upload-card-border-color:var(--color-line1-1,#dedede);--upload-card-hover-border-color:var(--color-line1-4,#737373);--upload-card-font-color:var(--color-text1-2,#888);--upload-card-icon-color:var(--color-text1-2,#888);--upload-card-size:var(--s-26,104px);--upload-card-hover-font-color:var(--color-text1-3,#555);--upload-card-list-border-color:var(--color-line1-1,#dedede);--upload-card-list-thumbnail-font-color:var(--color-text1-1,#c1c1c1);--upload-card-list-thumbnail-icon-size:var(--icon-l,24px);--upload-card-list-name-font-color:var(--color-text1-5,#333);--upload-drag-zone-over-border-color:var(--color-line1-4,#737373);--upload-disable-text-color:var(--color-text1-1,#c1c1c1);--upload-disable-border-color:var(--color-line1-1,#dedede);--upload-text-list-font-size:var(--font-size-body-1,12px);--upload-text-list-close-icon-right:var(--s-3,12px);--upload-text-list-corner:var(--corner-zero,0);--upload-text-list-bg-color-error:var(--color-error-1,#fcebea);--upload-text-list-error-text-color:var(--color-error-3,#d93026);--upload-text-list-close-icon-color:var(--color-text1-2,#888);--upload-text-list-close-icon-color-hover:var(--color-text1-3,#555);--upload-text-list-size-font-color:var(--color-text1-2,#888);--upload-text-list-progressbar-height:var(--s-2,8px);--upload-image-list-item-padding:var(--s-2,8px);--upload-image-list-item-picture-size:var(--s-12,48px);--upload-image-list-item-picture-icon-size:var(--icon-l,24px);--upload-image-list-item-picture-border-width:var(--line-1,1px);--upload-image-list-item-picture-corner:var(--corner-zero,0);--upload-image-list-item-thumbnail-font-color:var(--color-text1-1,#c1c1c1);--upload-image-list-item-font-size:var(--font-size-body-1,12px);--upload-image-list-close-icon-size:var(--icon-xs,12px);--upload-image-list-close-icon-right:var(--s-1,4px);--upload-image-list-item-border-width:var(--line-1,1px);--upload-image-list-close-icon-color:var(--color-text1-2,#888);--upload-image-list-close-icon-color-hover:var(--color-text1-3,#555);--upload-image-list-progressbar-height:var(--s-2,8px);--upload-card-margin-bottom:var(--s-4,16px);--upload-card-add-icon-size:var(--icon-l,24px);--upload-card-add-text-size:var(--font-size-body-1,12px);--upload-card-add-text-margin-top:var(--s-3,12px);--upload-card-border-style:var(--line-dashed,dashed);--upload-card-add-icon:var(--icon-content-add,"");--upload-card-list-bg-color:var(--color-transparent,transparent);--upload-card-list-uploading-bg-color:var(--color-fill1-1,#fafafa);--upload-card-list-bg-color-error:var(--color-fill1-1,#fafafa);--upload-card-list-margin-right:var(--s-3,12px);--upload-card-list-padding:var(--s-zero,0px);--upload-card-list-corner:var(--corner-zero,0);--upload-card-list-border-color-error:var(--color-error-3,#d93026);--upload-card-list-thumbnail-font-size:var(--font-size-caption,12px);--upload-card-list-name-margin-top:var(--s-1,4px);--upload-card-list-name-font-size:var(--font-size-caption,12px);--upload-card-list-progressbar-height:var(--s-2,8px);--upload-select-card-tool-bg-color:var(--color-black,#000);--upload-select-card-tool-bg-opacity:.7;--upload-drag-zone-border-color:var(--color-line1-3,#a8a8a8);--upload-drag-zone-corner:var(--corner-1,0px);--upload-drag-zone-font-size:var(--font-size-body-2,14px);--upload-drag-zone-icon-size:var(--s-6,24px);--upload-drag-zone-hint-font-size:var(--font-size-caption,12px);--upload-drag-zone-bg-color:var(--color-transparent,transparent);--upload-drag-zone-upload-icon:var(--icon-content-upload,"");--upload-drag-zone-upload-icon-color:var(--color-text1-3,#555);--upload-drag-zone-upload-normal-title-color:var(--color-text1-3,#555);--upload-drag-zone-upload-normal-hint-color:var(--color-text1-2,#888);--transfer-operation-margin-left-right:var(--s-4,16px);--transfer-operation-icon-size:var(--icon-s,16px);--transfer-panel-header-padding-left-right:var(--s-4,16px);--transfer-panel-footer-padding-left-right:var(--s-4,16px);--transfer-simple-move-icon-color:var(--color-text1-2,#888);--transfer-panel-border-color:var(--color-line1-1,#dedede);--transfer-panel-header-text-color:var(--color-text1-5,#333);--transfer-panel-header-background-color:var(--color-white,#fff);--transfer-panel-footer-text-color:var(--color-text1-5,#333);--transfer-simple-panel-footer-text-color:var(--color-link-1,#0070cc);--transfer-simple-panel-item-hover-text-color:var(--color-link-1,#0070cc);--transfer-operation-margin-gutter:var(--s-2,8px);--transfer-panel-border-width:var(--line-1,1px);--transfer-panel-header-padding-top-bottom:var(--s-2,8px);--transfer-panel-header-text-size:var(--font-size-body-1,12px);--transfer-panel-search-margin-top:var(--s-2,8px);--transfer-panel-search-margin-left-right:var(--s-1,4px);--transfer-panel-search-margin-bottom:var(--s-zero,0px);--transfer-panel-list-width:var(--s-45,180px);--transfer-panel-list-height:var(--s-40,160px);--transfer-panel-footer-padding-top-bottom:var(--s-2,8px);--transfer-simple-move-icon:var(--icon-content-switch,"");--transfer-panel-border-corner:var(--corner-1,0px);--transfer-panel-background-color:var(--color-white,#fff);--transfer-panel-search-icon-color:var(--color-text1-2,#888);--transfer-panel-footer-background-color:var(--color-white,#fff);--transfer-panel-footer-shadow:var(--shadow-zero,none);--time-picker-menu-border-color:var(--color-line1-1,#dedede);--time-picker-menu-item-color:var(--color-text1-5,#333);--time-picker-menu-item-color-hover:var(--color-text1-5,#333);--time-picker-menu-item-color-selected:var(--color-brand1-6,#0070cc);--time-picker-menu-item-background-hover:var(--color-fill1-4,#ebebeb);--time-picker-menu-item-background-selected:var(--color-brand1-1,#f3faff);--time-picker-panel-width:var(--s-50,200px);--time-picker-panel-background:var(--color-white,#fff);--time-picker-menu-border-width:var(--line-1,1px);--time-picker-menu-title-font-size:var(--font-size-caption,12px);--time-picker-menu-item-font-size:var(--font-size-caption,12px);--time-picker-menu-title-height:var(--s-7,28px);--time-picker-menu-item-height:var(--s-7,28px);--time-picker-menu-title-color:var(--color-text1-2,#888);--time-picker-menu-title-background:var(--color-white,#fff);--time-pikcer-menu-title-font-weight:var(--font-weight-2,normal);--time-picker-menu-item-color-disabled:var(--color-text1-1,#c1c1c1);--time-picker-menu-item-background:var(--color-white,#fff);--time-picker-menu-item-background-disabled:var(--color-white,#fff);--time-picker-menu-item-font-weight-selected:var(--font-weight-3,bold);--time-picker-clock-icon:var(--icon-content-clock,"");--cascader-select:"cascader-select";--split-btn-trigger-normal-icon-color:var(--color-text1-2,#888);--split-btn-fold-icon-content:var(--icon-content-arrow-down,"");--split-btn-unfold-icon-content:var(--icon-reset,var(--icon-reset));--paragraph-text-color:var(--color-text1-4,#111);--paragraph-s-font-size:var(--font-size-body-1,12px);--paragraph-m-font-size:var(--font-size-body-2,14px);--paragraph-s-line-height:var(--font-lineheight-2,1.5);--paragraph-l-line-height:var(--font-lineheight-3,1.6);--typography-text-color:var(--color-text1-4,#111);--typography-text-strong-font-weight:var(--font-weight-semi-bold,600);--typography-text-code-corner:var(--corner-1,0px);--typography-text-mark-color:var(--color-text1-4,#111);--typography-text-mark-background:var(--color-warning-2,#ffe2a2);--typography-text-code-color:var(--color-text1-4,#111);--typography-text-code-background:var(--color-fill1-2,#f7f7f7);--typography-text-code-border-color:var(--color-line1-1,#dedede);--typography-paragraph-font-size:var(--font-size-body-2,14px);--typography-paragraph-line-height:var(--font-lineheight-2,1.5);--typography-title-h1-font-size:var(--font-size-headline,18px);--typography-title-h2-font-size:var(--font-size-title,16px);--typography-title-h3-font-size:var(--font-size-subhead,14px);--typography-title-h4-font-size:var(--font-size-subhead,14px);--typography-title-h5-font-size:var(--font-size-body-2,14px);--typography-title-h6-font-size:var(--font-size-body-1,12px);--typography-title-font-weight:var(--font-weight-semi-bold,600);--badge-size-dot-width:var(--s-2,8px);--badge-size-list-margin:var(--s-zero,0px);--badge-size-count-config-height:var(--s-4,16px);--badge-size-count-padding-lr:var(--s-1,4px);--badge-size-custom-padding-lr:var(--s-1,4px);--badge-size-count-font:var(--font-size-caption,12px);--badge-color-bg:var(--color-error-3,#d93026);--badge-size-count-border-radius:var(--s-2,8px);--badge-dot-color-bg:var(--color-error-3,#d93026);--badge-size-dot-border-radius:var(--s-2,8px);--badge-size-custom-border-radius:var(--corner-1,0px);--drawer-title-font-size:var(--font-size-subhead,14px);--drawer-title-border-width:var(--line-1,1px);--drawer-content-font-size:var(--font-size-body-1,12px);--drawer-content-padding-top:var(--s-5,20px);--drawer-content-padding-bottom:var(--s-5,20px);--drawer-content-padding-left-right:var(--s-5,20px);--drawer-close-size:var(--icon-xs,12px);--drawer-bg:var(--color-white,#fff);--drawer-border-width:var(--line-1,1px);--drawer-border-color:var(--color-line1-2,#c9c9c9);--drawer-border-style:var(--line-solid,solid);--drawer-corner:var(--corner-1,0px);--drawer-shadow:var(--shadow-2-down,0px 2px 8px 0px rgba(0,0,0,0.13));--drawer-title-color:var(--color-text1-4,#111);--drawer-title-bg-color:var(--color-white,#fff);--drawer-title-border-color:var(--color-line1-2,#c9c9c9);--drawer-content-color:var(--color-text1-3,#555);--drawer-close-color:var(--color-text1-2,#888);--drawer-close-color-hovered:var(--color-text1-4,#111);--drawer-close-bg-hovered:var(--color-transparent,transparent);--drawer-title-padding-top:var(--s-6,24px);--drawer-close-top:var(--s-6,24px);--drawer-close-right:var(--s-6,24px);--drawer-title-padding-bottom:var(--s-4,16px);--drawer-title-padding-left-right:var(--s-6,24px);--number-picker-normal-up-icon:var(--icon-content-arrow-up,"");--number-picker-normal-down-icon:var(--icon-content-arrow-down,"");--number-picker-normal-s-button-width:var(--s-5,20px);--number-picker-normal-m-button-width:var(--s-5,20px);--number-picker-normal-l-button-width:var(--s-5,20px);--number-picker-normal-m-input-width:var(--s-20,80px);--number-picker-normal-l-input-width:var(--s-20,80px);--number-picker-normal-s-button-icon-size:var(--icon-xxs,8px);--number-picker-normal-m-button-icon-size:var(--icon-xxs,8px);--number-picker-normal-l-button-icon-size:var(--icon-xxs,8px);--number-picker-inline-add-icon:var(--icon-content-add,"");--number-picker-inline-minus-icon:var(--icon-content-minus,"");--number-picker-inline-s-button-icon-size:var(--icon-xs,12px);--number-picker-inline-s-button-margin:2px;--number-picker-inline-s-button-corner:var(--corner-1,0px);--number-picker-inline-m-button-icon-size:var(--icon-xs,12px);--number-picker-inline-m-button-margin:2px;--number-picker-inline-m-button-corner:var(--corner-1,0px);--number-picker-inline-m-input-width:var(--s-25,100px);--number-picker-inline-l-button-icon-size:var(--icon-xs,12px);--number-picker-inline-l-button-margin:2px;--number-picker-inline-l-button-corner:var(--corner-1,0px);--number-picker-inline-l-input-width:var(--s-32,128px);--shell-light-header-color:var(--color-black,#000);--shell-light-header-height:var(--s-13,52px);--shell-light-header-background:var(--color-white,#fff);--shell-light-header-shadow:var(--shadow-zero,none);--shell-light-header-divider-size:var(--line-1,1px);--shell-light-header-divider-style:var(--line-solid,solid);--shell-light-header-divider-color:var(--color-line1-1,#dedede);--shell-light-header-paddingLeft:var(--s-4,16px);--shell-light-multitask-min-height:var(--s-10,40px);--shell-light-multitask-background:var(--color-white,#fff);--shell-light-multitask-shadow:var(--shadow-zero,none);--shell-light-multitask-divider-size:var(--line-1,1px);--shell-light-multitask-divider-style:var(--line-solid,solid);--shell-light-multitask-divider-color:var(--color-line1-1,#dedede);--shell-light-multitask-paddingLeft:var(--s-zero,0px);--shell-light-navigation-hoz-marginLeft:var(--s-12,48px);--shell-light-navigation-ver-width:var(--s-42,168px);--shell-light-navigation-ver-shadow:var(--shadow-zero,none);--shell-light-navigation-ver-paddingTop:var(--s-2,8px);--shell-light-navigation-ver-paddingBottom:var(--s-2,8px);--shell-light-navigation-ver-width-mini:var(--s-15,60px);--shell-light-navigation-ver-background:var(--color-white,#fff);--shell-light-navigation-ver-divider-size:var(--line-1,1px);--shell-light-navigation-ver-divider-style:var(--line-solid,solid);--shell-light-navigation-ver-divider-color:var(--color-line1-1,#dedede);--shell-light-local-navigation-width:var(--s-42,168px);--shell-light-local-navigation-background:var(--color-fill1-4,#ebebeb);--shell-light-local-navigation-paddingTop:var(--s-2,8px);--shell-light-local-navigation-paddingBottom:var(--s-2,8px);--shell-light-local-navigation-shadow:var(--shadow-zero,none);--shell-light-local-navigation-divider-size:var(--line-1,1px);--shell-light-local-navigation-divider-style:var(--line-solid,solid);--shell-light-local-navigation-divider-color:var(--color-line1-1,#dedede);--shell-light-appbar-background:var(--color-white,#fff);--shell-light-appbar-min-height:var(--s-12,48px);--shell-light-appbar-shadow:var(--shadow-zero,none);--shell-light-appbar-paddingLeft:var(--s-6,24px);--shell-light-appbar-divider-size:var(--line-1,1px);--shell-light-appbar-divider-style:var(--line-solid,solid);--shell-light-appbar-divider-color:var(--color-line1-1,#dedede);--shell-light-content-background:var(--color-fill1-3,#f5f5f5);--shell-light-content-paddingLeft:var(--s-5,20px);--shell-light-content-paddingTop:var(--s-5,20px);--shell-light-footer-min-height:var(--s-14,56px);--shell-light-footer-background:var(--color-transparent,transparent);--shell-light-footer-color:var(--color-text1-1,#c1c1c1);--shell-light-footer-font-size:var(--font-size-body-2,14px);--shell-light-ancillary-width:var(--s-42,168px);--shell-light-ancillary-background:var(--color-white,#fff);--shell-light-ancillary-paddingTop:var(--s-2,8px);--shell-light-ancillary-paddingBottom:var(--s-2,8px);--shell-light-ancillary-shadow:var(--shadow-zero,none);--shell-light-ancillary-divider-size:var(--line-1,1px);--shell-light-ancillary-divider-style:var(--line-solid,solid);--shell-light-ancillary-divider-color:var(--color-line1-1,#dedede);--shell-light-tooldock-height:var(--s-13,52px);--shell-light-tooldock-width:var(--s-13,52px);--shell-light-tooldock-background:var(--color-fill1-4,#ebebeb);--shell-light-tooldock-paddingTop:var(--s-2,8px);--shell-light-tooldock-paddingBottom:var(--s-2,8px);--shell-light-tooldock-shadow:var(--shadow-zero,none);--shell-light-tooldock-divider-size:var(--line-1,1px);--shell-light-tooldock-divider-style:var(--line-solid,solid);--shell-light-tooldock-divider-color:var(--color-line1-1,#dedede);--shell-light-tooldock-item-paddingTop:var(--s-2,8px);--shell-light-tooldock-item-color:var(--color-text1-3,#555);--shell-light-tooldock-item-color-hover:var(--color-text1-4,#111);--shell-light-tooldock-item-color-active:var(--color-text1-4,#111);--shell-light-tooldock-item-background:var(--color-transparent,transparent);--shell-light-tooldock-item-background-hover:var(--color-fill1-3,#f5f5f5);--shell-light-tooldock-item-background-active:var(--color-fill1-3,#f5f5f5);--shell-dark-header-color:var(--color-white,#fff);--shell-dark-header-height:var(--s-13,52px);--shell-dark-header-background:var(--color-black,#000);--shell-dark-header-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--shell-dark-header-divider-size:var(--line-1,1px);--shell-dark-header-divider-style:var(--line-solid,solid);--shell-dark-header-divider-color:#1f1f1f;--shell-dark-header-paddingLeft:var(--s-4,16px);--shell-dark-multitask-min-height:var(--s-10,40px);--shell-dark-multitask-background:var(--color-white,#fff);--shell-dark-multitask-shadow:var(--shadow-zero,none);--shell-dark-multitask-divider-size:var(--line-1,1px);--shell-dark-multitask-divider-style:var(--line-solid,solid);--shell-dark-multitask-divider-color:var(--color-line1-1,#dedede);--shell-dark-multitask-paddingLeft:var(--s-zero,0px);--shell-dark-navigation-hoz-marginLeft:var(--s-12,48px);--shell-dark-navigation-ver-width:var(--s-42,168px);--shell-dark-navigation-ver-shadow:var(--shadow-zero,none);--shell-dark-navigation-ver-paddingTop:var(--s-2,8px);--shell-dark-navigation-ver-paddingBottom:var(--s-2,8px);--shell-dark-navigation-ver-width-mini:var(--s-15,60px);--shell-dark-navigation-ver-background:var(--color-text1-4,#111);--shell-dark-navigation-ver-divider-size:var(--line-1,1px);--shell-dark-navigation-ver-divider-style:var(--line-solid,solid);--shell-dark-navigation-ver-divider-color:var(--color-line1-1,#dedede);--shell-dark-local-navigation-width:var(--s-42,168px);--shell-dark-local-navigation-background:var(--color-fill1-4,#ebebeb);--shell-dark-local-navigation-paddingTop:var(--s-2,8px);--shell-dark-local-navigation-paddingBottom:var(--s-2,8px);--shell-dark-local-navigation-shadow:var(--shadow-zero,none);--shell-dark-local-navigation-divider-size:var(--line-1,1px);--shell-dark-local-navigation-divider-style:var(--line-solid,solid);--shell-dark-local-navigation-divider-color:var(--color-line1-1,#dedede);--shell-dark-appbar-background:var(--color-white,#fff);--shell-dark-appbar-min-height:var(--s-12,48px);--shell-dark-appbar-shadow:var(--shadow-zero,none);--shell-dark-appbar-paddingLeft:var(--s-6,24px);--shell-dark-appbar-divider-size:var(--line-1,1px);--shell-dark-appbar-divider-style:var(--line-solid,solid);--shell-dark-appbar-divider-color:var(--color-line1-1,#dedede);--shell-dark-content-background:var(--color-fill1-3,#f5f5f5);--shell-dark-content-paddingLeft:var(--s-5,20px);--shell-dark-content-paddingTop:var(--s-5,20px);--shell-dark-footer-min-height:var(--s-14,56px);--shell-dark-footer-background:var(--color-transparent,transparent);--shell-dark-footer-color:var(--color-text1-1,#c1c1c1);--shell-dark-footer-font-size:var(--font-size-body-2,14px);--shell-dark-ancillary-width:var(--s-42,168px);--shell-dark-ancillary-background:var(--color-white,#fff);--shell-dark-ancillary-paddingTop:var(--s-2,8px);--shell-dark-ancillary-paddingBottom:var(--s-2,8px);--shell-dark-ancillary-shadow:var(--shadow-zero,none);--shell-dark-ancillary-divider-size:var(--line-1,1px);--shell-dark-ancillary-divider-style:var(--line-solid,solid);--shell-dark-ancillary-divider-color:var(--color-line1-1,#dedede);--shell-dark-tooldock-height:var(--s-13,52px);--shell-dark-tooldock-width:var(--s-13,52px);--shell-dark-tooldock-background:var(--color-fill1-4,#ebebeb);--shell-dark-tooldock-paddingTop:var(--s-2,8px);--shell-dark-tooldock-paddingBottom:var(--s-2,8px);--shell-dark-tooldock-shadow:var(--shadow-zero,none);--shell-dark-tooldock-divider-size:var(--line-1,1px);--shell-dark-tooldock-divider-style:var(--line-solid,solid);--shell-dark-tooldock-divider-color:var(--color-line1-1,#dedede);--shell-dark-tooldock-item-paddingTop:var(--s-2,8px);--shell-dark-tooldock-item-color:var(--color-text1-3,#555);--shell-dark-tooldock-item-color-hover:var(--color-text1-4,#111);--shell-dark-tooldock-item-color-active:var(--color-text1-4,#111);--shell-dark-tooldock-item-background:var(--color-transparent,transparent);--shell-dark-tooldock-item-background-hover:var(--color-fill1-3,#f5f5f5);--shell-dark-tooldock-item-background-active:var(--color-fill1-3,#f5f5f5);--shell-brand-header-color:var(--color-white,#fff);--shell-brand-header-height:var(--s-13,52px);--shell-brand-header-background:var(--color-brand1-6,#0070cc);--shell-brand-header-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--shell-brand-header-divider-size:var(--line-1,1px);--shell-brand-header-divider-style:var(--line-solid,solid);--shell-brand-header-divider-color:var(--color-line1-1,#dedede);--shell-brand-header-paddingLeft:var(--s-4,16px);--shell-brand-multitask-min-height:var(--s-10,40px);--shell-brand-multitask-background:var(--color-white,#fff);--shell-brand-multitask-shadow:var(--shadow-zero,none);--shell-brand-multitask-divider-size:var(--line-1,1px);--shell-brand-multitask-divider-style:var(--line-solid,solid);--shell-brand-multitask-divider-color:var(--color-line1-1,#dedede);--shell-brand-multitask-paddingLeft:var(--s-zero,0px);--shell-brand-navigation-hoz-marginLeft:var(--s-12,48px);--shell-brand-navigation-ver-width:var(--s-42,168px);--shell-brand-navigation-ver-shadow:var(--shadow-zero,none);--shell-brand-navigation-ver-paddingTop:var(--s-2,8px);--shell-brand-navigation-ver-paddingBottom:var(--s-2,8px);--shell-brand-navigation-ver-width-mini:var(--s-15,60px);--shell-brand-navigation-ver-background:var(--color-white,#fff);--shell-brand-navigation-ver-divider-size:var(--line-1,1px);--shell-brand-navigation-ver-divider-style:var(--line-solid,solid);--shell-brand-navigation-ver-divider-color:var(--color-line1-1,#dedede);--shell-brand-local-navigation-width:var(--s-42,168px);--shell-brand-local-navigation-background:var(--color-fill1-4,#ebebeb);--shell-brand-local-navigation-paddingTop:var(--s-2,8px);--shell-brand-local-navigation-paddingBottom:var(--s-2,8px);--shell-brand-local-navigation-shadow:var(--shadow-zero,none);--shell-brand-local-navigation-divider-size:var(--line-1,1px);--shell-brand-local-navigation-divider-style:var(--line-solid,solid);--shell-brand-local-navigation-divider-color:var(--color-line1-1,#dedede);--shell-brand-appbar-background:var(--color-white,#fff);--shell-brand-appbar-min-height:var(--s-12,48px);--shell-brand-appbar-shadow:var(--shadow-zero,none);--shell-brand-appbar-paddingLeft:var(--s-6,24px);--shell-brand-appbar-divider-size:var(--line-1,1px);--shell-brand-appbar-divider-style:var(--line-solid,solid);--shell-brand-appbar-divider-color:var(--color-line1-1,#dedede);--shell-brand-content-background:var(--color-fill1-3,#f5f5f5);--shell-brand-content-paddingLeft:var(--s-5,20px);--shell-brand-content-paddingTop:var(--s-5,20px);--shell-brand-footer-min-height:var(--s-14,56px);--shell-brand-footer-background:var(--color-transparent,transparent);--shell-brand-footer-color:var(--color-text1-1,#c1c1c1);--shell-brand-footer-font-size:var(--font-size-body-2,14px);--shell-brand-ancillary-width:var(--s-42,168px);--shell-brand-ancillary-background:var(--color-white,#fff);--shell-brand-ancillary-paddingTop:var(--s-2,8px);--shell-brand-ancillary-paddingBottom:var(--s-2,8px);--shell-brand-ancillary-shadow:var(--shadow-zero,none);--shell-brand-ancillary-divider-size:var(--line-1,1px);--shell-brand-ancillary-divider-style:var(--line-solid,solid);--shell-brand-ancillary-divider-color:var(--color-line1-1,#dedede);--shell-brand-tooldock-height:var(--s-13,52px);--shell-brand-tooldock-width:var(--s-13,52px);--shell-brand-tooldock-background:var(--color-fill1-4,#ebebeb);--shell-brand-tooldock-paddingTop:var(--s-2,8px);--shell-brand-tooldock-paddingBottom:var(--s-2,8px);--shell-brand-tooldock-shadow:var(--shadow-zero,none);--shell-brand-tooldock-divider-size:var(--line-1,1px);--shell-brand-tooldock-divider-style:var(--line-solid,solid);--shell-brand-tooldock-divider-color:var(--color-line1-1,#dedede);--shell-brand-tooldock-item-paddingTop:var(--s-2,8px);--shell-brand-tooldock-item-color:var(--color-text1-3,#555);--shell-brand-tooldock-item-color-hover:var(--color-text1-4,#111);--shell-brand-tooldock-item-color-active:var(--color-text1-4,#111);--shell-brand-tooldock-item-background:var(--color-transparent,transparent);--shell-brand-tooldock-item-background-hover:var(--color-fill1-3,#f5f5f5);--shell-brand-tooldock-item-background-active:var(--color-fill1-3,#f5f5f5);--divider-hoz-size:var(--line-1,1px);--divider-hoz-color:var(--color-line1-2,#c9c9c9);--divider-hoz-text-center-paddingLeft:var(--s-4,16px);--divider-hoz-text-left-paddingLeft:var(--s-4,16px);--divider-hoz-text-marginTop:var(--s-4,16px);--divider-hoz-marginTop:var(--s-4,16px);--divider-hoz-text-size:var(--font-size-subhead,14px);--divider-hoz-text-weight:var(--font-weight-2,normal);--divider-hoz-text-color:var(--color-text1-4,#111);--divider-ver-size:var(--line-1,1px);--divider-ver-color:var(--color-line1-2,#c9c9c9);--divider-ver-marginLeft:var(--s-2,8px);--tree-select-padding-vertical:var(--s-2,8px);--tree-select-padding-horizontal:var(--s-5,20px);--tree-select-background:var(--color-white,#fff);--nav-hoz-height:var(--s-11,44px);--nav-hoz-font-size:var(--font-size-body-1,12px);--nav-hoz-item-margin-tb:var(--s-zero,0px);--nav-hoz-item-margin-lr:var(--s-zero,0px);--nav-hoz-item-padding-lr:var(--s-5,20px);--nav-hoz-item-corner:var(--corner-zero,0);--nav-hoz-item-selected-active-line:var(--line-2,2px);--nav-hoz-item-hover-active-line:var(--line-zero,0px);--nav-ver-height:var(--s-10,40px);--nav-ver-font-size:var(--font-size-body-1,12px);--nav-ver-item-margin-tb:var(--s-zero,0px);--nav-ver-item-margin-lr:var(--s-zero,0px);--nav-ver-item-padding-lr:var(--s-5,20px);--nav-ver-item-corner:var(--corner-zero,0);--nav-ver-item-selected-active-line:var(--line-2,2px);--nav-ver-item-hover-active-line:var(--line-zero,0px);--nav-ver-sub-nav-height:var(--s-10,40px);--nav-ver-sub-nav-font-size:var(--font-size-caption,12px);--nav-group-height:var(--s-10,40px);--nav-group-font-size:var(--font-size-subhead,14px);--nav-icon-self-size:var(--icon-xs,12px);--nav-icon-self-margin:var(--s-1,4px);--nav-icon-only-font-size:var(--icon-s,16px);--nav-primary-bg-color:var(--color-text1-4,#111);--nav-primary-border-width:var(--line-zero,0px);--nav-primary-border-color:var(--color-text1-4,#111);--nav-primary-text-color:var(--color-white,#fff);--nav-primary-text-style:var(--font-weight-2,normal);--nav-primary-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--nav-primary-sub-nav-bg-color:var(--color-text1-4,#111);--nav-primary-sub-nav-text-color:var(--color-white,#fff);--nav-primary-sub-nav-text-style:var(--font-weight-2,normal);--nav-primary-group-text-color:var(--color-text1-2,#888);--nav-primary-group-text-style:var(--font-weight-2,normal);--nav-primary-item-hover-bg-color:var(--color-black,#000);--nav-primary-item-hover-text-color:var(--color-white,#fff);--nav-primary-item-hover-text-style:var(--font-weight-2,normal);--nav-primary-item-hover-active-color:var(--color-brand1-6,#0070cc);--nav-primary-sub-nav-hover-bg-color:var(--color-black,#000);--nav-primary-sub-nav-hover-text-color:var(--color-white,#fff);--nav-primary-item-selected-bg-color:var(--color-black,#000);--nav-primary-item-selected-text-color:var(--color-white,#fff);--nav-primary-item-selected-text-style:var(--font-weight-3,bold);--nav-primary-item-selected-active-color:var(--color-brand1-6,#0070cc);--nav-primary-sub-nav-selected-bg-color:var(--color-black,#000);--nav-primary-sub-nav-selected-text-color:var(--color-white,#fff);--nav-primary-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-primary-item-opened-bg-color:var(--color-black,#000);--nav-primary-item-opened-text-color:var(--color-white,#fff);--nav-secondary-bg-color:var(--color-brand1-6,#0070cc);--nav-secondary-border-width:var(--line-zero,0px);--nav-secondary-border-color:var(--color-brand1-6,#0070cc);--nav-secondary-text-color:var(--color-white,#fff);--nav-secondary-text-style:var(--font-weight-2,normal);--nav-secondary-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--nav-secondary-sub-nav-bg-color:var(--color-brand1-6,#0070cc);--nav-secondary-sub-nav-text-color:var(--color-white,#fff);--nav-secondary-sub-nav-text-style:var(--font-weight-2,normal);--nav-secondary-group-text-color:var(--color-white,#fff);--nav-secondary-group-text-style:var(--font-weight-2,normal);--nav-secondary-item-hover-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-item-hover-text-color:var(--color-white,#fff);--nav-secondary-item-hover-text-style:var(--font-weight-2,normal);--nav-secondary-item-hover-active-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-hover-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-hover-text-color:var(--color-white,#fff);--nav-secondary-item-selected-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-item-selected-text-color:var(--color-white,#fff);--nav-secondary-item-selected-text-style:var(--font-weight-3,bold);--nav-secondary-item-selected-active-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-selected-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-selected-text-color:var(--color-white,#fff);--nav-secondary-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-secondary-item-opened-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-item-opened-text-color:var(--color-white,#fff);--nav-normal-bg-color:var(--color-white,#fff);--nav-normal-border-color:var(--color-line1-1,#dedede);--nav-normal-text-color:var(--color-text1-4,#111);--nav-normal-text-style:var(--font-weight-2,normal);--nav-normal-border-line:var(--line-1,1px);--nav-normal-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--nav-normal-sub-nav-bg-color:var(--color-white,#fff);--nav-normal-sub-nav-text-color:var(--color-text1-4,#111);--nav-normal-sub-nav-text-style:var(--font-weight-2,normal);--nav-normal-group-text-color:var(--color-text1-2,#888);--nav-normal-group-text-style:var(--font-weight-2,normal);--nav-normal-item-hover-bg-color:var(--color-white,#fff);--nav-normal-item-hover-text-color:var(--color-brand1-6,#0070cc);--nav-normal-item-hover-text-style:var(--font-weight-2,normal);--nav-normal-item-hover-active-color:var(--color-brand1-6,#0070cc);--nav-normal-sub-nav-hover-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-sub-nav-hover-text-color:var(--color-brand1-6,#0070cc);--nav-normal-item-selected-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-item-selected-text-color:var(--color-brand1-6,#0070cc);--nav-normal-item-selected-text-style:var(--font-weight-3,bold);--nav-normal-item-selected-active-color:var(--color-brand1-6,#0070cc);--nav-normal-sub-nav-selected-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-sub-nav-selected-text-color:var(--color-brand1-6,#0070cc);--nav-normal-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-normal-item-opened-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-item-opened-text-color:var(--color-brand1-6,#0070cc);--nav-line-bg-color:var(--color-transparent,transparent);--nav-line-border-color:var(--color-line1-2,#c9c9c9);--nav-line-text-color:var(--color-text1-4,#111);--nav-line-text-style:var(--font-weight-2,normal);--nav-line-border-line:var(--line-1,1px);--nav-line-sub-nav-bg-color:var(--color-transparent,transparent);--nav-line-sub-nav-text-color:var(--color-text1-4,#111);--nav-line-sub-nav-text-style:var(--font-weight-2,normal);--nav-line-item-hover-bg-color:var(--color-transparent,transparent);--nav-line-item-hover-text-color:var(--color-brand1-6,#0070cc);--nav-line-item-hover-text-style:var(--font-weight-2,normal);--nav-line-item-hover-active-color:var(--color-brand1-6,#0070cc);--nav-line-sub-nav-hover-bg-color:var(--color-transparent,transparent);--nav-line-sub-nav-hover-text-color:var(--color-brand1-6,#0070cc);--nav-line-item-selected-bg-color:var(--color-transparent,transparent);--nav-line-item-selected-text-color:var(--color-brand1-6,#0070cc);--nav-line-item-selected-text-style:var(--font-weight-3,bold);--nav-line-item-selected-active-color:var(--color-brand1-6,#0070cc);--nav-line-sub-nav-selected-bg-color:var(--color-transparent,transparent);--nav-line-sub-nav-selected-text-color:var(--color-brand1-6,#0070cc);--nav-line-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-line-item-opened-bg-color:var(--color-transparent,transparent);--nav-line-item-opened-text-color:var(--color-brand1-6,#0070cc);--nav-line-group-text-color:var(--color-text1-2,#888);--nav-line-group-text-style:var(--font-weight-2,normal);--list-size-s-title-font-size:var(--font-size-subhead,14px);--list-size-s-title-font-weight:var(--font-weight-3,bold);--list-size-s-item-padding-lr:var(--s-zero,0px);--list-size-s-item-padding-tb:var(--s-2,8px);--list-size-s-item-media-margin:var(--s-2,8px);--list-size-s-item-content-font-size:var(--font-size-body-1,12px);--list-size-s-item-content-line-height:var(--font-lineheight-1,1);--list-size-s-item-title-font-weight:var(--font-weight-2,normal);--list-size-s-item-title-font-size:var(--font-size-body-2,14px);--list-size-s-item-title-line-height:var(--font-lineheight-2,1.5);--list-size-m-title-font-size:var(--font-size-title,16px);--list-size-m-title-font-weight:var(--font-weight-3,bold);--list-size-m-item-padding-lr:var(--s-zero,0px);--list-size-m-item-padding-tb:var(--s-4,16px);--list-size-m-item-media-margin:var(--s-2,8px);--list-size-m-item-content-font-size:var(--font-size-body-2,14px);--list-size-m-item-content-line-height:var(--font-lineheight-2,1.5);--list-size-m-item-title-font-size:var(--font-size-subhead,14px);--list-size-m-item-title-line-height:var(--font-lineheight-2,1.5);--list-size-m-item-title-font-weight:var(--font-weight-2,normal);--list-divider-color:var(--color-line1-2,#c9c9c9);--list-title-color:var(--color-text1-4,#111);--list-content-color:var(--color-text1-3,#555);--list-extra-color:var(--color-text1-2,#888);--avatar-size-large:var(--s-13,52px);--avatar-size-medium:var(--s-10,40px);--avatar-size-small:var(--s-7,28px);--avatar-border-radius:var(--corner-1,0px);--line-0:var(--line-zero);--shadow-0:var(--shadow-zero);--corner-right-angle:var(--corner-zero);--s-0:var(--s-zero);--alicloudfe-components-theme:wind;--xconsole-icon-font-family:WindIcon;--body-bg:#fff;--select-menu-select-icon-ml:-14px;--menu-icon-selected-size:12px;--checkbox-icon-scale:0.8;--checkbox-icon-size:12px;--input-clear-icon-transform:none;--overlay-offset:0;--card-border-color:transparent;--btn-large-min-width:10px;--switch-disabled-on-bg-color:var(--color-success-2);--number-picker-handler-btn-border:1px solid #dedede;--number-picker-handler-btn-border-hover:1px solid #737373;--number-picker-final-height-small:28px;--number-picker-final-height-medium:32px;--number-picker-final-height-large:36px;--number-picker-inline-group-border:none;--number-picker-inline-group-padding:0px;--number-picker-inline-group-btn-border:1px solid #dedede;--number-picker-inline-group-btn-border-hover:1px solid #737373;--number-picker-border-radius:0px;--pagination-item-disabled-bg:#fafafa;--message-close-icon-size:12px;--message-size-m-close-top:13px;--message-size-m-close-right:14px;--message-size-l-close-top:13px;--message-size-l-close-right:14px;--message-size-m-title-content-padding-left:4px;--message-border-width:0px;--menu-padding-horizontal-selectable:24px;--table-expand-icon-size:12px;--menu-padding:8px 0;--dialog-message-padding:24px}.ml-8{margin-left:8px}.mt-8{margin-top:8px}.mr-8{margin-right:8px}.mb-8{margin-bottom:8px}.ml-16{margin-left:16px}.mt-16{margin-top:16px}.mr-16{margin-right:16px}.mb-16{margin-bottom:16px} \ No newline at end of file + */.next-sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;top:0;margin:-1px}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}ol,ul{list-style:none;margin:0;padding:0}li{margin-left:0}hr{border:solid #c0c6cc;border-width:1px 0 0;border:0 var(--line-solid,solid) var(--color-line1-2,#c0c6cc);border-top:var(--line-1,1px) var(--line-solid,solid) var(--color-line1-2,#c0c6cc)}a{text-decoration:none}a:link{color:#0064c8;color:var(--color-link-1,#0064c8)}a:visited{color:#0064c8;color:var(--color-link-2,#0064c8)}a:active,a:hover{color:#0064c8;color:var(--color-link-3,#0064c8)}a:active{text-decoration:underline}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-thin.ttf) format("truetype");font-weight:200}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-light.ttf) format("truetype");font-weight:300}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-regular.ttf) format("truetype");font-weight:400}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-medium.ttf) format("truetype");font-weight:500}@font-face{font-family:Roboto;src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.eot);src:url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.eot#iefix) format("embedded-opentype"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.woff2) format("woff2"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.woff) format("woff"),url(//i.alicdn.com/artascope-font/20160419204543/font/roboto-bold.ttf) format("truetype");font-weight:700}html{font-size:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571;color:#111;color:var(--color-text1-4,#111)}button,input,optgroup,select,textarea{font-family:inherit}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{margin-bottom:10px;margin-bottom:calc(var(--font-size-headline, 20px)*0.5);font-size:20px;font-size:var(--font-size-headline,20px);line-height:36px}h1,h2{font-weight:500;font-weight:var(--font-weight-medium,500)}h2{margin-bottom:8px;margin-bottom:calc(var(--font-size-title, 16px)*0.5);font-size:16px;font-size:var(--font-size-title,16px);line-height:30px}h3,h4{margin-bottom:7px;margin-bottom:calc(var(--font-size-subhead, 14px)*0.5);font-size:14px;font-size:var(--font-size-subhead,14px)}h3,h4,h5{font-weight:400;font-weight:var(--font-weight-2,normal);line-height:24px}h5{margin-bottom:6px;margin-bottom:calc(var(--font-size-body-1, 12px)*0.5);font-size:14px;font-size:var(--font-size-body-2,14px)}h6{margin-bottom:7px;margin-bottom:calc(var(--font-size-body-2, 14px)*0.5);font-weight:500;font-weight:var(--font-weight-medium,500)}h6,p{font-size:12px;font-size:var(--font-size-body-1,12px);line-height:20px}p{margin-bottom:6px;margin-bottom:calc(var(--font-size-body-1, 12px)*0.5);font-weight:400;font-weight:var(--font-weight-2,normal)}strong{font-weight:500}small{font-size:75%}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100px);-ms-transform:translateY(-100px);transform:translateY(-100px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100px);-ms-transform:translateY(-100px);transform:translateY(-100px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDownSmall{0%{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDownSmall{0%{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-24px);-ms-transform:translateY(-24px);transform:translateY(-24px)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-24px);-ms-transform:translateY(-24px);transform:translateY(-24px)}}@-webkit-keyframes fadeOutUpSmall{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}}@keyframes fadeOutUpSmall{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInUp{0%{opacity:0;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{opacity:0;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}to{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@-webkit-keyframes zoomInBig{0%{opacity:0;-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}to{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes zoomInBig{0%{opacity:0;-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}to{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOutBig{0%{opacity:1}to{opacity:0;-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOutBig{0%{opacity:1}to{opacity:0;-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes expandInDown{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@keyframes expandInDown{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@-webkit-keyframes expandInUp{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@keyframes expandInUp{0%{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@-webkit-keyframes expandInWithFade{0%{opacity:0}40%{opacity:.1}50%{opacity:.9}to{opacity:1}}@keyframes expandInWithFade{0%{opacity:0}40%{opacity:.1}50%{opacity:.9}to{opacity:1}}@-webkit-keyframes expandOutUp{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@keyframes expandOutUp{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left top 0;-ms-transform-origin:left top 0;transform-origin:left top 0}}@-webkit-keyframes expandOutDown{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@keyframes expandOutDown{0%{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}to{opacity:0;-webkit-transform:scaleY(.6);-ms-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:left bottom 0;-ms-transform-origin:left bottom 0;transform-origin:left bottom 0}}@-webkit-keyframes expandOutWithFade{0%{opacity:1}70%{opacity:0}to{opacity:0}}@keyframes expandOutWithFade{0%{opacity:1}70%{opacity:0}to{opacity:0}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}20%{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}20%{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInDown,.fadeInLeft{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInRight,.fadeInUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOut,.fadeOutDown{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOutLeft,.fadeOutRight{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideInDown,.slideInUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideInLeft,.slideInRight{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.35s;animation-duration:.35s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutRight,.slideOutUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.slideOutDown,.slideOutLeft{-webkit-backface-visibility:hidden;backface-visibility:hidden}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomIn,.zoomOut{-webkit-backface-visibility:hidden;backface-visibility:hidden}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInDown{-webkit-animation-name:expandInDown;animation-name:expandInDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInDown,.expandOutUp{-webkit-backface-visibility:hidden;backface-visibility:hidden}.expandOutUp{-webkit-animation-name:expandOutUp;animation-name:expandOutUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInUp{-webkit-animation-name:expandInUp;animation-name:expandInUp;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.expandInUp,.expandOutDown{-webkit-backface-visibility:hidden;backface-visibility:hidden}.expandOutDown{-webkit-animation-name:expandOutDown;animation-name:expandOutDown;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInDownSmall{-webkit-animation-name:fadeInDownSmall;animation-name:fadeInDownSmall;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.fadeInDownSmall,.fadeOutUpSmall{-webkit-backface-visibility:hidden;backface-visibility:hidden}.fadeOutUpSmall{-webkit-animation-name:fadeOutUpSmall;animation-name:fadeOutUpSmall;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomInBig{-webkit-animation-name:zoomInBig;animation-name:zoomInBig;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.zoomInBig,.zoomOutBig{-webkit-backface-visibility:hidden;backface-visibility:hidden}.zoomOutBig{-webkit-animation-name:zoomOutBig;animation-name:zoomOutBig;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-backface-visibility:hidden;backface-visibility:hidden}.expand-enter{overflow:hidden}.expand-enter-active{-webkit-transition:all .3s ease-out;transition:all .3s ease-out}.expand-enter-active>*{-webkit-animation-name:expandInWithFade;animation-name:expandInWithFade;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden}.expand-leave{overflow:hidden}.expand-leave-active{-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.expand-leave-active>*{-webkit-animation-name:expandOutWithFade;animation-name:expandOutWithFade;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-backface-visibility:hidden;backface-visibility:hidden}.next-icon[dir=rtl]:before{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}@font-face{font-family:NextIcon;src:url(//at.alicdn.com/t/font_1899989_lqawitevtzp.eot);src:url(//at.alicdn.com/t/font_1899989_lqawitevtzp.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.woff2) format("woff2"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.woff) format("woff"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.ttf) format("truetype"),url(//at.alicdn.com/t/font_1899989_lqawitevtzp.svg#NextIcon) format("svg")}.next-icon{display:inline-block;font-style:normal;font-weight:400;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.next-icon:before{display:inline-block;vertical-align:middle;text-align:center}.next-icon-smile:before{content:"\e65f";content:var(--icon-content-smile,"")}.next-icon-cry:before{content:"\e65d";content:var(--icon-content-cry,"")}.next-icon-success:before{content:"\e60a";content:var(--icon-content-success,"")}.next-icon-warning:before{content:"\e60b";content:var(--icon-content-warning,"")}.next-icon-prompt:before{content:"\e60c";content:var(--icon-content-prompt,"")}.next-icon-error:before{content:"\e60d";content:var(--icon-content-error,"")}.next-icon-help:before{content:"\e673";content:var(--icon-content-help,"")}.next-icon-clock:before{content:"\e621";content:var(--icon-content-clock,"")}.next-icon-success-filling:before{content:"\e63a";content:var(--icon-content-success-filling,"")}.next-icon-delete-filling:before{content:"\e623";content:var(--icon-content-delete-filling,"")}.next-icon-favorites-filling:before{content:"\e60e";content:var(--icon-content-favorites-filling,"")}.next-icon-add:before{content:"\e655";content:var(--icon-content-add,"")}.next-icon-minus:before{content:"\e601";content:var(--icon-content-minus,"")}.next-icon-arrow-up:before{content:"\e625";content:var(--icon-content-arrow-up,"")}.next-icon-arrow-down:before{content:"\e63d";content:var(--icon-content-arrow-down,"")}.next-icon-arrow-left:before{content:"\e61d";content:var(--icon-content-arrow-left,"")}.next-icon-arrow-right:before{content:"\e619";content:var(--icon-content-arrow-right,"")}.next-icon-arrow-double-left:before{content:"\e659";content:var(--icon-content-arrow-double-left,"")}.next-icon-arrow-double-right:before{content:"\e65e";content:var(--icon-content-arrow-double-right,"")}.next-icon-switch:before{content:"\e6b3";content:var(--icon-content-switch,"")}.next-icon-sorting:before{content:"\e634";content:var(--icon-content-sorting,"")}.next-icon-descending:before{content:"\e61f";content:var(--icon-content-descending,"")}.next-icon-ascending:before{content:"\e61e";content:var(--icon-content-ascending,"")}.next-icon-select:before{content:"\e632";content:var(--icon-content-select,"")}.next-icon-semi-select:before{content:"\e633";content:var(--icon-content-semi-select,"")}.next-icon-search:before{content:"\e656";content:var(--icon-content-search,"")}.next-icon-close:before{content:"\e626";content:var(--icon-content-close,"")}.next-icon-ellipsis:before{content:"\e654";content:var(--icon-content-ellipsis,"")}.next-icon-picture:before{content:"\e631";content:var(--icon-content-picture,"")}.next-icon-calendar:before{content:"\e607";content:var(--icon-content-calendar,"")}.next-icon-ashbin:before{content:"\e639";content:var(--icon-content-ashbin,"")}.next-icon-upload:before{content:"\e7ee";content:var(--icon-content-upload,"")}.next-icon-download:before{content:"\e628";content:var(--icon-content-download,"")}.next-icon-set:before{content:"\e683";content:var(--icon-content-set,"")}.next-icon-edit:before{content:"\e63b";content:var(--icon-content-edit,"")}.next-icon-refresh:before{content:"\e677";content:var(--icon-content-refresh,"")}.next-icon-filter:before{content:"\e627";content:var(--icon-content-filter,"")}.next-icon-attachment:before{content:"\e665";content:var(--icon-content-attachment,"")}.next-icon-account:before{content:"\e608";content:var(--icon-content-account,"")}.next-icon-email:before{content:"\e605";content:var(--icon-content-email,"")}.next-icon-atm:before{content:"\e606";content:var(--icon-content-atm,"")}.next-icon-loading:before{content:"\e646";content:var(--icon-content-loading,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-icon-eye:before{content:"\e7ed";content:var(--icon-content-eye,"")}.next-icon-copy:before{content:"\e80a";content:var(--icon-content-copy,"")}.next-icon-toggle-left:before{content:"\e602";content:var(--icon-content-toggle-left,"")}.next-icon-toggle-right:before{content:"\e60f";content:var(--icon-content-toggle-right,"")}.next-icon-eye-close:before{content:"\e610";content:var(--icon-content-eye-close,"")}.next-icon-unlock:before{content:"\e7fb";content:var(--icon-content-unlock,"")}.next-icon-lock:before{content:"\e7fc";content:var(--icon-content-lock,"")}.next-icon-exit:before{content:"\e616";content:var(--icon-content-exit,"")}.next-icon-chart-bar:before{content:"\e791";content:var(--icon-content-chart-bar,"")}.next-icon-chart-pie:before{content:"\e613";content:var(--icon-content-chart-pie,"")}.next-icon-form:before{content:"\e869";content:var(--icon-content-form,"")}.next-icon-detail:before{content:"\e852";content:var(--icon-content-detail,"")}.next-icon-list:before{content:"\e859";content:var(--icon-content-list,"")}.next-icon-dashboard:before{content:"\e868";content:var(--icon-content-dashboard,"")}@-webkit-keyframes loadingCircle{0%{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.next-icon.next-xxs .next-icon-remote,.next-icon.next-xxs:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-icon.next-xxs{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-icon.next-xxs:before{width:16px;font-size:16px}}.next-icon.next-xs .next-icon-remote,.next-icon.next-xs:before{width:12px;font-size:12px;line-height:inherit}.next-icon.next-small .next-icon-remote,.next-icon.next-small:before{width:16px;font-size:16px;line-height:inherit}.next-icon.next-medium .next-icon-remote,.next-icon.next-medium:before{width:20px;font-size:20px;line-height:inherit}.next-icon.next-large .next-icon-remote,.next-icon.next-large:before{width:24px;font-size:24px;line-height:inherit}.next-icon.next-xl .next-icon-remote,.next-icon.next-xl:before{width:32px;font-size:32px;line-height:inherit}.next-icon.next-xxl .next-icon-remote,.next-icon.next-xxl:before{width:48px;font-size:48px;line-height:inherit}.next-icon.next-xxxl .next-icon-remote,.next-icon.next-xxxl:before{width:64px;font-size:64px;line-height:inherit}.next-icon.next-inherit .next-icon-remote,.next-icon.next-inherit:before{width:inherit;font-size:inherit;line-height:inherit}.next-icon .next-icon-remote,.next-icon.next-inherit .next-icon-remote{width:1em;height:1em;vertical-align:middle;fill:currentColor}.next-overlay-wrapper .next-overlay-inner{z-index:1001}.next-overlay-wrapper .next-overlay-backdrop{position:fixed;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.45);-webkit-transition:opacity .3s cubic-bezier(.4,0,.2,1);transition:opacity .3s cubic-bezier(.4,0,.2,1);opacity:0}.next-overlay-wrapper.opened .next-overlay-backdrop{opacity:1}.next-loading-fusion-reactor[dir=rtl]{-webkit-animation-name:nextVectorRouteRTL;animation-name:nextVectorRouteRTL}@-webkit-keyframes nextVectorRouteRTL{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}25%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}30%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}50%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}55%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}75%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}80%{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}to{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes nextVectorRouteRTL{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}25%{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}30%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}50%{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}55%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}75%{-webkit-transform:rotate(-270deg);-ms-transform:rotate(-270deg);transform:rotate(-270deg)}80%{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}to{-webkit-transform:rotate(-1turn);-ms-transform:rotate(-1turn);transform:rotate(-1turn)}}.next-loading{position:relative}.next-loading.next-open{pointer-events:none}.next-loading .next-loading-component{opacity:.7;-webkit-filter:blur(1px);filter:blur(1px);-webkit-filter:"progid:DXImageTransform.Microsoft.Blur(PixelRadius=1, MakeShadow=false)";filter:"progid:DXImageTransform.Microsoft.Blur(PixelRadius=1, MakeShadow=false)";position:relative;pointer-events:none}.next-loading-masker{position:absolute;top:0;bottom:0;left:0;right:0;z-index:99;opacity:.2;background:#fff}.next-loading-inline{display:inline-block}.next-loading-tip{display:block;position:absolute;top:50%;left:50%;z-index:4;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center}.next-loading-tip-fullscreen{top:inherit;left:inherit;-webkit-transform:inherit;-ms-transform:inherit;transform:inherit}.next-loading-tip-placeholder{display:none}.next-loading-right-tip .next-loading-indicator{display:inline-block}.next-loading-right-tip .next-loading-tip-content{position:absolute;display:block;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-loading-right-tip .next-loading-tip-placeholder{display:inline-block;visibility:hidden;margin-left:1em}.next-loading-fusion-reactor{display:inline-block;width:48px;width:var(--loading-large-size,48px);height:48px;height:var(--loading-large-size,48px);position:relative;margin:0;-webkit-animation-duration:5.6s;animation-duration:5.6s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-name:nextVectorRoute;animation-name:nextVectorRoute}.next-loading-fusion-reactor .next-loading-dot{position:absolute;margin:auto;width:12px;width:var(--loading-large-dot-size,12px);height:12px;height:var(--loading-large-dot-size,12px);border-radius:50%;background:#0064c8;background:var(--loading-dot-color,#0064c8);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-duration:1.4s;animation-duration:1.4s}.next-loading-fusion-reactor .next-loading-dot:first-child{top:0;bottom:0;left:0;-webkit-animation-name:nextVectorDotsX;animation-name:nextVectorDotsX}.next-loading-fusion-reactor .next-loading-dot:nth-child(2){left:0;right:0;top:0;opacity:.8;-webkit-animation-name:nextVectorDotsY;animation-name:nextVectorDotsY}.next-loading-fusion-reactor .next-loading-dot:nth-child(3){top:0;bottom:0;right:0;opacity:.6;-webkit-animation-name:nextVectorDotsXR;animation-name:nextVectorDotsXR}.next-loading-fusion-reactor .next-loading-dot:nth-child(4){left:0;right:0;bottom:0;opacity:.2;-webkit-animation-name:nextVectorDotsYR;animation-name:nextVectorDotsYR}.next-loading-medium-fusion-reactor{width:32px;width:var(--loading-medium-size,32px);height:32px;height:var(--loading-medium-size,32px)}.next-loading-medium-fusion-reactor .next-loading-dot{width:8px;width:var(--loading-medium-dot-size,8px);height:8px;height:var(--loading-medium-dot-size,8px)}.next-loading-medium-fusion-reactor .next-loading-dot:first-child{-webkit-animation-name:nextVectorDotsX-medium;animation-name:nextVectorDotsX-medium}.next-loading-medium-fusion-reactor .next-loading-dot:nth-child(2){-webkit-animation-name:nextVectorDotsY-medium;animation-name:nextVectorDotsY-medium}.next-loading-medium-fusion-reactor .next-loading-dot:nth-child(3){-webkit-animation-name:nextVectorDotsXR-medium;animation-name:nextVectorDotsXR-medium}.next-loading-medium-fusion-reactor .next-loading-dot:nth-child(4){-webkit-animation-name:nextVectorDotsYR-medium;animation-name:nextVectorDotsYR-medium}@-webkit-keyframes nextVectorRoute{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}25%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}30%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}55%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}75%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}80%{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}to{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nextVectorRoute{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}5%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}25%{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}30%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}55%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}75%{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}80%{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}to{-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes nextVectorDotsYR{25%{bottom:0}45%,50%{bottom:16.8px;bottom:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{bottom:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsYR{25%{bottom:0}45%,50%{bottom:16.8px;bottom:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{bottom:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsY{25%{top:0}45%,50%{top:16.8px;top:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{top:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsY{25%{top:0}45%,50%{top:16.8px;top:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{top:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsX{25%{left:0}45%,50%{left:16.8px;left:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{left:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsX{25%{left:0}45%,50%{left:16.8px;left:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{left:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsXR{25%{right:0}45%,50%{right:16.8px;right:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{right:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@keyframes nextVectorDotsXR{25%{right:0}45%,50%{right:16.8px;right:calc(var(--loading-large-size, 48px)/2 - var(--loading-large-dot-size, 12px)*1.2/2);width:14.4px;width:calc(var(--loading-large-dot-size, 12px)*1.2);height:14.4px;height:calc(var(--loading-large-dot-size, 12px)*1.2)}90%{right:0;height:12px;height:var(--loading-large-dot-size,12px);width:12px;width:var(--loading-large-dot-size,12px)}}@-webkit-keyframes nextVectorDotsYR-medium{25%{bottom:0}45%,50%{bottom:11.2px;bottom:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{bottom:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsYR-medium{25%{bottom:0}45%,50%{bottom:11.2px;bottom:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{bottom:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@-webkit-keyframes nextVectorDotsY-medium{25%{top:0}45%,50%{top:11.2px;top:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{top:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsY-medium{25%{top:0}45%,50%{top:11.2px;top:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{top:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@-webkit-keyframes nextVectorDotsX-medium{25%{left:0}45%,50%{left:11.2px;left:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{left:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsX-medium{25%{left:0}45%,50%{left:11.2px;left:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{left:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@-webkit-keyframes nextVectorDotsXR-medium{25%{right:0}45%,50%{right:11.2px;right:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{right:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}@keyframes nextVectorDotsXR-medium{25%{right:0}45%,50%{right:11.2px;right:calc(var(--loading-medium-size, 32px)/2 - var(--loading-medium-dot-size, 8px)*1.2/2);width:9.6px;width:calc(var(--loading-medium-dot-size, 8px)*1.2);height:9.6px;height:calc(var(--loading-medium-dot-size, 8px)*1.2)}90%{right:0;height:8px;height:var(--loading-medium-dot-size,8px);width:8px;width:var(--loading-medium-dot-size,8px)}}.next-radio-button-large[dir=rtl]>label:first-child{margin-left:-1px;border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-large,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-large,2px);border-top-left-radius:0;border-bottom-left-radius:0}.next-radio-button-large[dir=rtl]>label:last-child{margin-left:0;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-large,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-large,2px)}.next-radio-button-large[dir=rtl] .next-radio-label{height:34px;height:calc(var(--radio-button-height-large, 36px) - 2px);line-height:34px;line-height:calc(var(--radio-button-height-large, 36px) - 2px);font-size:14px;font-size:var(--radio-button-font-size-large,14px)}.next-radio-button-medium[dir=rtl]>label:first-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-medium,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-medium[dir=rtl]>label:last-child{margin-left:0;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-medium,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-small[dir=rtl]>label:first-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-small,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-small,2px)}.next-radio-button-small[dir=rtl]>label:last-child{margin-left:0;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-small,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-small,2px)}.next-radio-wrapper[dir=rtl] .next-radio-label{margin-left:0;margin-right:4px}.next-radio-group[dir=rtl] .next-radio-label{margin-right:4px;margin-left:16px}.next-radio-button[dir=rtl]>label .next-radio-label{margin:0}.next-radio-wrapper{outline:0}.next-radio-wrapper .next-radio{display:inline-block;vertical-align:middle;position:relative;line-height:1}.next-radio-wrapper .next-radio,.next-radio-wrapper .next-radio *,.next-radio-wrapper .next-radio :after,.next-radio-wrapper .next-radio :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-radio-wrapper .next-radio input[type=radio]{opacity:0;position:absolute;vertical-align:middle;top:0;left:0;width:16px;width:var(--radio-width,16px);height:16px;height:var(--radio-width,16px);margin:0;cursor:pointer}.next-radio-wrapper .next-radio-inner{display:block;width:16px;width:var(--radio-width,16px);height:16px;height:var(--radio-width,16px);background:#fff;background:var(--radio-bg-color,#fff);border-radius:50%;border-radius:var(--radio-radius-size,50%);border:1px solid #577899;border:var(--radio-circle-border-width,1px) solid var(--radio-border-color,#577899);-webkit-transition:all .1s linear;transition:all .1s linear;-webkit-box-shadow:none;-webkit-box-shadow:var(--radio-shadow,none);box-shadow:none;box-shadow:var(--radio-shadow,none)}.next-radio-wrapper .next-radio-inner:after{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);position:absolute;border-radius:50%;border-radius:var(--radio-radius-size,50%);top:50%;margin-top:-4px;margin-top:calc(0px - var(--radio-circle-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--radio-circle-size, 8px)/2);background:#fff;content:"";-webkit-transition:all .1s linear;transition:all .1s linear}.next-radio-wrapper.checked .next-radio-inner{border-color:#004080;border-color:var(--radio-checked-border-color,#004080);background:#fff;background:var(--radio-checked-bg-color,#fff)}.next-radio-wrapper.checked .next-radio-inner:after{width:8px;width:var(--radio-circle-size,8px);height:8px;height:var(--radio-circle-size,8px);font-weight:700;background:#0064c8;background:var(--radio-checked-circle-color,#0064c8);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-radio-wrapper.checked.hovered .next-radio-inner,.next-radio-wrapper.checked:hover .next-radio-inner{border-color:#004080;border-color:var(--radio-checked-hovered-border-color,#004080)}.next-radio-wrapper.disabled input[type=radio]{cursor:not-allowed}.next-radio-wrapper.disabled .next-radio-inner{border-color:#c0c6cc;border-color:var(--radio-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--radio-disabled-bg-color,#f7f9fa)}.next-radio-wrapper.disabled .next-radio-inner:after{background:#b3b3b3;background:var(--radio-disabled-circle-color,#b3b3b3)}.next-radio-wrapper.disabled .next-radio-inner.hovered,.next-radio-wrapper.disabled .next-radio-inner:hover{border-color:#c0c6cc;border-color:var(--radio-disabled-border-color,#c0c6cc)}.next-radio-wrapper.disabled.checked .next-radio-inner{border-color:#c0c6cc;border-color:var(--radio-checked-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--radio-checked-disabled-bg-color,#f7f9fa)}.next-radio-wrapper.disabled.checked .next-radio-inner:after{background:#b3b3b3;background:var(--radio-checked-disabled-circle-color,#b3b3b3)}.next-radio-wrapper.disabled .next-radio-label{color:#b3b3b3;color:var(--radio-normal-font-color-disabled,#b3b3b3)}.next-radio-wrapper:not(.disabled).hovered .next-radio-inner,.next-radio-wrapper:not(.disabled):hover .next-radio-inner{border-color:#004080;border-color:var(--radio-hovered-border-color,#004080);background-color:transparent;background-color:var(--radio-hovered-bg-color,transparent)}.next-radio-wrapper:not(.disabled).hovered .next-radio-label,.next-radio-wrapper:not(.disabled):hover .next-radio-label{cursor:pointer}.next-radio-wrapper.checked:not(.disabled).hovered .next-radio-inner,.next-radio-wrapper.checked:not(.disabled):hover .next-radio-inner{border-color:#004080;border-color:var(--radio-checked-hovered-border-color,#004080);background:#fff;background:var(--radio-checked-hovered-bg-color,#fff)}.next-radio-wrapper.checked:not(.disabled).hovered .next-radio-inner:after,.next-radio-wrapper.checked:not(.disabled):hover .next-radio-inner:after{background:#0064c8;background:var(--radio-checked-hovered-circle-color,#0064c8)}.next-radio-button .next-radio,.next-radio-button input[type=radio]{width:0;height:0}.next-radio-button>label{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;z-index:1;margin:0 0 0 -1px;border:1px solid #c0c6cc;border:1px solid var(--radio-button-border-color,#c0c6cc);background-color:#fff;background-color:var(--radio-button-bg-color,#fff);-webkit-transition:all .1s linear;transition:all .1s linear;vertical-align:middle}.next-radio-button>label .next-radio-label{display:block;color:#555;color:var(--radio-button-font-color,#555);margin:0;-webkit-transition:all .1s linear;transition:all .1s linear}.next-radio-button>label.hovered,.next-radio-button>label:hover{z-index:10;border-color:#d1d5d9;border-color:var(--radio-button-border-color-hovered,#d1d5d9);background-color:#fff;background-color:var(--radio-button-bg-color-hovered,#fff)}.next-radio-button>label.hovered .next-radio-label,.next-radio-button>label:hover .next-radio-label{color:#111;color:var(--radio-button-font-color-hovered,#111)}.next-radio-button>label.checked{z-index:11;border-color:#0064c8;border-color:var(--radio-button-border-color-checked,#0064c8);background-color:#fff;background-color:var(--radio-button-bg-color-checked,#fff)}.next-radio-button>label.checked .next-radio-label{color:#0064c8;color:var(--radio-button-font-color-checked,#0064c8)}.next-radio-button>label.disabled{z-index:0;cursor:not-allowed;border-color:#e3e4e6;border-color:var(--radio-button-border-color-disabled,#e3e4e6);background-color:#f8f8f9;background-color:var(--radio-button-bg-color-disabled,#f8f8f9)}.next-radio-button>label.disabled .next-radio-label{color:#c1c1c1;color:var(--radio-button-font-color-disabled,#c1c1c1)}.next-radio-button>label.checked.disabled{z-index:0;border-color:#e3e4e6;border-color:var(--radio-button-border-color-checked-disabled,#e3e4e6);background-color:#004080;background-color:var(--radio-button-bg-color-checked-disabled,#004080)}.next-radio-button>label.checked.disabled .next-radio-label{color:#c1c1c1;color:var(--radio-button-font-color-checked-disabled,#c1c1c1)}.next-radio-button-large>label{padding:0 8px;padding:0 var(--radio-button-padding-large,8px);height:36px;height:var(--radio-button-height-large,36px);line-height:36px;line-height:var(--radio-button-height-large,36px)}.next-radio-button-large>label:first-child{margin-left:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-large,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-large,2px)}.next-radio-button-large>label:last-child{border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-large,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-large,2px)}.next-radio-button-large .next-radio-label{height:34px;height:calc(var(--radio-button-height-large, 36px) - 2px);line-height:34px;line-height:calc(var(--radio-button-height-large, 36px) - 2px);font-size:14px;font-size:var(--radio-button-font-size-large,14px)}.next-radio-button-medium>label{padding:0 8px;padding:0 var(--radio-button-padding-medium,8px);height:32px;height:var(--radio-button-height-medium,32px);line-height:32px;line-height:var(--radio-button-height-medium,32px)}.next-radio-button-medium>label:first-child{margin-left:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-medium,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-medium>label:last-child{border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-medium,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-medium,2px)}.next-radio-button-medium .next-radio-label{height:30px;height:calc(var(--radio-button-height-medium, 32px) - 2px);line-height:30px;line-height:calc(var(--radio-button-height-medium, 32px) - 2px);font-size:12px;font-size:var(--radio-button-font-size-medium,12px)}.next-radio-button-small>label{padding:0 8px;padding:0 var(--radio-button-padding-small,8px);height:24px;height:var(--radio-button-height-small,24px);line-height:24px;line-height:var(--radio-button-height-small,24px)}.next-radio-button-small>label:first-child{margin-left:0;border-top-left-radius:2px;border-top-left-radius:var(--radio-button-corner-small,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--radio-button-corner-small,2px)}.next-radio-button-small>label:last-child{border-top-right-radius:2px;border-top-right-radius:var(--radio-button-corner-small,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--radio-button-corner-small,2px)}.next-radio-button-small .next-radio-label{height:22px;height:calc(var(--radio-button-height-small, 24px) - 2px);line-height:22px;line-height:calc(var(--radio-button-height-small, 24px) - 2px);font-size:12px;font-size:var(--radio-button-font-size-small,12px)}.next-radio-single-input input[type=radio]{opacity:0;position:absolute;top:0;left:0;margin:0}.next-radio-group{display:inline-block}.next-radio-group .next-radio-wrapper{margin-right:12px}.next-radio-group .next-radio-wrapper:last-child{margin-right:0}.next-radio-group .next-radio-label{color:#333;color:var(--radio-normal-font-color,#333)}.next-radio-group.disabled .next-radio-label{color:#b3b3b3;color:var(--radio-normal-font-color-disabled,#b3b3b3)}.next-radio-group.next-radio-button .next-radio-wrapper{margin-right:0}.next-radio-group-ver .next-radio-wrapper{display:block;margin-bottom:8px}.next-radio-label{margin:0 0 0 8px;margin-left:var(--radio-font-margin-left,8px);margin-right:8px;margin-right:var(--radio-font-margin-left,8px);font-size:12px;font-size:var(--radio-font-size,12px);vertical-align:middle;line-height:1;color:#333;color:var(--radio-normal-font-color,#333)}@-moz-document url-prefix(){.next-radio{margin-top:-1px}@supports (-webkit-animation:0s) or (animation:0s){.next-radio{margin-top:-3px}}}.next-badge{position:relative;display:inline-block;vertical-align:middle;line-height:1}.next-badge,.next-badge *,.next-badge :after,.next-badge :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-badge .next-badge-count{color:#fff;background:#c80000;background:var(--badge-color-bg,#c80000);text-align:center;white-space:nowrap;border-radius:16px;border-radius:var(--badge-size-count-border-radius,16px);position:absolute;width:auto;height:18px;height:var(--badge-size-count-config-height,18px);min-width:18px;min-width:var(--badge-size-count-config-height,18px);padding:0 4px;padding:0 var(--badge-size-count-padding-lr,4px) 0 var(--badge-size-count-padding-lr,4px);font-size:12px;font-size:var(--badge-size-count-font,12px);line-height:18px;line-height:var(--badge-size-count-config-height,18px);-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);top:-.5em}.next-badge .next-badge-count a,.next-badge .next-badge-count a:hover{color:#fff}.next-badge .next-badge-dot{color:#fff;background:#c80000;background:var(--badge-dot-color-bg,#c80000);text-align:center;white-space:nowrap;border-radius:8px;border-radius:var(--badge-size-dot-border-radius,8px);position:absolute;width:8px;width:var(--badge-size-dot-width,8px);height:8px;height:var(--badge-size-dot-width,8px);min-width:8px;min-width:var(--badge-size-dot-width,8px);padding:0;font-size:1px;line-height:1;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);top:-.5em}.next-badge .next-badge-dot a,.next-badge .next-badge-dot a:hover{color:#fff}.next-badge .next-badge-custom{line-height:1.166667;white-space:nowrap;font-size:12px;font-size:var(--font-size-caption,12px);padding-left:4px;padding-left:var(--badge-size-custom-padding-lr,4px);padding-right:4px;padding-right:var(--badge-size-custom-padding-lr,4px);border-radius:2px;border-radius:var(--badge-size-custom-border-radius,2px);-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.next-badge .next-badge-custom>*{line-height:1}.next-badge .next-badge-custom>.next-icon:before,.next-badge .next-badge-custom>i:before{font-size:inherit;width:auto;vertical-align:top}.next-badge .next-badge-scroll-number{position:absolute;top:-4px;z-index:10;overflow:hidden;-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}.next-badge-scroll-number-only{position:relative;display:inline-block;transition:transform .1s linear,-webkit-transform .1s linear;min-width:8px;min-width:var(--badge-size-dot-width,8px)}.next-badge-scroll-number-only span{display:block;height:18px;height:var(--badge-size-count-config-height,18px);line-height:18px;line-height:var(--badge-size-count-config-height,18px);font-size:12px;font-size:var(--badge-size-count-font,12px)}.next-badge-not-a-wrapper .next-badge-count,.next-badge-not-a-wrapper .next-badge-custom,.next-badge-not-a-wrapper .next-badge-dot{position:relative;display:block;top:auto;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.next-badge-list-wrapper{margin-left:0}.next-badge-list-wrapper li{margin-bottom:0;margin-bottom:var(--badge-size-list-margin,0);list-style:none}.next-badge[dir=rtl] .next-badge-custom{padding-right:4px;padding-right:var(--badge-size-custom-padding-lr,4px);padding-left:4px;padding-left:var(--badge-size-custom-padding-lr,4px)}.next-badge[dir=rtl] .next-badge-scroll-number{left:0;-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}.next-balloon{position:absolute;top:0;max-width:400px;max-width:var(--balloon-size-max-width,400px);border-style:solid;border-style:var(--balloon-border-style,solid);border-radius:2px;border-radius:var(--balloon-corner,2px);font-size:12px;font-size:var(--balloon-content-font-size,12px);font-weight:400;font-weight:var(--balloon-content-font-weight,normal);word-wrap:break-all;word-wrap:break-word;z-index:0}.next-balloon,.next-balloon *,.next-balloon :after,.next-balloon :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-balloon:focus,.next-balloon :focus{outline:0}.next-balloon-title{margin-bottom:8px;margin-bottom:var(--balloon-size-header-margin-bottom,8px);font-size:14px;font-size:var(--balloon-title-font-size,14px);font-weight:700;font-weight:var(--balloon-title-font-weight,bold)}.next-balloon-title.next-balloon-closable{padding:0 24px 0 0;padding:0 var(--balloon-size-padding-closable-right,24px) 0 0}.next-balloon-title.next-balloon-closable .next-balloon-close{top:-1px;-webkit-transform:translateY(13px);-webkit-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-title-font-size, 14px)/2 - var(--balloon-size-close, 12px)/2));-ms-transform:translateY(13px);-ms-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-title-font-size, 14px)/2 - var(--balloon-size-close, 12px)/2));transform:translateY(13px);transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-title-font-size, 14px)/2 - var(--balloon-size-close, 12px)/2));right:12px;right:var(--balloon-size-padding-right,12px)}.next-balloon-primary{color:#333;color:var(--balloon-primary-color,#333);border-color:#c0c6cc;border-color:var(--balloon-primary-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-primary-color-bg,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--balloon-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--balloon-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16));border-width:1px;border-width:var(--balloon-primary-border-width,1px)}.next-balloon-primary .next-balloon-close{position:absolute;top:-1px;-webkit-transform:translateY(12px);-webkit-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));-ms-transform:translateY(12px);-ms-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));transform:translateY(12px);transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));right:12px;right:var(--balloon-size-close-margin-right,12px);font-size:12px;font-size:var(--balloon-size-close,12px);cursor:pointer;color:#333;color:var(--balloon-primary-color-close,#333)}.next-balloon-primary .next-balloon-close .next-icon,.next-balloon-primary .next-balloon-close .next-icon:before{width:12px;width:var(--balloon-size-close,12px);height:12px;height:var(--balloon-size-close,12px);line-height:1em}.next-balloon-primary .next-balloon-close .next-icon:before{font-size:12px;font-size:var(--balloon-size-close,12px)}.next-balloon-primary .next-balloon-close :hover{color:#333;color:var(--balloon-primary-color-close-hover,#333)}.next-balloon-primary:after{position:absolute;width:8px;width:var(--balloon-size-arrow-size,8px);height:8px;height:var(--balloon-size-arrow-size,8px);content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-sizing:content-box!important;box-sizing:content-box!important;border:1px solid #c0c6cc;border:var(--balloon-primary-border-width,1px) var(--balloon-border-style,solid) var(--balloon-primary-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-primary-color-bg,#fff);z-index:-1}.next-balloon-primary.next-balloon-top:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-primary.next-balloon-right:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-left:none;border-bottom:none}.next-balloon-primary.next-balloon-bottom:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-left:none}.next-balloon-primary.next-balloon-left:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px))}.next-balloon-primary.next-balloon-left-top:after,.next-balloon-primary.next-balloon-left:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-right:none}.next-balloon-primary.next-balloon-left-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-left-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px);left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-right:none}.next-balloon-primary.next-balloon-right-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-right-bottom:after,.next-balloon-primary.next-balloon-right-top:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-bottom:none;border-left:none}.next-balloon-primary.next-balloon-right-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-top-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-top-left:after,.next-balloon-primary.next-balloon-top-right:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-primary.next-balloon-top-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-bottom-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-primary.next-balloon-bottom-left:after,.next-balloon-primary.next-balloon-bottom-right:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));border-top:none;border-left:none}.next-balloon-primary.next-balloon-bottom-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal{color:#333;color:var(--balloon-normal-color,#333);border-color:#c0c6cc;border-color:var(--balloon-normal-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-normal-color-bg,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--balloon-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--balloon-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16));border-width:1px;border-width:var(--balloon-normal-border-width,1px)}.next-balloon-normal .next-balloon-close{position:absolute;top:-1px;-webkit-transform:translateY(12px);-webkit-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));-ms-transform:translateY(12px);-ms-transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));transform:translateY(12px);transform:translateY(calc(var(--balloon-size-padding-top, 12px) + var(--balloon-content-font-size, 12px)/2 - var(--balloon-size-close, 12px)/2));right:12px;right:var(--balloon-size-close-margin-right,12px);font-size:12px;font-size:var(--balloon-size-close,12px);cursor:pointer;color:#333;color:var(--balloon-normal-color-close,#333)}.next-balloon-normal .next-balloon-close .next-icon,.next-balloon-normal .next-balloon-close .next-icon:before{width:12px;width:var(--balloon-size-close,12px);height:12px;height:var(--balloon-size-close,12px);line-height:1em}.next-balloon-normal .next-balloon-close .next-icon:before{font-size:12px;font-size:var(--balloon-size-close,12px)}.next-balloon-normal .next-balloon-close :hover{color:#333;color:var(--balloon-normal-color-close-hover,#333)}.next-balloon-normal:after{position:absolute;width:8px;width:var(--balloon-size-arrow-size,8px);height:8px;height:var(--balloon-size-arrow-size,8px);content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-sizing:content-box!important;box-sizing:content-box!important;border:1px solid #c0c6cc;border:var(--balloon-normal-border-width,1px) var(--balloon-border-style,solid) var(--balloon-normal-color-border,#c0c6cc);background-color:#fff;background-color:var(--balloon-normal-color-bg,#fff);z-index:-1}.next-balloon-normal.next-balloon-top:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-normal.next-balloon-right:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-left:none;border-bottom:none}.next-balloon-normal.next-balloon-bottom:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));left:calc(50% - 5px);left:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-left:none}.next-balloon-normal.next-balloon-left:after{top:calc(50% - 5px);top:calc(50% - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px))}.next-balloon-normal.next-balloon-left-top:after,.next-balloon-normal.next-balloon-left:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-right:none}.next-balloon-normal.next-balloon-left-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-left-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px);left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-right:none}.next-balloon-normal.next-balloon-right-top:after{top:12px;top:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-right-bottom:after,.next-balloon-normal.next-balloon-right-top:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-bottom:none;border-left:none}.next-balloon-normal.next-balloon-right-bottom:after{bottom:12px;bottom:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-top-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-top-left:after,.next-balloon-normal.next-balloon-top-right:after{top:-5px;top:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-right:none;border-bottom:none}.next-balloon-normal.next-balloon-top-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-bottom-left:after{left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon-normal.next-balloon-bottom-left:after,.next-balloon-normal.next-balloon-bottom-right:after{bottom:-5px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));border-top:none;border-left:none}.next-balloon-normal.next-balloon-bottom-right:after{right:12px;right:var(--balloon-size-arrow-margin,12px)}.next-balloon.visible{display:block}.next-balloon.hidden{display:none}.next-balloon-medium{padding:12px;padding:var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px) var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px)}.next-balloon-closable{padding:12px 24px 12px 12px;padding:var(--balloon-size-padding-top,12px) var(--balloon-size-padding-closable-right,24px) var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px)}.next-balloon-tooltip{position:absolute;top:0;max-width:400px;max-width:var(--balloon-size-max-width,400px);border-radius:2px;border-radius:var(--balloon-corner,2px);font-size:12px;font-size:var(--balloon-tooltip-content-font-size,12px);font-weight:400;font-weight:var(--balloon-tooltip-content-font-weight,normal);z-index:0;word-wrap:break-all;word-wrap:break-word;color:#333;color:var(--balloon-tooltip-color,#333);background-color:#fff;background-color:var(--balloon-tooltip-color-bg,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--balloon-tooltip-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--balloon-tooltip-shadow,0 4px 8px 0 rgba(0,0,0,.16));border:1px solid #c0c6cc;border:var(--balloon-tooltip-border-width,1px) var(--balloon-tooltip-border-style,solid) var(--balloon-tooltip-color-border,#c0c6cc)}.next-balloon-tooltip,.next-balloon-tooltip *,.next-balloon-tooltip :after,.next-balloon-tooltip :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-balloon-tooltip .next-balloon-arrow{position:absolute;display:block;width:16px;width:calc(var(--balloon-size-arrow-size, 8px)*2);height:16px;height:calc(var(--balloon-size-arrow-size, 8px)*2);overflow:hidden;background:0 0;pointer-events:none}.next-balloon-tooltip .next-balloon-arrow .next-balloon-arrow-content{content:"";position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:8px;width:var(--balloon-size-arrow-size,8px);height:8px;height:var(--balloon-size-arrow-size,8px);margin:auto;background-color:#fff;background-color:var(--balloon-tooltip-color-bg,#fff);border:1px solid #c0c6cc;border:var(--balloon-tooltip-border-width,1px) var(--balloon-tooltip-border-style,solid) var(--balloon-tooltip-color-border,#c0c6cc);pointer-events:auto}.next-balloon-tooltip-top .next-balloon-arrow{top:-16px;top:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:calc(50% - 8px);left:calc(50% - var(--balloon-size-arrow-size, 8px))}.next-balloon-tooltip-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(8px) rotate(45deg);-webkit-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateY(8px) rotate(45deg);-ms-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateY(8px) rotate(45deg);transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-right .next-balloon-arrow{top:calc(50% - 8px);top:calc(50% - var(--balloon-size-arrow-size, 8px));right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-webkit-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateX(-8px) rotate(45deg);transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-bottom .next-balloon-arrow{left:calc(50% - 8px);left:calc(50% - var(--balloon-size-arrow-size, 8px));bottom:-16px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(-8px) rotate(45deg);-webkit-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateY(-8px) rotate(45deg);-ms-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateY(-8px) rotate(45deg);transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-left .next-balloon-arrow{top:calc(50% - 8px);top:calc(50% - var(--balloon-size-arrow-size, 8px));left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-left-top .next-balloon-arrow{top:8px;top:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-left-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-left-bottom .next-balloon-arrow{bottom:8px;bottom:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-left-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-right-top .next-balloon-arrow{top:8px;top:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-right-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-webkit-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateX(-8px) rotate(45deg);transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-right-bottom .next-balloon-arrow{bottom:8px;bottom:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-right-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-webkit-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateX(-8px) rotate(45deg);transform:translateX(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-top-left .next-balloon-arrow{left:8px;left:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);top:-16px;top:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-top-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(8px) rotate(45deg);-webkit-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateY(8px) rotate(45deg);-ms-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateY(8px) rotate(45deg);transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-top-right .next-balloon-arrow{right:8px;right:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);top:-16px;top:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-top-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(8px) rotate(45deg);-webkit-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateY(8px) rotate(45deg);-ms-transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateY(8px) rotate(45deg);transform:translateY(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip-bottom-left .next-balloon-arrow{left:8px;left:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);bottom:-16px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-bottom-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(-8px) rotate(45deg);-webkit-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateY(-8px) rotate(45deg);-ms-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateY(-8px) rotate(45deg);transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip-bottom-right .next-balloon-arrow{right:8px;right:calc(var(--balloon-size-arrow-margin, 12px) - var(--balloon-size-arrow-size, 8px)/2);bottom:-16px;bottom:calc(0px - var(--balloon-size-arrow-size, 8px)*2)}.next-balloon-tooltip-bottom-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateY(-8px) rotate(45deg);-webkit-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);-ms-transform:translateY(-8px) rotate(45deg);-ms-transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg);transform:translateY(-8px) rotate(45deg);transform:translateY(calc(0px - var(--balloon-size-arrow-size, 8px))) rotate(45deg)}.next-balloon-tooltip.visible{display:block}.next-balloon-tooltip.hidden{display:none}.next-balloon-tooltip-medium{padding:12px;padding:var(--balloon-tooltip-size-padding-top,12px) var(--balloon-tooltip-size-padding-right,12px) var(--balloon-tooltip-size-padding-bottom,12px) var(--balloon-tooltip-size-padding-left,12px)}.next-balloon[dir=rtl].next-balloon-primary .next-balloon-close{left:12px;left:var(--balloon-size-close-margin-right,12px);right:auto}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-right:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));right:auto;border-right:none;border-top:none;border-left:inherit;border-bottom:inherit}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-left-bottom:after,.next-balloon[dir=rtl].next-balloon-primary.next-balloon-left-top:after,.next-balloon[dir=rtl].next-balloon-primary.next-balloon-left:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));left:auto;border-left:none;border-bottom:none;border-right:inherit;border-top:inherit}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-right-bottom:after,.next-balloon[dir=rtl].next-balloon-primary.next-balloon-right-top:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-primary-border-width, 1px));right:auto;border-right:none;border-top:none;border-bottom:inherit;border-left:inherit}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-top-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-top-right:after{right:auto;left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-bottom-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-primary.next-balloon-bottom-right:after{left:12px;left:var(--balloon-size-arrow-margin,12px);right:auto}.next-balloon[dir=rtl].next-balloon-normal .next-balloon-close{left:12px;left:var(--balloon-size-close-margin-right,12px);right:auto}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-right:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));right:auto;border-right:none;border-top:none;border-left:inherit;border-bottom:inherit}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-left-bottom:after,.next-balloon[dir=rtl].next-balloon-normal.next-balloon-left-top:after,.next-balloon[dir=rtl].next-balloon-normal.next-balloon-left:after{right:-5px;right:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));left:auto;border-left:none;border-bottom:none;border-right:inherit;border-top:inherit}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-right-bottom:after,.next-balloon[dir=rtl].next-balloon-normal.next-balloon-right-top:after{left:-5px;left:calc(0px - var(--balloon-size-arrow-size, 8px)/2 - var(--balloon-normal-border-width, 1px));right:auto;border-right:none;border-top:none;border-bottom:inherit;border-left:inherit}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-top-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-top-right:after{right:auto;left:12px;left:var(--balloon-size-arrow-margin,12px)}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-bottom-left:after{right:12px;right:var(--balloon-size-arrow-margin,12px);left:auto}.next-balloon[dir=rtl].next-balloon-normal.next-balloon-bottom-right:after{left:12px;left:var(--balloon-size-arrow-margin,12px);right:auto}.next-balloon[dir=rtl].next-balloon-closable{padding:12px 12px 12px 24px;padding:var(--balloon-size-padding-top,12px) var(--balloon-size-padding-right,12px) var(--balloon-size-padding-top,12px) var(--balloon-size-padding-closable-right,24px)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right .next-balloon-arrow{left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left .next-balloon-arrow{right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);transform:translateX(-8px) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-top .next-balloon-arrow{right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);transform:translateX(-8px) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-bottom .next-balloon-arrow{right:-16px;right:calc(0px - var(--balloon-size-arrow-size, 8px)*2);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-left-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(-8px) rotate(45deg);-ms-transform:translateX(-8px) rotate(45deg);transform:translateX(-8px) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-top .next-balloon-arrow{left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-top .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-bottom .next-balloon-arrow{left:-16px;left:calc(0px - var(--balloon-size-arrow-size, 8px)*2);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-right-bottom .next-balloon-arrow .next-balloon-arrow-content{-webkit-transform:translateX(8px) rotate(45deg);-webkit-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);-ms-transform:translateX(8px) rotate(45deg);-ms-transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg);transform:translateX(8px) rotate(45deg);transform:translateX(var(--balloon-size-arrow-size,8px)) rotate(45deg)}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-top-left .next-balloon-arrow{right:10px;right:calc(var(--balloon-size-arrow-margin, 12px) - 2px);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-top-right .next-balloon-arrow{left:10px;left:calc(var(--balloon-size-arrow-margin, 12px) - 2px);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-bottom-left .next-balloon-arrow{right:10px;right:calc(var(--balloon-size-arrow-margin, 12px) - 2px);left:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-bottom-right .next-balloon-arrow{left:10px;left:calc(var(--balloon-size-arrow-margin, 12px) - 2px);right:auto}.next-balloon-tooltip[dir=rtl].next-balloon-tooltip-medium{padding:12px;padding:var(--balloon-tooltip-size-padding-top,12px) var(--balloon-tooltip-size-padding-left,12px) var(--balloon-tooltip-size-padding-bottom,12px) var(--balloon-tooltip-size-padding-right,12px)}.next-menu[dir=rtl] .next-menu-item-helper{float:left}.next-menu[dir=rtl] .next-menu-item .next-checkbox,.next-menu[dir=rtl] .next-menu-item .next-radio{margin-left:4px;margin-right:0}.next-menu[dir=rtl] .next-menu-hoz-right{float:left}.next-menu[dir=rtl] .next-menu-hoz-icon-arrow.next-icon{left:6px;right:auto}.next-menu[dir=rtl] .next-menu-icon-selected.next-icon{margin-left:0;margin-right:-14px;margin-right:calc(-6px - var(--menu-padding-horizontal, 16px)/2)}.next-menu[dir=rtl] .next-menu-icon-selected.next-icon .next-icon-remote,.next-menu[dir=rtl] .next-menu-icon-selected.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu[dir=rtl] .next-menu-icon-selected.next-icon.next-menu-icon-right{right:auto;left:8px}.next-menu[dir=rtl] .next-menu-icon-arrow.next-icon{left:10px;right:auto}.next-menu{position:relative;min-width:100px;margin:0;list-style:none;border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));background:#fff;background:var(--menu-background,#fff);line-height:32px;line-height:var(--menu-line-height,32px);font-size:12px;font-size:var(--menu-font-size,12px);-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-menu,.next-menu *,.next-menu :after,.next-menu :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-menu:focus,.next-menu :focus{outline:0}.next-menu-spacing-lr{padding:0;padding:0 var(--popup-spacing-lr,0)}.next-menu-spacing-lr.next-menu-outside>.next-menu{height:100%;overflow-y:auto}.next-menu-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-menu.next-ver{padding:4px;padding:var(--menu-padding-ver-padding-tb,4px) var(--menu-padding-ver-padding-lr,4px)}.next-menu.next-ver .next-menu-item{padding:0 16px;padding:0 var(--menu-item-padding-ver-padding-r,16px) 0 var(--menu-item-padding-ver-padding-l,16px)}.next-menu.next-hoz{padding:8px 0;padding:var(--menu-padding-hoz-padding-tb,8px) var(--menu-padding-hoz-padding-lr,0)}.next-menu.next-hoz .next-menu-item{padding:0 16px;padding:0 var(--menu-item-padding-hoz-padding-lr,16px)}.next-menu-embeddable,.next-menu-embeddable .next-menu-item.next-disabled,.next-menu-embeddable .next-menu-item.next-disabled .next-menu-item-text>a{background:transparent;border:none}.next-menu-embeddable{-webkit-box-shadow:none;box-shadow:none}.next-menu-embeddable .next-menu-item-inner{height:100%}.next-menu-content{position:relative}.next-menu-content,.next-menu-sub-menu{padding:0;margin:0;list-style:none}.next-menu-sub-menu.next-expand-enter{overflow:hidden}.next-menu-sub-menu.next-expand-enter-active{-webkit-transition:height .3s ease;transition:height .3s ease}.next-menu-sub-menu.next-expand-leave{overflow:hidden}.next-menu-sub-menu.next-expand-leave-active{-webkit-transition:height .3s ease;transition:height .3s ease}.next-menu-item{position:relative;-webkit-transition:background .1s linear;transition:background .1s linear;color:#333;color:var(--menu-color,#333);cursor:pointer}.next-menu-item-helper{float:right;color:#888;color:var(--color-text1-2,#888);font-style:normal;font-size:12px;font-size:var(--menu-font-size,12px)}.next-menu-item .next-checkbox,.next-menu-item .next-radio{margin-right:4px}.next-menu-item.next-selected{color:#333;color:var(--menu-color-selected,#333);background-color:#fff;background-color:var(--menu-background-selected,#fff)}.next-menu-item.next-selected .next-menu-icon-arrow{color:#333;color:var(--menu-arrow-color,#333)}.next-menu-item.next-selected .next-menu-icon-selected{color:#333}.next-menu-item.next-disabled,.next-menu-item.next-disabled .next-menu-item-text>a{color:#b3b3b3;color:var(--menu-color-disabled,#b3b3b3);background-color:#fff;background-color:var(--menu-background,#fff);cursor:not-allowed}.next-menu-item.next-disabled .next-menu-icon-arrow,.next-menu-item.next-disabled .next-menu-icon-selected,.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#b3b3b3;color:var(--menu-color-disabled,#b3b3b3)}.next-menu-item:not(.next-disabled).next-focused,.next-menu-item:not(.next-disabled).next-selected.next-focused,.next-menu-item:not(.next-disabled).next-selected.next-focused:hover,.next-menu-item:not(.next-disabled).next-selected:focus,.next-menu-item:not(.next-disabled).next-selected:focus:hover,.next-menu-item:not(.next-disabled).next-selected:hover,.next-menu-item:not(.next-disabled):hover{color:#333;color:var(--menu-color-hover,#333);background-color:#f7f9fa;background-color:var(--menu-background-hover,#f7f9fa)}.next-menu-item:not(.next-disabled).next-focused .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected.next-focused .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected.next-focused:hover .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected:focus .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected:focus:hover .next-menu-icon-arrow,.next-menu-item:not(.next-disabled).next-selected:hover .next-menu-icon-arrow,.next-menu-item:not(.next-disabled):hover .next-menu-icon-arrow{color:#333;color:var(--menu-arrow-color-hover,#333)}.next-menu-item:not(.next-disabled).next-focused .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected.next-focused .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected.next-focused:hover .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected:focus .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected:focus:hover .next-menu-icon-selected,.next-menu-item:not(.next-disabled).next-selected:hover .next-menu-icon-selected,.next-menu-item:not(.next-disabled):hover .next-menu-icon-selected{color:#333}.next-menu-item-inner{height:32px;height:var(--menu-line-height,32px);font-size:12px;font-size:var(--menu-font-size,12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.next-menu-item .next-menu-item-text{vertical-align:middle}.next-menu-item .next-menu-item-text>a{display:inline-block;text-decoration:none;color:#333;color:var(--menu-color,#333)}.next-menu-item .next-menu-item-text>a:before{position:absolute;background-color:transparent;top:0;left:0;bottom:0;right:0;content:""}.next-menu.next-hoz{padding:0}.next-menu.next-hoz.next-menu-nowrap{overflow:hidden;white-space:nowrap}.next-menu.next-hoz.next-menu-nowrap .next-menu-more{text-align:center}.next-menu.next-hoz .next-menu-content>.next-menu-item,.next-menu.next-hoz>.next-menu-item,.next-menu.next-hoz>.next-menu-sub-menu-wrapper{display:inline-block;vertical-align:top}.next-menu.next-hoz .next-menu-content,.next-menu.next-hoz .next-menu-footer,.next-menu.next-hoz .next-menu-header{display:inline-block}.next-menu-hoz-right{float:right}.next-menu-group-label{padding:0 12px;padding:0 var(--menu-padding-title-horizontal,12px);color:#888;color:var(--color-text1-2,#888)}.next-menu-divider{margin:8px 12px;margin:var(--menu-divider-margin-ver,8px) var(--menu-divider-margin-hoz,12px);border-bottom:1px solid #e3e4e6;border-bottom:var(--menu-divider-width,1px) var(--menu-divider-style,solid) var(--menu-divider-color,#e3e4e6)}.next-menu .next-menu-icon-selected.next-icon{position:absolute;top:0;margin-left:-8px;margin-left:calc(8px - var(--menu-item-padding-ver-padding-l, 16px))}.next-menu .next-menu-icon-selected.next-icon .next-icon-remote,.next-menu .next-menu-icon-selected.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-icon-selected.next-icon.next-menu-icon-right{right:8px}.next-menu .next-menu-symbol-icon-selected.next-menu-icon-selected:before{content:"\e9a0";content:var(--menu-select-icon-content,"")}.next-menu .next-menu-icon-arrow.next-icon{position:absolute;top:0;right:10px;color:#333;color:var(--menu-arrow-color,#333);-webkit-transition:all .1s linear;transition:all .1s linear}.next-menu .next-menu-icon-arrow.next-icon .next-icon-remote,.next-menu .next-menu-icon-arrow.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-icon-arrow-down:before{content:"\ea1f";content:var(--menu-fold-icon-content,"")}.next-menu .next-menu-icon-arrow-down.next-open{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-menu .next-menu-icon-arrow-down.next-open .next-icon-remote,.next-menu .next-menu-icon-arrow-down.next-open:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-symbol-popupfold:before{content:"\e98e";content:var(--menu-popupfold-icon-content,"")}.next-menu .next-menu-icon-arrow-right.next-open{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.next-menu .next-menu-icon-arrow-right.next-open .next-icon-remote,.next-menu .next-menu-icon-arrow-right.next-open:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-hoz-icon-arrow.next-icon{position:absolute;top:0;right:6px;color:#333;color:var(--menu-arrow-color,#333);-webkit-transition:all .1s linear;transition:all .1s linear}.next-menu .next-menu-hoz-icon-arrow.next-icon .next-icon-remote,.next-menu .next-menu-hoz-icon-arrow.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-menu .next-menu-hoz-icon-arrow.next-icon:before{content:"\ea1f";content:var(--menu-fold-icon-content,"")}.next-menu-unfold-icon:before{content:"";content:var(--menu-unfold-icon-content,"")}.next-menu .next-menu-hoz-icon-arrow.next-open{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-menu .next-menu-hoz-icon-arrow.next-open .next-icon-remote,.next-menu .next-menu-hoz-icon-arrow.next-open:before{width:12px;font-size:12px;line-height:inherit}.next-menu.next-context{line-height:24px}.next-menu.next-context .next-menu-item-inner{height:24px}.next-breadcrumb{display:block;margin:0;padding:0;white-space:nowrap;height:16px;line-height:16px}.next-breadcrumb .next-breadcrumb-item{display:inline-block}.next-breadcrumb .next-breadcrumb-item .next-breadcrumb-text{display:inline-block;text-decoration:none;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:all .1s linear;transition:all .1s linear}.next-breadcrumb .next-breadcrumb-item .next-breadcrumb-text>b{font-weight:400}.next-breadcrumb .next-breadcrumb-item .next-breadcrumb-separator{display:inline-block;vertical-align:top}.next-breadcrumb .next-breadcrumb-text{height:16px;min-width:16px;font-size:12px;font-size:var(--breadcrumb-size-m-font-size,12px);line-height:16px}.next-breadcrumb .next-breadcrumb-separator{height:16px;margin:0 8px;font-size:12px;line-height:16px}.next-breadcrumb .next-breadcrumb-separator .next-icon:before{display:block}.next-breadcrumb .next-breadcrumb-separator .next-icon .next-icon-remote,.next-breadcrumb .next-breadcrumb-separator .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-breadcrumb .next-breadcrumb-text-ellipsis{font-size:12px;font-size:var(--breadcrumb-size-ellipsis-font-size,12px)}.next-breadcrumb .next-breadcrumb-text{color:#666;color:var(--breadcrumb-text-color,#666)}.next-breadcrumb .next-breadcrumb-text>b{color:#0064c8;color:var(--breadcrumb-text-keyword-color,#0064c8)}.next-breadcrumb .next-breadcrumb-text>a{color:#666;color:var(--breadcrumb-text-color,#666);text-decoration:none;text-align:center}.next-breadcrumb .next-breadcrumb-text.activated,.next-breadcrumb .next-breadcrumb-text.activated>a{color:#b3b3b3;color:var(--breadcrumb-text-current-color,#b3b3b3);font-weight:400;font-weight:var(--breadcrumb-text-current-weight,normal)}.next-breadcrumb .next-breadcrumb-text-ellipsis{color:#555;color:var(--breadcrumb-text-ellipsis-color,#555);cursor:default}.next-breadcrumb .next-breadcrumb-text-ellipsis-clickable{color:#555;color:var(--breadcrumb-text-ellipsis-color,#555);cursor:pointer}.next-breadcrumb .next-breadcrumb-separator{color:#e3e4e6;color:var(--breadcrumb-icon-color,#e3e4e6)}.next-breadcrumb .next-breadcrumb-text:not(.next-breadcrumb-text-ellipsis):hover>a{color:#333;color:var(--breadcrumb-text-color-hover,#333)}.next-breadcrumb a.next-breadcrumb-text.activated:hover>a{color:#b3b3b3;color:var(--breadcrumb-text-current-color-hover,#b3b3b3)}.next-breadcrumb a.next-breadcrumb-text:not(.next-breadcrumb-text-ellipsis):hover{color:#333;color:var(--breadcrumb-text-color-hover,#333)}.next-breadcrumb a.next-breadcrumb-text:not(.next-breadcrumb-text-ellipsis):hover>b{color:#0064c8;color:var(--breadcrumb-text-keyword-color-hover,#0064c8)}.next-breadcrumb a.next-breadcrumb-text.activated:hover{color:#b3b3b3;color:var(--breadcrumb-text-current-color-hover,#b3b3b3);font-weight:400;font-weight:var(--breadcrumb-text-current-weight,normal)}.next-breadcrumb-icon-sep:before{content:"\e617"}.next-breadcrumb-dropdown-wrapper{padding:4px 0}.next-btn,.next-btn *,.next-btn :after,.next-btn :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-btn::-moz-focus-inner{border:0;padding:0}.next-btn,.next-btn:active,.next-btn:focus,.next-btn:hover{outline:0}@keyframes loadingCircle{0%{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.next-btn{position:relative;display:inline-block;-webkit-box-shadow:none;-webkit-box-shadow:var(--btn-shadow,none);box-shadow:none;box-shadow:var(--btn-shadow,none);text-decoration:none;text-align:center;text-transform:none;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;transition:all .1s linear;line-height:1;cursor:pointer}.next-btn:after{text-align:center;position:absolute;opacity:0;visibility:hidden;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.next-btn:before{content:"";height:100%;width:0}.next-btn .next-icon,.next-btn:before{display:inline-block;vertical-align:middle}.next-btn .next-icon{font-size:0}.next-btn>.next-btn-helper,.next-btn>div,.next-btn>span{display:inline-block;vertical-align:middle}.next-btn>.next-btn-helper{text-decoration:inherit}.next-btn.hover,.next-btn:hover{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}.next-btn.next-small{border-radius:2px;border-radius:var(--btn-size-s-corner,2px);padding:0 8px;padding:0 var(--btn-size-s-padding,8px);height:24px;height:var(--btn-size-s-height,24px);font-size:12px;font-size:var(--btn-size-s-font,12px);border-width:1px;border-width:var(--btn-size-s-border-width,1px)}.next-btn.next-small>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:8px}.next-btn.next-small>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-small>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:8px;margin-right:0}.next-btn.next-small>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-small>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn.next-small>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn.next-small>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:8px;left:var(--btn-size-s-padding,8px);top:50%;text-align:center;margin-right:8px}.next-btn.next-small.next-btn-loading>.next-icon{display:none}.next-btn.next-small>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn.next-small>.next-btn-custom-loading-icon.show{width:12px;margin-right:8px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn.next-medium{border-radius:2px;border-radius:var(--btn-size-m-corner,2px);padding:0 16px;padding:0 var(--btn-size-m-padding,16px);height:32px;height:var(--btn-size-m-height,32px);font-size:12px;font-size:var(--btn-size-m-font,12px);border-width:1px;border-width:var(--btn-size-m-border-width,1px)}.next-btn.next-medium>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:8px}.next-btn.next-medium>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-medium>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:8px;margin-right:0}.next-btn.next-medium>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-medium>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn.next-medium>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn.next-medium>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:16px;left:var(--btn-size-m-padding,16px);top:50%;text-align:center;margin-right:8px}.next-btn.next-medium.next-btn-loading>.next-icon{display:none}.next-btn.next-medium>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn.next-medium>.next-btn-custom-loading-icon.show{width:12px;margin-right:8px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn.next-large{border-radius:2px;border-radius:var(--btn-size-l-corner,2px);padding:0 16px;padding:0 var(--btn-size-l-padding,16px);height:36px;height:var(--btn-size-l-height,36px);font-size:14px;font-size:var(--btn-size-l-font,14px);border-width:1px;border-width:var(--btn-size-l-border-width,1px)}.next-btn.next-large>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:8px}.next-btn.next-large>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-large>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:8px;margin-right:0}.next-btn.next-large>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-large>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn.next-large>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn.next-large>.next-btn-icon.next-icon-alone:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large.next-btn-loading:before{width:16px;height:16px;font-size:16px;line-height:16px;left:16px;left:var(--btn-size-l-padding,16px);top:50%;text-align:center;margin-right:8px}.next-btn.next-large.next-btn-loading>.next-icon{display:none}.next-btn.next-large>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn.next-large>.next-btn-custom-loading-icon.show{width:16px;margin-right:8px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn.next-btn-normal{border-style:solid;border-style:var(--btn-pure-normal-border-style,solid);background:#fff;background:var(--btn-pure-normal-bg,#fff);border-color:#c0c6cc;border-color:var(--btn-pure-normal-border-color,#c0c6cc)}.next-btn.next-btn-normal,.next-btn.next-btn-normal.visited,.next-btn.next-btn-normal:link,.next-btn.next-btn-normal:visited{color:#333;color:var(--btn-pure-normal-color,#333)}.next-btn.next-btn-normal.hover,.next-btn.next-btn-normal:focus,.next-btn.next-btn-normal:hover{color:#333;color:var(--btn-pure-normal-color-hover,#333);background:#f7f9fa;background:var(--btn-pure-normal-bg-hover,#f7f9fa);border-color:#c0c6cc;border-color:var(--btn-pure-normal-border-color-hover,#c0c6cc);text-decoration:none}.next-btn.next-btn-normal.active,.next-btn.next-btn-normal:active{color:#333;color:var(--btn-pure-normal-color-active,#333);background:#eff3f8;background:var(--btn-pure-normal-bg-active,#eff3f8);border-color:#c0c6cc;border-color:var(--btn-pure-normal-border-color-active,#c0c6cc);text-decoration:none}.next-btn.next-btn-primary{border-style:solid;border-style:var(--btn-pure-primary-border-style,solid);background:#0064c8;background:var(--btn-pure-primary-bg,#0064c8);border-color:transparent;border-color:var(--btn-pure-primary-border-color,transparent)}.next-btn.next-btn-primary,.next-btn.next-btn-primary.visited,.next-btn.next-btn-primary:link,.next-btn.next-btn-primary:visited{color:#fff;color:var(--btn-pure-primary-color,#fff)}.next-btn.next-btn-primary.hover,.next-btn.next-btn-primary:focus,.next-btn.next-btn-primary:hover{color:#fff;color:var(--btn-pure-primary-color-hover,#fff);background:#0064c8;background:var(--btn-pure-primary-bg-hover,#0064c8);border-color:transparent;border-color:var(--btn-pure-primary-border-color-hover,transparent);text-decoration:none}.next-btn.next-btn-primary.active,.next-btn.next-btn-primary:active{color:#fff;color:var(--btn-pure-primary-color-active,#fff);background:#003c78;background:var(--btn-pure-primary-bg-active,#003c78);border-color:transparent;border-color:var(--btn-pure-primary-border-color-active,transparent);text-decoration:none}.next-btn.next-btn-secondary{border-style:solid;border-style:var(--btn-pure-secondary-border-style,solid);background:transparent;background:var(--btn-pure-secondary-bg,transparent);border-color:#c0c6cc;border-color:var(--btn-pure-secondary-border-color,#c0c6cc)}.next-btn.next-btn-secondary,.next-btn.next-btn-secondary.visited,.next-btn.next-btn-secondary:link,.next-btn.next-btn-secondary:visited{color:#333;color:var(--btn-pure-secondary-color,#333)}.next-btn.next-btn-secondary.hover,.next-btn.next-btn-secondary:focus,.next-btn.next-btn-secondary:hover{color:#333;color:var(--btn-pure-secondary-color-hover,#333);background:#f7f9fa;background:var(--btn-pure-secondary-bg-hover,#f7f9fa);border-color:#c0c6cc;border-color:var(--btn-pure-secondary-border-color-hover,#c0c6cc);text-decoration:none}.next-btn.next-btn-secondary.active,.next-btn.next-btn-secondary:active{color:#333;color:var(--btn-pure-secondary-color-active,#333);background:#eff3f8;background:var(--btn-pure-secondary-bg-active,#eff3f8);border-color:#c0c6cc;border-color:var(--btn-pure-secondary-border-color-active,#c0c6cc);text-decoration:none}.next-btn.disabled,.next-btn[disabled]{cursor:not-allowed}.next-btn.disabled.next-btn-normal,.next-btn[disabled].next-btn-normal{background:#fff;background:var(--btn-pure-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-normal-border-color-disabled,#d1d5d9)}.next-btn.disabled.next-btn-normal,.next-btn.disabled.next-btn-normal.visited,.next-btn.disabled.next-btn-normal:link,.next-btn.disabled.next-btn-normal:visited,.next-btn[disabled].next-btn-normal,.next-btn[disabled].next-btn-normal.visited,.next-btn[disabled].next-btn-normal:link,.next-btn[disabled].next-btn-normal:visited{color:#b3b3b3;color:var(--btn-pure-normal-color-disabled,#b3b3b3)}.next-btn.disabled.next-btn-normal.active,.next-btn.disabled.next-btn-normal.hover,.next-btn.disabled.next-btn-normal:active,.next-btn.disabled.next-btn-normal:focus,.next-btn.disabled.next-btn-normal:hover,.next-btn[disabled].next-btn-normal.active,.next-btn[disabled].next-btn-normal.hover,.next-btn[disabled].next-btn-normal:active,.next-btn[disabled].next-btn-normal:focus,.next-btn[disabled].next-btn-normal:hover{color:#b3b3b3;color:var(--btn-pure-normal-color-disabled,#b3b3b3);background:#fff;background:var(--btn-pure-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-normal-border-color-disabled,#d1d5d9);text-decoration:none}.next-btn.disabled.next-btn-primary,.next-btn[disabled].next-btn-primary{background:#d1d5d9;background:var(--btn-pure-primary-bg-disabled,#d1d5d9);border-color:transparent;border-color:var(--btn-pure-primary-border-color-disabled,transparent)}.next-btn.disabled.next-btn-primary,.next-btn.disabled.next-btn-primary.visited,.next-btn.disabled.next-btn-primary:link,.next-btn.disabled.next-btn-primary:visited,.next-btn[disabled].next-btn-primary,.next-btn[disabled].next-btn-primary.visited,.next-btn[disabled].next-btn-primary:link,.next-btn[disabled].next-btn-primary:visited{color:#fff;color:var(--btn-pure-primary-color-disabled,#fff)}.next-btn.disabled.next-btn-primary.active,.next-btn.disabled.next-btn-primary.hover,.next-btn.disabled.next-btn-primary:active,.next-btn.disabled.next-btn-primary:focus,.next-btn.disabled.next-btn-primary:hover,.next-btn[disabled].next-btn-primary.active,.next-btn[disabled].next-btn-primary.hover,.next-btn[disabled].next-btn-primary:active,.next-btn[disabled].next-btn-primary:focus,.next-btn[disabled].next-btn-primary:hover{color:#fff;color:var(--btn-pure-primary-color-disabled,#fff);background:#d1d5d9;background:var(--btn-pure-primary-bg-disabled,#d1d5d9);border-color:transparent;border-color:var(--btn-pure-primary-border-color-disabled,transparent);text-decoration:none}.next-btn.disabled.next-btn-secondary,.next-btn[disabled].next-btn-secondary{background:#fff;background:var(--btn-pure-secondary-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-secondary-border-color-disabled,#d1d5d9)}.next-btn.disabled.next-btn-secondary,.next-btn.disabled.next-btn-secondary.visited,.next-btn.disabled.next-btn-secondary:link,.next-btn.disabled.next-btn-secondary:visited,.next-btn[disabled].next-btn-secondary,.next-btn[disabled].next-btn-secondary.visited,.next-btn[disabled].next-btn-secondary:link,.next-btn[disabled].next-btn-secondary:visited{color:#b3b3b3;color:var(--btn-pure-secondary-color-disabled,#b3b3b3)}.next-btn.disabled.next-btn-secondary.active,.next-btn.disabled.next-btn-secondary.hover,.next-btn.disabled.next-btn-secondary:active,.next-btn.disabled.next-btn-secondary:focus,.next-btn.disabled.next-btn-secondary:hover,.next-btn[disabled].next-btn-secondary.active,.next-btn[disabled].next-btn-secondary.hover,.next-btn[disabled].next-btn-secondary:active,.next-btn[disabled].next-btn-secondary:focus,.next-btn[disabled].next-btn-secondary:hover{color:#b3b3b3;color:var(--btn-pure-secondary-color-disabled,#b3b3b3);background:#fff;background:var(--btn-pure-secondary-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-pure-secondary-border-color-disabled,#d1d5d9);text-decoration:none}.next-btn-warning{border-style:solid;border-style:var(--btn-warning-border-style,solid)}.next-btn-warning.next-btn-primary{background:#c80000;background:var(--btn-warning-primary-bg,#c80000);border-color:#f8efef;border-color:var(--btn-warning-primary-border-color,#f8efef)}.next-btn-warning.next-btn-primary,.next-btn-warning.next-btn-primary.visited,.next-btn-warning.next-btn-primary:link,.next-btn-warning.next-btn-primary:visited{color:#fff;color:var(--btn-warning-primary-color,#fff)}.next-btn-warning.next-btn-primary.hover,.next-btn-warning.next-btn-primary:focus,.next-btn-warning.next-btn-primary:hover{color:#fff;color:var(--btn-warning-primary-color-hover,#fff);background:#c80000;background:var(--btn-warning-primary-bg-hover,#c80000);border-color:#f5e6e6;border-color:var(--btn-warning-primary-border-color-hover,#f5e6e6);text-decoration:none}.next-btn-warning.next-btn-primary.active,.next-btn-warning.next-btn-primary:active{color:#fff;color:var(--btn-warning-primary-color-active,#fff);background:#c80000;background:var(--btn-warning-primary-bg-active,#c80000);border-color:#f5e6e6;border-color:var(--btn-warning-primary-border-color-active,#f5e6e6);text-decoration:none}.next-btn-warning.next-btn-primary.disabled,.next-btn-warning.next-btn-primary[disabled]{background:#d1d5d9;background:var(--btn-warning-primary-bg-disabled,#d1d5d9);border-color:#fff;border-color:var(--btn-warning-primary-border-color-disabled,#fff)}.next-btn-warning.next-btn-primary.disabled,.next-btn-warning.next-btn-primary.disabled.visited,.next-btn-warning.next-btn-primary.disabled:link,.next-btn-warning.next-btn-primary.disabled:visited,.next-btn-warning.next-btn-primary[disabled],.next-btn-warning.next-btn-primary[disabled].visited,.next-btn-warning.next-btn-primary[disabled]:link,.next-btn-warning.next-btn-primary[disabled]:visited{color:#fff;color:var(--btn-warning-primary-color-disabled,#fff)}.next-btn-warning.next-btn-primary.disabled.active,.next-btn-warning.next-btn-primary.disabled.hover,.next-btn-warning.next-btn-primary.disabled:active,.next-btn-warning.next-btn-primary.disabled:focus,.next-btn-warning.next-btn-primary.disabled:hover,.next-btn-warning.next-btn-primary[disabled].active,.next-btn-warning.next-btn-primary[disabled].hover,.next-btn-warning.next-btn-primary[disabled]:active,.next-btn-warning.next-btn-primary[disabled]:focus,.next-btn-warning.next-btn-primary[disabled]:hover{color:#fff;color:var(--btn-warning-primary-color-disabled,#fff);background:#d1d5d9;background:var(--btn-warning-primary-bg-disabled,#d1d5d9);border-color:#fff;border-color:var(--btn-warning-primary-border-color-disabled,#fff);text-decoration:none}.next-btn-warning.next-btn-normal{background:#fff;background:var(--btn-warning-normal-bg,#fff);border-color:#c80000;border-color:var(--btn-warning-normal-border-color,#c80000)}.next-btn-warning.next-btn-normal,.next-btn-warning.next-btn-normal.visited,.next-btn-warning.next-btn-normal:link,.next-btn-warning.next-btn-normal:visited{color:#c80000;color:var(--btn-warning-normal-color,#c80000)}.next-btn-warning.next-btn-normal.hover,.next-btn-warning.next-btn-normal:focus,.next-btn-warning.next-btn-normal:hover{color:#c80000;color:var(--btn-warning-normal-color-hover,#c80000);background:#faf7f7;background:var(--btn-warning-normal-bg-hover,#faf7f7);border-color:#c80000;border-color:var(--btn-warning-normal-border-color-hover,#c80000);text-decoration:none}.next-btn-warning.next-btn-normal.active,.next-btn-warning.next-btn-normal:active{color:#c80000;color:var(--btn-warning-normal-color-active,#c80000);background:#faf7f7;background:var(--btn-warning-normal-bg-active,#faf7f7);border-color:#c80000;border-color:var(--btn-warning-normal-border-color-active,#c80000);text-decoration:none}.next-btn-warning.next-btn-normal.disabled,.next-btn-warning.next-btn-normal[disabled]{background:#fff;background:var(--btn-warning-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-warning-normal-border-color-disabled,#d1d5d9)}.next-btn-warning.next-btn-normal.disabled,.next-btn-warning.next-btn-normal.disabled.visited,.next-btn-warning.next-btn-normal.disabled:link,.next-btn-warning.next-btn-normal.disabled:visited,.next-btn-warning.next-btn-normal[disabled],.next-btn-warning.next-btn-normal[disabled].visited,.next-btn-warning.next-btn-normal[disabled]:link,.next-btn-warning.next-btn-normal[disabled]:visited{color:#b3b3b3;color:var(--btn-warning-normal-color-disabled,#b3b3b3)}.next-btn-warning.next-btn-normal.disabled.active,.next-btn-warning.next-btn-normal.disabled.hover,.next-btn-warning.next-btn-normal.disabled:active,.next-btn-warning.next-btn-normal.disabled:focus,.next-btn-warning.next-btn-normal.disabled:hover,.next-btn-warning.next-btn-normal[disabled].active,.next-btn-warning.next-btn-normal[disabled].hover,.next-btn-warning.next-btn-normal[disabled]:active,.next-btn-warning.next-btn-normal[disabled]:focus,.next-btn-warning.next-btn-normal[disabled]:hover{color:#b3b3b3;color:var(--btn-warning-normal-color-disabled,#b3b3b3);background:#fff;background:var(--btn-warning-normal-bg-disabled,#fff);border-color:#d1d5d9;border-color:var(--btn-warning-normal-border-color-disabled,#d1d5d9);text-decoration:none}.next-btn-text{border-radius:0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.next-btn-text,.next-btn-text.hover,.next-btn-text:hover{-webkit-box-shadow:none;box-shadow:none}.next-btn-text.next-btn-primary{background:transparent;border-color:transparent}.next-btn-text.next-btn-primary,.next-btn-text.next-btn-primary.visited,.next-btn-text.next-btn-primary:link,.next-btn-text.next-btn-primary:visited{color:#0064c8;color:var(--btn-text-primary-color,#0064c8)}.next-btn-text.next-btn-primary.active,.next-btn-text.next-btn-primary.hover,.next-btn-text.next-btn-primary:active,.next-btn-text.next-btn-primary:focus,.next-btn-text.next-btn-primary:hover{color:#0064c8;color:var(--btn-text-primary-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-primary.disabled,.next-btn-text.next-btn-primary[disabled]{background:transparent;border-color:transparent}.next-btn-text.next-btn-primary.disabled,.next-btn-text.next-btn-primary.disabled.visited,.next-btn-text.next-btn-primary.disabled:link,.next-btn-text.next-btn-primary.disabled:visited,.next-btn-text.next-btn-primary[disabled],.next-btn-text.next-btn-primary[disabled].visited,.next-btn-text.next-btn-primary[disabled]:link,.next-btn-text.next-btn-primary[disabled]:visited{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3)}.next-btn-text.next-btn-primary.disabled.active,.next-btn-text.next-btn-primary.disabled.hover,.next-btn-text.next-btn-primary.disabled:active,.next-btn-text.next-btn-primary.disabled:focus,.next-btn-text.next-btn-primary.disabled:hover,.next-btn-text.next-btn-primary[disabled].active,.next-btn-text.next-btn-primary[disabled].hover,.next-btn-text.next-btn-primary[disabled]:active,.next-btn-text.next-btn-primary[disabled]:focus,.next-btn-text.next-btn-primary[disabled]:hover{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-secondary{background:transparent;border-color:transparent}.next-btn-text.next-btn-secondary,.next-btn-text.next-btn-secondary.visited,.next-btn-text.next-btn-secondary:link,.next-btn-text.next-btn-secondary:visited{color:#333;color:var(--btn-text-secondary-color,#333)}.next-btn-text.next-btn-secondary.active,.next-btn-text.next-btn-secondary.hover,.next-btn-text.next-btn-secondary:active,.next-btn-text.next-btn-secondary:focus,.next-btn-text.next-btn-secondary:hover{color:#333;color:var(--btn-text-secondary-color-hover,#333);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-secondary.disabled,.next-btn-text.next-btn-secondary[disabled]{background:transparent;border-color:transparent}.next-btn-text.next-btn-secondary.disabled,.next-btn-text.next-btn-secondary.disabled.visited,.next-btn-text.next-btn-secondary.disabled:link,.next-btn-text.next-btn-secondary.disabled:visited,.next-btn-text.next-btn-secondary[disabled],.next-btn-text.next-btn-secondary[disabled].visited,.next-btn-text.next-btn-secondary[disabled]:link,.next-btn-text.next-btn-secondary[disabled]:visited{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3)}.next-btn-text.next-btn-secondary.disabled.active,.next-btn-text.next-btn-secondary.disabled.hover,.next-btn-text.next-btn-secondary.disabled:active,.next-btn-text.next-btn-secondary.disabled:focus,.next-btn-text.next-btn-secondary.disabled:hover,.next-btn-text.next-btn-secondary[disabled].active,.next-btn-text.next-btn-secondary[disabled].hover,.next-btn-text.next-btn-secondary[disabled]:active,.next-btn-text.next-btn-secondary[disabled]:focus,.next-btn-text.next-btn-secondary[disabled]:hover{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-normal{background:transparent;border-color:transparent}.next-btn-text.next-btn-normal,.next-btn-text.next-btn-normal.visited,.next-btn-text.next-btn-normal:link,.next-btn-text.next-btn-normal:visited{color:#333;color:var(--btn-text-normal-color,#333)}.next-btn-text.next-btn-normal.active,.next-btn-text.next-btn-normal.hover,.next-btn-text.next-btn-normal:active,.next-btn-text.next-btn-normal:focus,.next-btn-text.next-btn-normal:hover{color:#0064c8;color:var(--btn-text-normal-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-btn-normal.disabled,.next-btn-text.next-btn-normal[disabled]{background:transparent;border-color:transparent}.next-btn-text.next-btn-normal.disabled,.next-btn-text.next-btn-normal.disabled.visited,.next-btn-text.next-btn-normal.disabled:link,.next-btn-text.next-btn-normal.disabled:visited,.next-btn-text.next-btn-normal[disabled],.next-btn-text.next-btn-normal[disabled].visited,.next-btn-text.next-btn-normal[disabled]:link,.next-btn-text.next-btn-normal[disabled]:visited{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3)}.next-btn-text.next-btn-normal.disabled.active,.next-btn-text.next-btn-normal.disabled.hover,.next-btn-text.next-btn-normal.disabled:active,.next-btn-text.next-btn-normal.disabled:focus,.next-btn-text.next-btn-normal.disabled:hover,.next-btn-text.next-btn-normal[disabled].active,.next-btn-text.next-btn-normal[disabled].hover,.next-btn-text.next-btn-normal[disabled]:active,.next-btn-text.next-btn-normal[disabled]:focus,.next-btn-text.next-btn-normal[disabled]:hover{color:#b3b3b3;color:var(--btn-text-disabled-color,#b3b3b3);background:transparent;border-color:transparent;text-decoration:none}.next-btn-text.next-large{border-radius:0;padding:0;height:24px;height:var(--btn-text-size-l-height,24px);font-size:14px;font-size:var(--btn-text-size-l-font,14px);border-width:0}.next-btn-text.next-large>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:4px}.next-btn-text.next-large>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text.next-large>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text.next-large>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:4px;margin-right:0}.next-btn-text.next-large>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text.next-large>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text.next-large>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn-text.next-large>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn-text.next-large>.next-btn-icon.next-icon-alone:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text.next-large.next-btn-loading:before{width:16px;height:16px;font-size:16px;line-height:16px;left:0;top:50%;text-align:center;margin-right:4px}.next-btn-text.next-large.next-btn-loading>.next-icon{display:none}.next-btn-text.next-large>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn-text.next-large>.next-btn-custom-loading-icon.show{width:16px;margin-right:4px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn-text.next-medium{border-radius:0;padding:0;height:20px;height:var(--btn-text-size-m-height,20px);font-size:12px;font-size:var(--btn-text-size-m-font,12px);border-width:0}.next-btn-text.next-medium>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:4px}.next-btn-text.next-medium>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text.next-medium>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-medium>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:4px;margin-right:0}.next-btn-text.next-medium>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text.next-medium>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-medium>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn-text.next-medium>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn-text.next-medium>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-medium.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:0;top:50%;text-align:center;margin-right:4px}.next-btn-text.next-medium.next-btn-loading>.next-icon{display:none}.next-btn-text.next-medium>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn-text.next-medium>.next-btn-custom-loading-icon.show{width:12px;margin-right:4px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn-text.next-small{border-radius:0;padding:0;height:16px;height:var(--btn-text-size-s-height,16px);font-size:12px;font-size:var(--btn-text-size-s-font,12px);border-width:0}.next-btn-text.next-small>.next-btn-icon.next-icon-first{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0;margin-right:4px}.next-btn-text.next-small>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text.next-small>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-small>.next-btn-icon.next-icon-last{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:4px;margin-right:0}.next-btn-text.next-small>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text.next-small>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-small>.next-btn-icon.next-icon-alone{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.next-btn-text.next-small>.next-btn-icon.next-icon-alone .next-icon-remote,.next-btn-text.next-small>.next-btn-icon.next-icon-alone:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text.next-small.next-btn-loading:before{width:12px;height:12px;font-size:12px;line-height:12px;left:0;top:50%;text-align:center;margin-right:4px}.next-btn-text.next-small.next-btn-loading>.next-icon{display:none}.next-btn-text.next-small>.next-btn-custom-loading-icon{opacity:0;width:0}.next-btn-text.next-small>.next-btn-custom-loading-icon.show{width:12px;margin-right:4px;opacity:1;-webkit-transition:all .1s linear;transition:all .1s linear}.next-btn-text.next-btn-loading{background:transparent;border-color:transparent}.next-btn-text.next-btn-loading,.next-btn-text.next-btn-loading.visited,.next-btn-text.next-btn-loading:link,.next-btn-text.next-btn-loading:visited{color:#111;color:var(--btn-text-loading-color,#111)}.next-btn-text.next-btn-loading.active,.next-btn-text.next-btn-loading.hover,.next-btn-text.next-btn-loading:active,.next-btn-text.next-btn-loading:focus,.next-btn-text.next-btn-loading:hover{color:#111;color:var(--btn-text-loading-color,#111);background:transparent;border-color:transparent;text-decoration:none}.next-btn-loading{pointer-events:none}.next-btn-loading:before{font-family:NextIcon;content:"\e646";content:var(--icon-content-loading,"");opacity:1;visibility:visible;-webkit-animation:loadingCircle 2s linear infinite;animation:loadingCircle 2s linear infinite}.next-btn-loading:after{content:"";display:inline-block;position:static;height:100%;width:0;vertical-align:middle}.next-btn-custom-loading{pointer-events:none}.next-btn-ghost{-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--btn-ghost-border-style,solid)}.next-btn-ghost.next-btn-dark{background:transparent;background:rgba(var(--btn-ghost-dark-bg,transparent),0);border-color:#fff;border-color:var(--btn-ghost-dark-border-color,#fff)}.next-btn-ghost.next-btn-dark,.next-btn-ghost.next-btn-dark.visited,.next-btn-ghost.next-btn-dark:link,.next-btn-ghost.next-btn-dark:visited{color:#fff;color:var(--btn-ghost-dark-color,#fff)}.next-btn-ghost.next-btn-dark.active,.next-btn-ghost.next-btn-dark.hover,.next-btn-ghost.next-btn-dark:active,.next-btn-ghost.next-btn-dark:focus,.next-btn-ghost.next-btn-dark:hover{color:#fff;color:var(--btn-ghost-dark-color-hover,#fff);background:hsla(0,0%,100%,.29);background:rgba(var(--btn-ghost-dark-bg-hover-rgb,#fff),var(--btn-ghost-dark-bg-hover-opacity,.29));border-color:#fff;border-color:var(--btn-ghost-dark-border-color-hover,#fff);text-decoration:none}.next-btn-ghost.next-btn-dark.disabled,.next-btn-ghost.next-btn-dark[disabled]{background:transparent;background:var(--btn-ghost-dark-bg-disabled,transparent);border-color:hsla(0,0%,100%,.15);border-color:rgba(var(--btn-ghost-dark-border-color-disabled-rgb,#fff),var(--btn-ghost-dark-border-color-disabled-opacity,.15))}.next-btn-ghost.next-btn-dark.disabled,.next-btn-ghost.next-btn-dark.disabled.visited,.next-btn-ghost.next-btn-dark.disabled:link,.next-btn-ghost.next-btn-dark.disabled:visited,.next-btn-ghost.next-btn-dark[disabled],.next-btn-ghost.next-btn-dark[disabled].visited,.next-btn-ghost.next-btn-dark[disabled]:link,.next-btn-ghost.next-btn-dark[disabled]:visited{color:hsla(0,0%,100%,.25);color:rgba(var(--btn-ghost-dark-color-disabled-rgb,#fff),var(--btn-ghost-dark-color-disabled-opacity,.25))}.next-btn-ghost.next-btn-dark.disabled.active,.next-btn-ghost.next-btn-dark.disabled.hover,.next-btn-ghost.next-btn-dark.disabled:active,.next-btn-ghost.next-btn-dark.disabled:focus,.next-btn-ghost.next-btn-dark.disabled:hover,.next-btn-ghost.next-btn-dark[disabled].active,.next-btn-ghost.next-btn-dark[disabled].hover,.next-btn-ghost.next-btn-dark[disabled]:active,.next-btn-ghost.next-btn-dark[disabled]:focus,.next-btn-ghost.next-btn-dark[disabled]:hover{color:hsla(0,0%,100%,.25);color:rgba(var(--btn-ghost-dark-color-disabled-rgb,#fff),var(--btn-ghost-dark-color-disabled-opacity,.25));background:transparent;background:var(--btn-ghost-dark-bg-disabled,transparent);border-color:hsla(0,0%,100%,.15);border-color:rgba(var(--btn-ghost-dark-border-color-disabled-rgb,#fff),var(--btn-ghost-dark-border-color-disabled-opacity,.15));text-decoration:none}.next-btn-ghost.next-btn-light{background:#fff;background:rgba(var(--btn-ghost-light-bg,#fff),var(--btn-ghost-light-bg-opacity,1));border-color:#0064c8;border-color:var(--btn-ghost-light-border-color,#0064c8)}.next-btn-ghost.next-btn-light,.next-btn-ghost.next-btn-light.visited,.next-btn-ghost.next-btn-light:link,.next-btn-ghost.next-btn-light:visited{color:#0064c8;color:var(--btn-ghost-light-color,#0064c8)}.next-btn-ghost.next-btn-light.active,.next-btn-ghost.next-btn-light.hover,.next-btn-ghost.next-btn-light:active,.next-btn-ghost.next-btn-light:focus,.next-btn-ghost.next-btn-light:hover{color:#fff;color:var(--btn-ghost-light-color-hover,#fff);background:#0050a0;background:rgba(var(--btn-ghost-light-bg-hover-rgb,#0050A0),var(--btn-ghost-light-bg-hover-opacity,1));border-color:transparent;border-color:var(--btn-ghost-light-border-color-hover,transparent);text-decoration:none}.next-btn-ghost.next-btn-light.disabled,.next-btn-ghost.next-btn-light[disabled]{background:#f7f9fa;background:var(--btn-ghost-light-bg-disabled,#f7f9fa);border-color:#fff;border-color:rgba(var(--btn-ghost-light-border-color-disabled-rgb,#fff),var(--btn-ghost-light-border-color-disabled-opacity,1))}.next-btn-ghost.next-btn-light.disabled,.next-btn-ghost.next-btn-light.disabled.visited,.next-btn-ghost.next-btn-light.disabled:link,.next-btn-ghost.next-btn-light.disabled:visited,.next-btn-ghost.next-btn-light[disabled],.next-btn-ghost.next-btn-light[disabled].visited,.next-btn-ghost.next-btn-light[disabled]:link,.next-btn-ghost.next-btn-light[disabled]:visited{color:#c1c1c1;color:rgba(var(--btn-ghost-light-color-disabled-rgb,#C1C1C1),var(--btn-ghost-light-color-disabled-opacity,1))}.next-btn-ghost.next-btn-light.disabled.active,.next-btn-ghost.next-btn-light.disabled.hover,.next-btn-ghost.next-btn-light.disabled:active,.next-btn-ghost.next-btn-light.disabled:focus,.next-btn-ghost.next-btn-light.disabled:hover,.next-btn-ghost.next-btn-light[disabled].active,.next-btn-ghost.next-btn-light[disabled].hover,.next-btn-ghost.next-btn-light[disabled]:active,.next-btn-ghost.next-btn-light[disabled]:focus,.next-btn-ghost.next-btn-light[disabled]:hover{color:#c1c1c1;color:rgba(var(--btn-ghost-light-color-disabled-rgb,#C1C1C1),var(--btn-ghost-light-color-disabled-opacity,1));background:#f7f9fa;background:var(--btn-ghost-light-bg-disabled,#f7f9fa);border-color:#fff;border-color:rgba(var(--btn-ghost-light-border-color-disabled-rgb,#fff),var(--btn-ghost-light-border-color-disabled-opacity,1));text-decoration:none}.next-btn-group{position:relative;display:inline-block;vertical-align:middle}.next-btn-group>.next-btn{position:relative;float:left;-webkit-box-shadow:none;box-shadow:none}.next-btn-group>.next-btn.active,.next-btn-group>.next-btn:active,.next-btn-group>.next-btn:focus,.next-btn-group>.next-btn:hover{z-index:1}.next-btn-group>.next-btn.disabled,.next-btn-group>.next-btn[disabled]{z-index:0}.next-btn-group .next-btn.next-btn{margin:0 0 0 -1px}.next-btn-group .next-btn:not(:first-child):not(:last-child){border-radius:0}.next-btn-group>.next-btn:first-child{margin:0}.next-btn-group>.next-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.next-btn-group>.next-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.next-btn-group>.next-btn-primary:not(:first-child){border-left-color:hsla(0,0%,100%,.2)}.next-btn-group>.next-btn-primary:not(:first-child):hover{border-left-color:transparent}.next-btn-group>.next-btn-primary:not(:first-child).disabled,.next-btn-group>.next-btn-primary:not(:first-child)[disabled]{border-left-color:#e3e4e6;border-left-color:var(--color-line1-1,#e3e4e6)}.next-btn-group[dir=rtl]>.next-btn{float:right}.next-btn-group[dir=rtl] .next-btn.next-btn{margin:0 -1px 0 0}.next-btn-group[dir=rtl]>.next-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.next-btn-group[dir=rtl]>.next-btn:last-child:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0}.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child){border-right-color:hsla(0,0%,100%,.2)}.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child):hover{border-right-color:transparent}.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child).disabled,.next-btn-group[dir=rtl]>.next-btn-primary:not(:first-child)[disabled]{border-right-color:#e3e4e6;border-right-color:var(--color-line1-1,#e3e4e6)}.next-btn.next-small[dir=rtl]{border-radius:2px;border-radius:var(--btn-size-s-corner,2px)}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-first{margin-left:8px;margin-right:0}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-last{margin-left:0;margin-right:8px}.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-small[dir=rtl]>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-small[dir=rtl].next-btn-loading{padding-left:8px;padding-left:var(--btn-size-s-padding,8px);padding-right:28px;padding-right:calc(var(--btn-size-s-padding, 8px) + 20px)}.next-btn.next-small[dir=rtl].next-btn-loading:after{right:8px;right:var(--btn-size-s-padding,8px);top:50%;margin-right:0;margin-left:8px}.next-btn.next-medium[dir=rtl]{border-radius:2px;border-radius:var(--btn-size-m-corner,2px)}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-first{margin-left:8px;margin-right:0}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-last{margin-left:0;margin-right:8px}.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-medium[dir=rtl]>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn.next-medium[dir=rtl].next-btn-loading{padding-left:16px;padding-left:var(--btn-size-m-padding,16px);padding-right:36px;padding-right:calc(var(--btn-size-m-padding, 16px) + 20px)}.next-btn.next-medium[dir=rtl].next-btn-loading:after{right:16px;right:var(--btn-size-m-padding,16px);top:50%;margin-right:0;margin-left:8px}.next-btn.next-large[dir=rtl]{border-radius:2px;border-radius:var(--btn-size-l-corner,2px)}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-first{margin-left:8px;margin-right:0}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-last{margin-left:0;margin-right:8px}.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn.next-large[dir=rtl]>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn.next-large[dir=rtl].next-btn-loading{padding-left:16px;padding-left:var(--btn-size-l-padding,16px);padding-right:40px;padding-right:calc(var(--btn-size-l-padding, 16px) + 24px)}.next-btn.next-large[dir=rtl].next-btn-loading:after{right:16px;right:var(--btn-size-l-padding,16px);top:50%;margin-right:0;margin-left:8px}.next-btn-text[dir=rtl].next-large{border-radius:0}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-first{margin-left:4px;margin-right:0}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-first:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-last{margin-left:0;margin-right:4px}.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text[dir=rtl].next-large>.next-btn-icon.next-icon-last:before{width:16px;font-size:16px;line-height:inherit}.next-btn-text[dir=rtl].next-large.next-btn-loading{padding-left:0;padding-right:20px}.next-btn-text[dir=rtl].next-large.next-btn-loading:after{right:0;top:50%;margin-right:0;margin-left:4px}.next-btn-text[dir=rtl].next-medium{border-radius:0}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-first{margin-left:4px;margin-right:0}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-last{margin-left:0;margin-right:4px}.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text[dir=rtl].next-medium>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-medium.next-btn-loading{padding-left:0;padding-right:16px}.next-btn-text[dir=rtl].next-medium.next-btn-loading:after{right:0;top:50%;margin-right:0;margin-left:4px}.next-btn-text[dir=rtl].next-small{border-radius:0}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-first{margin-left:4px;margin-right:0}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-first .next-icon-remote,.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-first:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-last{margin-left:0;margin-right:4px}.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-last .next-icon-remote,.next-btn-text[dir=rtl].next-small>.next-btn-icon.next-icon-last:before{width:12px;font-size:12px;line-height:inherit}.next-btn-text[dir=rtl].next-small.next-btn-loading{padding-left:0;padding-right:16px}.next-btn-text[dir=rtl].next-small.next-btn-loading:after{right:0;top:50%;margin-right:0;margin-left:4px}.next-input{vertical-align:middle;display:inline-table;border-collapse:separate;font-size:0;line-height:1;width:200px;border-spacing:0;-webkit-transition:all .1s linear;transition:all .1s linear;border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-bg-color,#fff)}.next-input,.next-input *,.next-input :after,.next-input :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-input input{height:100%}.next-input input[type=reset],.next-input input[type=submit]{-webkit-appearance:button;cursor:pointer}.next-input input::-moz-focus-inner{border:0;padding:0}.next-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset;-webkit-box-shadow:0 0 0 1000px var(--input-bg-color,#fff) inset;border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-input input[type=password]::-ms-reveal{display:none}.next-input textarea{resize:none}.next-input input,.next-input textarea{width:100%;border:none;outline:none;padding:0;margin:0;font-weight:400;vertical-align:middle;background-color:transparent;color:#333;color:var(--input-text-color,#333)}.next-input input::-ms-clear,.next-input textarea::-ms-clear{display:none}.next-input.next-small{height:24px;height:var(--form-element-small-height,24px);border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-input.next-small .next-input-label{padding-left:8px;padding-left:var(--input-s-label-padding-left,8px)}.next-input.next-small .next-input-inner,.next-input.next-small .next-input-label{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small .next-input-control,.next-input.next-small .next-input-inner-text{padding-right:4px;padding-right:var(--input-s-icon-padding-right,4px)}.next-input.next-small input{height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px \0;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::-moz-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small input::placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-input.next-small .next-input-text-field{padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px);height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2)}.next-input.next-small .next-icon .next-icon-remote,.next-input.next-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-input.next-small .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-small-corner,2px) var(--form-element-small-corner,2px) 0}.next-input.next-medium{height:32px;height:var(--form-element-medium-height,32px);border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-input.next-medium .next-input-label{padding-left:16px;padding-left:var(--input-m-label-padding-left,16px)}.next-input.next-medium .next-input-inner,.next-input.next-medium .next-input-label{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium .next-input-control,.next-input.next-medium .next-input-inner-text{padding-right:8px;padding-right:var(--input-m-icon-padding-right,8px)}.next-input.next-medium input{height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px \0;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::-moz-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium input::placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-medium .next-input-text-field{padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px);height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2)}.next-input.next-medium .next-icon .next-icon-remote,.next-input.next-medium .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-input.next-medium .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-medium-corner,2px) var(--form-element-medium-corner,2px) 0}.next-input.next-large{height:36px;height:var(--form-element-large-height,36px);border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-input.next-large .next-input-label{padding-left:16px;padding-left:var(--input-l-label-padding-left,16px)}.next-input.next-large .next-input-inner,.next-input.next-large .next-input-label{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large .next-input-control,.next-input.next-large .next-input-inner-text{padding-right:12px;padding-right:var(--input-l-icon-padding-right,12px)}.next-input.next-large input{height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px \0;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::-webkit-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::-moz-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::-ms-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large input::placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-large .next-input-text-field{padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px);height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2)}.next-input.next-large .next-icon .next-icon-remote,.next-input.next-large .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-input.next-large .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-large-corner,2px) var(--form-element-large-corner,2px) 0}.next-input.next-input-textarea{height:auto;border-radius:2px;border-radius:var(--input-multiple-corner,2px);font-size:0}.next-input.next-input-textarea textarea{color:#333;color:var(--input-text-color,#333);padding:12px 16px;padding:var(--input-multiple-padding-tb,12px) var(--input-multiple-padding-lr,16px);font-size:12px;font-size:var(--input-multiple-font-size,12px);border-radius:2px;border-radius:var(--input-multiple-corner,2px)}.next-input.next-input-textarea.next-small textarea{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-input.next-input-textarea.next-large textarea{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-input.next-input-textarea .next-input-control{display:block;width:auto;border-radius:2px;border-radius:var(--input-multiple-corner,2px)}.next-input.next-input-textarea .next-input-len{padding:0 12px 4px;padding:0 var(--input-l-icon-padding-right,12px) 4px;display:block;text-align:right;width:auto}.next-input-hint-wrap{color:#888;color:var(--input-hint-color,#888);position:relative}.next-input-hint-wrap .next-input-clear{opacity:0;z-index:1;position:absolute}.next-input-hint-wrap .next-input-hint{opacity:1}.next-input .next-icon-eye-close:hover,.next-input .next-icon-eye:hover,.next-input .next-input-clear-icon:hover{cursor:pointer;color:#555;color:var(--input-hint-hover-color,#555)}.next-input .next-input-hover-show{opacity:0}.next-input.next-focus,.next-input:hover{border-color:#c0c6cc;border-color:var(--input-hover-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-hover-bg-color,#fff)}.next-input.next-focus .next-input-clear,.next-input:hover .next-input-clear{opacity:1}.next-input.next-focus .next-input-clear+.next-input-hint,.next-input:hover .next-input-clear+.next-input-hint{opacity:0}.next-input.next-focus .next-input-hover-show,.next-input .next-input-clear:focus,.next-input:hover .next-input-hover-show{opacity:1}.next-input .next-input-clear:focus+.next-input-hint{opacity:0}.next-input.next-focus{border-color:#0064c8;border-color:var(--input-focus-border-color,#0064c8);background-color:#fff;background-color:var(--input-focus-bg-color,#fff);-webkit-box-shadow:0 0 0 0 rgba(0,100,200,.2);box-shadow:0 0 0 0 rgba(0,100,200,.2)}.next-input.next-warning{background-color:#fff;background-color:var(--input-feedback-warning-bg-color,#fff)}.next-input.next-warning,.next-input.next-warning.next-focus,.next-input.next-warning:hover{border-color:#fac800;border-color:var(--input-feedback-warning-border-color,#fac800)}.next-input.next-warning.next-focus{-webkit-box-shadow:0 0 0 0 rgba(250,200,0,.2);box-shadow:0 0 0 0 rgba(250,200,0,.2)}.next-input.next-error{border-color:#c80000;border-color:var(--input-feedback-error-border-color,#c80000);background-color:#fff;background-color:var(--input-feedback-error-bg-color,#fff)}.next-input.next-error input,.next-input.next-error textarea{color:#333;color:var(--input-feedback-error-color,#333)}.next-input.next-error.next-focus,.next-input.next-error:hover{border-color:#c80000;border-color:var(--input-feedback-error-border-color,#c80000)}.next-input.next-error.next-focus{-webkit-box-shadow:0 0 0 0 rgba(200,0,0,.2);box-shadow:0 0 0 0 rgba(200,0,0,.2)}.next-input.next-hidden{display:none}.next-input.next-noborder{border:none;-webkit-box-shadow:none;box-shadow:none}.next-input-control .next-input-len{font-size:12px;font-size:var(--input-maxlen-font-size,12px);line-height:12px;line-height:var(--input-maxlen-font-size,12px);color:#888;color:var(--input-maxlen-color,#888);display:table-cell;width:1px;vertical-align:bottom}.next-input-control .next-input-len.next-error{color:#f8efef;color:var(--input-maxlen-error-color,#f8efef)}.next-input-control .next-input-len.next-warning{color:#fff3b4;color:var(--input-maxlen-warning-color,#fff3b4)}.next-input-control>*{display:table-cell;width:1%;top:0}.next-input-control>:not(:last-child){padding-right:4px}.next-input-control .next-icon{-webkit-transition:all .1s linear;transition:all .1s linear;color:#888;color:var(--input-hint-color,#888)}.next-input-control .next-input-warning-icon{color:#fac800;color:var(--input-feedback-warning-color,#fac800)}.next-input-control .next-input-warning-icon:before{content:"\ea21";content:var(--input-feedback-warning-icon,"")}.next-input-control .next-input-success-icon{color:#00a700;color:var(--input-feedback-success-color,#00a700)}.next-input-control .next-input-success-icon:before{content:"\ea23";content:var(--input-feedback-success-icon,"")}.next-input-control .next-input-loading-icon{color:#888;color:var(--input-feedback-loading-color,#888)}.next-input-control .next-input-loading-icon:before{content:"\e646";content:var(--input-feedback-loading-icon,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-input-control .next-input-clear-icon:before{content:"\ea22";content:var(--input-feedback-clear-icon,"")}.next-input-label{color:#555;color:var(--input-label-color,#555)}.next-input input::-moz-placeholder,.next-input textarea::-moz-placeholder{color:#666;color:var(--input-placeholder-color,#666);opacity:1}.next-input input:-ms-input-placeholder,.next-input textarea:-ms-input-placeholder{color:#666;color:var(--input-placeholder-color,#666)}.next-input input::-webkit-input-placeholder,.next-input textarea::-webkit-input-placeholder{color:#666;color:var(--input-placeholder-color,#666)}.next-input.next-disabled{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled,.next-input.next-disabled:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-input.next-disabled input,.next-input.next-disabled textarea{-webkit-text-fill-color:#b3b3b3;-webkit-text-fill-color:var(--input-disabled-color,#b3b3b3);color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled input::-moz-placeholder,.next-input.next-disabled textarea::-moz-placeholder{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);opacity:1}.next-input.next-disabled input:-ms-input-placeholder,.next-input.next-disabled textarea:-ms-input-placeholder{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled input::-webkit-input-placeholder,.next-input.next-disabled textarea::-webkit-input-placeholder{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled .next-input-hint-wrap,.next-input.next-disabled .next-input-label,.next-input.next-disabled .next-input-len{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled .next-input-hint-wrap .next-input-clear{opacity:0}.next-input.next-disabled .next-input-hint-wrap .next-input-hint{opacity:1}.next-input.next-disabled .next-input-hint-wrap .next-input-clear-icon:hover{cursor:not-allowed;color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input.next-disabled .next-icon{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-input-control,.next-input-inner,.next-input-label{display:table-cell;width:1px;vertical-align:middle;line-height:1;background-color:transparent;white-space:nowrap}.next-input-group{display:inline-table;border-collapse:separate;border-spacing:0;line-height:0;width:100%}.next-input-group,.next-input-group *,.next-input-group :after,.next-input-group :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-input-group-auto-width{width:100%;border-radius:0!important}.next-input-group>.next-input{border-radius:0}.next-input-group>.next-input.next-focus{position:relative;z-index:1}.next-input-group>.next-input:first-child.next-small{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-small-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-small-corner,2px)!important}.next-input-group>.next-input:first-child.next-medium{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-medium-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-medium-corner,2px)!important}.next-input-group>.next-input:first-child.next-large{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-large-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-large-corner,2px)!important}.next-input-group>.next-input:last-child.next-small{border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-small-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-small-corner,2px)!important}.next-input-group>.next-input:last-child.next-medium{border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-medium-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-medium-corner,2px)!important}.next-input-group>.next-input:last-child.next-large{border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-large-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-large-corner,2px)!important}.next-input-group-addon{width:1px;display:table-cell;vertical-align:middle;white-space:nowrap}.next-input-group-addon:first-child,.next-input-group-addon:first-child>*{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group-addon:first-child>*{margin-right:-1px;margin-right:calc(0px - var(--input-border-width, 1px))}.next-input-group-addon:first-child>.next-focus{position:relative;z-index:1}.next-input-group-addon:first-child>*>.next-input{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group-addon:first-child>*>.next-input.next-focus{position:relative;z-index:1}.next-input-group-addon:last-child,.next-input-group-addon:last-child>*{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group-addon:last-child>*{margin-left:-1px;margin-left:calc(0px - var(--input-border-width, 1px))}.next-input-group-addon:last-child>*>.next-input{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group-text{color:#888;color:var(--input-addon-text-color,#888);background-color:#f8f8f9;background-color:var(--input-addon-bg-color,#f8f8f9);text-align:center;border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);padding:0 8px;padding:0 var(--input-addon-padding,8px)}.next-input-group-text:first-child{border-right-width:0}.next-input-group-text:last-child{border-left-width:0}.next-input-group-text.next-disabled{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);cursor:not-allowed}.next-input-group-text.next-disabled,.next-input-group-text.next-disabled:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-input-group-text.next-small{font-size:12px;font-size:var(--form-element-small-font-size,12px);border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-input-group-text.next-medium{font-size:12px;font-size:var(--form-element-medium-font-size,12px);border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-input-group-text.next-large{font-size:14px;font-size:var(--form-element-large-font-size,14px);border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-input[dir=rtl].next-small .next-input-label{padding-left:0;padding-right:8px;padding-right:var(--input-s-label-padding-left,8px)}.next-input[dir=rtl].next-small .next-input-control{padding-right:0;padding-left:4px;padding-left:var(--input-s-icon-padding-right,4px)}.next-input[dir=rtl].next-medium .next-input-label{padding-left:0;padding-right:16px;padding-right:var(--input-m-label-padding-left,16px)}.next-input[dir=rtl].next-medium .next-input-control{padding-right:0;padding-left:8px;padding-left:var(--input-m-icon-padding-right,8px)}.next-input[dir=rtl].next-large .next-input-label{padding-left:0;padding-right:16px;padding-right:var(--input-l-label-padding-left,16px)}.next-input[dir=rtl].next-large .next-input-control{padding-right:0;padding-left:12px;padding-left:var(--input-l-icon-padding-right,12px)}.next-input[dir=rtl].next-input-textarea .next-input-len{text-align:left}.next-input[dir=rtl] .next-input-control>:not(:last-child){padding-left:4px;padding-right:0}.next-input-group[dir=rtl]>.next-input:first-child.next-small{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-small-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-small-corner,2px)!important}.next-input-group[dir=rtl]>.next-input:first-child.next-medium{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-medium-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-medium-corner,2px)!important}.next-input-group[dir=rtl]>.next-input:first-child.next-large{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-large-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-large-corner,2px)!important}.next-input-group[dir=rtl]>.next-input:last-child.next-small{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-small-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-small-corner,2px)!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.next-input-group[dir=rtl]>.next-input:last-child.next-medium{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-medium-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-medium-corner,2px)!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.next-input-group[dir=rtl]>.next-input:last-child.next-large{border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-large-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-large-corner,2px)!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child.next-small,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input.next-small,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input.next-small{border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-small-corner,2px)!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-small-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input.next-medium{border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-medium-corner,2px)!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-medium-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child.next-large,.next-input-group[dir=rtl] .next-input-group-addon:first-child>*>.next-input.next-large,.next-input-group[dir=rtl] .next-input-group-addon:first-child>.next-input.next-large{border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--form-element-large-corner,2px)!important;border-top-right-radius:2px!important;border-top-right-radius:var(--form-element-large-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:first-child>*{margin-left:-1px;margin-left:calc(0px - var(--input-border-width, 1px));border-bottom-left-radius:0!important;border-top-left-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child.next-small,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input.next-small,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input.next-small{border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-small-corner,2px)!important;border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-small-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input.next-medium,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input.next-medium{border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-medium-corner,2px)!important;border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-medium-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child.next-large,.next-input-group[dir=rtl] .next-input-group-addon:last-child>*>.next-input.next-large,.next-input-group[dir=rtl] .next-input-group-addon:last-child>.next-input.next-large{border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--form-element-large-corner,2px)!important;border-top-left-radius:2px!important;border-top-left-radius:var(--form-element-large-corner,2px)!important}.next-input-group[dir=rtl] .next-input-group-addon:last-child>*{margin-right:-1px;margin-right:calc(0px - var(--input-border-width, 1px));border-bottom-right-radius:0!important;border-top-right-radius:0!important}.next-input-group[dir=rtl] .next-input-group-text:first-child{border-right-width:1px;border-right-width:var(--input-border-width,1px);border-left:0}.next-input-group[dir=rtl] .next-input-group-text:last-child{border-left-width:1px;border-left-width:var(--input-border-width,1px);border-right:0}.next-calendar,.next-calendar *,.next-calendar :after,.next-calendar :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-calendar table{border-collapse:collapse;border-spacing:0}.next-calendar td,.next-calendar th{padding:0}@-webkit-keyframes cellZoomIn{0%{-webkit-transform:scale(.5);transform:scale(.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes cellZoomIn{0%{-webkit-transform:scale(.5);transform:scale(.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes cellHover{0%{opacity:0}to{opacity:1}}@keyframes cellHover{0%{opacity:0}to{opacity:1}}@-webkit-keyframes enterToLeft{0%{-webkit-transform:translate(-40%);transform:translate(-40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}@keyframes enterToLeft{0%{-webkit-transform:translate(-40%);transform:translate(-40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes enterToRight{0%{-webkit-transform:translate(40%);transform:translate(40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}@keyframes enterToRight{0%{-webkit-transform:translate(40%);transform:translate(40%);opacity:0}50%{opacity:.6}to{opacity:1;-webkit-transform:translate(0);transform:translate(0)}}.next-calendar-card .next-calendar-header,.next-calendar-fullscreen .next-calendar-header{text-align:right}.next-calendar-card .next-calendar-header .next-select,.next-calendar-fullscreen .next-calendar-header .next-select{margin-right:4px;vertical-align:top}.next-calendar-card .next-calendar-header .next-menu,.next-calendar-fullscreen .next-calendar-header .next-menu{text-align:left}.next-calendar-fullscreen .next-calendar-header{margin-bottom:8px;margin-bottom:var(--calendar-fullscreen-header-margin-bottom,8px)}.next-calendar-card .next-calendar-header{margin-bottom:8px;margin-bottom:var(--calendar-card-header-margin-bottom,8px)}.next-calendar-panel-header{position:relative;background:transparent;background:var(--calendar-panel-header-background,transparent);margin-bottom:16px;margin-bottom:var(--calendar-panel-header-margin-bottom,16px);border-bottom:1px solid transparent;border-bottom:var(--calendar-panel-header-border-bottom-width,1px) solid var(--calendar-panel-header-border-bottom-color,transparent)}.next-calendar-panel-header-full,.next-calendar-panel-header-left,.next-calendar-panel-header-right{height:32px;height:var(--calendar-panel-header-height,32px);line-height:32px;line-height:var(--calendar-panel-header-height,32px)}.next-calendar-panel-header-full .next-calendar-btn,.next-calendar-panel-header-left .next-calendar-btn,.next-calendar-panel-header-right .next-calendar-btn{vertical-align:top;font-weight:500;font-weight:var(--calendar-btn-date-font-weight,500);margin:0 4px;margin:0 var(--calendar-btn-date-margin-lr,4px);background:transparent;border-color:transparent}.next-calendar-panel-header-full .next-calendar-btn,.next-calendar-panel-header-full .next-calendar-btn.visited,.next-calendar-panel-header-full .next-calendar-btn:link,.next-calendar-panel-header-full .next-calendar-btn:visited,.next-calendar-panel-header-left .next-calendar-btn,.next-calendar-panel-header-left .next-calendar-btn.visited,.next-calendar-panel-header-left .next-calendar-btn:link,.next-calendar-panel-header-left .next-calendar-btn:visited,.next-calendar-panel-header-right .next-calendar-btn,.next-calendar-panel-header-right .next-calendar-btn.visited,.next-calendar-panel-header-right .next-calendar-btn:link,.next-calendar-panel-header-right .next-calendar-btn:visited{color:#333;color:var(--calendar-btn-date-color,#333)}.next-calendar-panel-header-full .next-calendar-btn.active,.next-calendar-panel-header-full .next-calendar-btn.hover,.next-calendar-panel-header-full .next-calendar-btn:active,.next-calendar-panel-header-full .next-calendar-btn:focus,.next-calendar-panel-header-full .next-calendar-btn:hover,.next-calendar-panel-header-left .next-calendar-btn.active,.next-calendar-panel-header-left .next-calendar-btn.hover,.next-calendar-panel-header-left .next-calendar-btn:active,.next-calendar-panel-header-left .next-calendar-btn:focus,.next-calendar-panel-header-left .next-calendar-btn:hover,.next-calendar-panel-header-right .next-calendar-btn.active,.next-calendar-panel-header-right .next-calendar-btn.hover,.next-calendar-panel-header-right .next-calendar-btn:active,.next-calendar-panel-header-right .next-calendar-btn:focus,.next-calendar-panel-header-right .next-calendar-btn:hover{color:#0064c8;color:var(--calendar-btn-date-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-calendar-panel-header-left,.next-calendar-panel-header-right{display:inline-block;width:50%;text-align:center}.next-calendar-panel-header-full{width:100%;text-align:center}.next-calendar-panel-menu{max-height:210px;overflow:auto;text-align:left}.next-calendar-btn{cursor:pointer;padding:0;margin:0;border:0;background:transparent;outline:none;height:100%}.next-calendar-btn>.next-icon.next-icon .next-icon-remote,.next-calendar-btn>.next-icon.next-icon:before{width:12px;width:var(--calendar-btn-arrow-size,12px);font-size:12px;font-size:var(--calendar-btn-arrow-size,12px);line-height:inherit}.next-calendar-btn .next-icon{margin-left:4px}.next-calendar-btn-next-decade,.next-calendar-btn-next-month,.next-calendar-btn-next-year,.next-calendar-btn-prev-decade,.next-calendar-btn-prev-month,.next-calendar-btn-prev-year{position:absolute;top:0;background:transparent;border-color:transparent}.next-calendar-btn-next-decade,.next-calendar-btn-next-decade.visited,.next-calendar-btn-next-decade:link,.next-calendar-btn-next-decade:visited,.next-calendar-btn-next-month,.next-calendar-btn-next-month.visited,.next-calendar-btn-next-month:link,.next-calendar-btn-next-month:visited,.next-calendar-btn-next-year,.next-calendar-btn-next-year.visited,.next-calendar-btn-next-year:link,.next-calendar-btn-next-year:visited,.next-calendar-btn-prev-decade,.next-calendar-btn-prev-decade.visited,.next-calendar-btn-prev-decade:link,.next-calendar-btn-prev-decade:visited,.next-calendar-btn-prev-month,.next-calendar-btn-prev-month.visited,.next-calendar-btn-prev-month:link,.next-calendar-btn-prev-month:visited,.next-calendar-btn-prev-year,.next-calendar-btn-prev-year.visited,.next-calendar-btn-prev-year:link,.next-calendar-btn-prev-year:visited{color:#333;color:var(--calendar-btn-arrow-color,#333)}.next-calendar-btn-next-decade.active,.next-calendar-btn-next-decade.hover,.next-calendar-btn-next-decade:active,.next-calendar-btn-next-decade:focus,.next-calendar-btn-next-decade:hover,.next-calendar-btn-next-month.active,.next-calendar-btn-next-month.hover,.next-calendar-btn-next-month:active,.next-calendar-btn-next-month:focus,.next-calendar-btn-next-month:hover,.next-calendar-btn-next-year.active,.next-calendar-btn-next-year.hover,.next-calendar-btn-next-year:active,.next-calendar-btn-next-year:focus,.next-calendar-btn-next-year:hover,.next-calendar-btn-prev-decade.active,.next-calendar-btn-prev-decade.hover,.next-calendar-btn-prev-decade:active,.next-calendar-btn-prev-decade:focus,.next-calendar-btn-prev-decade:hover,.next-calendar-btn-prev-month.active,.next-calendar-btn-prev-month.hover,.next-calendar-btn-prev-month:active,.next-calendar-btn-prev-month:focus,.next-calendar-btn-prev-month:hover,.next-calendar-btn-prev-year.active,.next-calendar-btn-prev-year.hover,.next-calendar-btn-prev-year:active,.next-calendar-btn-prev-year:focus,.next-calendar-btn-prev-year:hover{color:#0064c8;color:var(--calendar-btn-arrow-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-calendar-btn-prev-decade,.next-calendar-btn-prev-year{left:16px;left:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar-btn-prev-month{left:36px;left:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar-btn-next-month{right:36px;right:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar-btn-next-decade,.next-calendar-btn-next-year{right:16px;right:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar-fullscreen .next-calendar-th{text-align:right;color:#888;color:var(--calendar-fullscreen-table-head-color,#888);font-size:14px;font-size:var(--calendar-fullscreen-table-head-font-size,14px);font-weight:700;font-weight:var(--calendar-fullscreen-table-head-font-weight,bold);padding-right:12px;padding-right:var(--calendar-fullscreen-table-head-padding-r,12px);padding-bottom:4px;padding-bottom:var(--calendar-fullscreen-table-head-padding-b,4px)}.next-calendar-fullscreen .next-calendar-cell{font-size:14px;font-size:var(--calendar-fullscreen-table-cell-font-size,14px)}.next-calendar-fullscreen .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell.next-selected .next-calendar-month{font-weight:700;font-weight:var(--calendar-fullscreen-table-cell-select-font-weight,bold);background:#f7f9fa;background:var(--calendar-fullscreen-table-cell-select-background,#f7f9fa);color:#0064c8;color:var(--calendar-fullscreen-table-cell-select-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-fullscreen-table-cell-select-border-color,#0064c8)}.next-calendar-fullscreen .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell.next-disabled .next-calendar-month{cursor:not-allowed;background:#f7f9fa;background:var(--calendar-fullscreen-table-cell-disabled-background,#f7f9fa);color:#c1c1c1;color:var(--calendar-fullscreen-table-cell-disabled-color,#c1c1c1);border-color:#e3e4e6;border-color:var(--calendar-fullscreen-table-cell-disabled-border-color,#e3e4e6)}.next-calendar-fullscreen .next-calendar-date,.next-calendar-fullscreen .next-calendar-month{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 4px;margin:var(--calendar-fullscreen-table-cell-margin-tb,0) var(--calendar-fullscreen-table-cell-margin-lr,4px);padding:4px 8px;padding:var(--calendar-fullscreen-table-cell-padding-tb,4px) var(--calendar-fullscreen-table-cell-padding-lr,8px);min-height:80px;min-height:var(--calendar-fullscreen-table-cell-min-height,80px);border-top:2px solid;border-top:var(--calendar-fullscreen-table-cell-boder-top-width,2px) var(--line-solid,solid);-webkit-transition:background .1s linear;transition:background .1s linear;background:#fff;background:var(--calendar-fullscreen-table-cell-normal-background,#fff);color:#b3b3b3;color:var(--calendar-fullscreen-table-cell-normal-color,#b3b3b3);border-color:#e3e4e6;border-color:var(--calendar-fullscreen-table-cell-normal-border-color,#e3e4e6)}.next-calendar-fullscreen .next-calendar-date:hover,.next-calendar-fullscreen .next-calendar-month:hover{background:#f7f9fa;background:var(--calendar-fullscreen-table-cell-hover-background,#f7f9fa);color:#0064c8;color:var(--calendar-fullscreen-table-cell-hover-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-fullscreen-table-cell-hover-border-color,#0064c8)}.next-calendar-fullscreen .next-calendar-cell-next-month .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell-prev-month .next-calendar-date{background:transparent;background:var(--calendar-fullscreen-table-cell-other-background,transparent);color:#c1c1c1;color:var(--calendar-fullscreen-table-cell-other-color,#c1c1c1);border-color:transparent;border-color:var(--calendar-fullscreen-table-cell-other-border-color,transparent)}.next-calendar-fullscreen .next-calendar-cell-current .next-calendar-date,.next-calendar-fullscreen .next-calendar-cell-current .next-calendar-month{font-weight:700;font-weight:var(--calendar-fullscreen-table-cell-current-font-weight,bold);background:#fff;background:var(--calendar-fullscreen-table-cell-current-background,#fff);color:#0064c8;color:var(--calendar-fullscreen-table-cell-current-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-fullscreen-table-cell-current-border-color,#0064c8)}.next-calendar-card .next-calendar-th,.next-calendar-panel .next-calendar-th,.next-calendar-range .next-calendar-th{text-align:center;color:#666;color:var(--calendar-card-table-head-color,#666);font-size:12px;font-size:var(--calendar-card-table-head-font-size,12px);font-weight:400;font-weight:var(--calendar-card-table-head-font-weight,normal)}.next-calendar-card .next-calendar-cell,.next-calendar-panel .next-calendar-cell,.next-calendar-range .next-calendar-cell{text-align:center;font-size:12px;font-size:var(--calendar-card-table-cell-font-size,12px)}.next-calendar-card .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-year{-webkit-animation:cellZoomIn .4s cubic-bezier(.23,1,.32,1);animation:cellZoomIn .4s cubic-bezier(.23,1,.32,1);font-weight:400;font-weight:var(--calendar-card-table-cell-select-font-weight,normal);background:#0064c8;background:var(--calendar-card-table-cell-select-background,#0064c8);color:#fff;color:var(--calendar-card-table-cell-select-color,#fff);border-color:#0064c8;border-color:var(--calendar-card-table-cell-select-border-color,#0064c8)}.next-calendar-card .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-card .next-calendar-cell.next-disabled .next-calendar-month,.next-calendar-card .next-calendar-cell.next-disabled .next-calendar-year,.next-calendar-panel .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-disabled .next-calendar-month,.next-calendar-panel .next-calendar-cell.next-disabled .next-calendar-year,.next-calendar-range .next-calendar-cell.next-disabled .next-calendar-date,.next-calendar-range .next-calendar-cell.next-disabled .next-calendar-month,.next-calendar-range .next-calendar-cell.next-disabled .next-calendar-year{cursor:not-allowed;background:transparent;background:var(--calendar-card-table-cell-disabled-background,transparent);color:#b3b3b3;color:var(--calendar-card-table-cell-disabled-color,#b3b3b3);border-color:transparent;border-color:var(--calendar-card-table-cell-disabled-border-color,transparent)}.next-calendar-card .next-calendar-cell.next-inrange .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-inrange .next-calendar-date,.next-calendar-range .next-calendar-cell.next-inrange .next-calendar-date{background:#eff3f8;background:var(--calendar-card-table-cell-inrange-background,#eff3f8);color:#333;color:var(--calendar-card-table-cell-inrange-color,#333);border-color:transparent;border-color:var(--calendar-card-table-cell-inrange-border-color,transparent)}.next-calendar-card .next-calendar-date,.next-calendar-card .next-calendar-month,.next-calendar-card .next-calendar-year,.next-calendar-panel .next-calendar-date,.next-calendar-panel .next-calendar-month,.next-calendar-panel .next-calendar-year,.next-calendar-range .next-calendar-date,.next-calendar-range .next-calendar-month,.next-calendar-range .next-calendar-year{text-align:center;border:1px solid;border:var(--line-1,1px) var(--line-solid,solid);background:#fff;background:var(--calendar-card-table-cell-normal-background,#fff);color:#333;color:var(--calendar-card-table-cell-normal-color,#333);border-color:#fff;border-color:var(--calendar-card-table-cell-normal-border-color,#fff)}.next-calendar-card .next-calendar-date:hover,.next-calendar-card .next-calendar-month:hover,.next-calendar-card .next-calendar-year:hover,.next-calendar-panel .next-calendar-date:hover,.next-calendar-panel .next-calendar-month:hover,.next-calendar-panel .next-calendar-year:hover,.next-calendar-range .next-calendar-date:hover,.next-calendar-range .next-calendar-month:hover,.next-calendar-range .next-calendar-year:hover{cursor:pointer;background:#f7f9fa;background:var(--calendar-card-table-cell-hover-background,#f7f9fa);color:#333;color:var(--calendar-card-table-cell-hover-color,#333);border-color:transparent;border-color:var(--calendar-card-table-cell-hover-border-color,transparent)}.next-calendar-card .next-calendar-date,.next-calendar-panel .next-calendar-date,.next-calendar-range .next-calendar-date{width:24px;width:var(--calendar-card-table-cell-date-width,24px);height:24px;height:var(--calendar-card-table-cell-date-height,24px);line-height:22px;line-height:calc(var(--calendar-card-table-cell-date-height, 24px) - 2px);margin:4px auto;border-radius:2px;border-radius:var(--calendar-card-table-cell-date-border-radius,2px)}.next-calendar-card .next-calendar-month,.next-calendar-panel .next-calendar-month,.next-calendar-range .next-calendar-month{width:60px;width:var(--calendar-card-table-cell-month-width,60px);height:24px;height:var(--calendar-card-table-cell-month-height,24px);line-height:22px;line-height:calc(var(--calendar-card-table-cell-month-height, 24px) - 2px);margin:8px auto;border-radius:2px;border-radius:var(--calendar-card-table-cell-month-border-radius,2px)}.next-calendar-card .next-calendar-year,.next-calendar-panel .next-calendar-year,.next-calendar-range .next-calendar-year{width:48px;width:var(--calendar-card-table-cell-year-width,48px);height:24px;height:var(--calendar-card-table-cell-year-height,24px);line-height:22px;line-height:calc(var(--calendar-card-table-cell-year-height, 24px) - 2px);margin:8px auto;border-radius:2px;border-radius:var(--calendar-card-table-cell-year-border-radius,2px)}.next-calendar-card .next-calendar-cell-next-month .next-calendar-date,.next-calendar-card .next-calendar-cell-prev-month .next-calendar-date,.next-calendar-panel .next-calendar-cell-next-month .next-calendar-date,.next-calendar-panel .next-calendar-cell-prev-month .next-calendar-date,.next-calendar-range .next-calendar-cell-next-month .next-calendar-date,.next-calendar-range .next-calendar-cell-prev-month .next-calendar-date{background:#fff;background:var(--calendar-card-table-cell-other-background,#fff);color:#555;color:var(--calendar-card-table-cell-other-color,#555);border-color:#fff;border-color:var(--calendar-card-table-cell-other-border-color,#fff)}.next-calendar-card .next-calendar-cell-current .next-calendar-date,.next-calendar-card .next-calendar-cell-current .next-calendar-month,.next-calendar-card .next-calendar-cell-current .next-calendar-year,.next-calendar-panel .next-calendar-cell-current .next-calendar-date,.next-calendar-panel .next-calendar-cell-current .next-calendar-month,.next-calendar-panel .next-calendar-cell-current .next-calendar-year,.next-calendar-range .next-calendar-cell-current .next-calendar-date,.next-calendar-range .next-calendar-cell-current .next-calendar-month,.next-calendar-range .next-calendar-cell-current .next-calendar-year{font-weight:400;font-weight:var(--calendar-card-table-cell-current-font-weight,normal);background:#fff;background:var(--calendar-card-table-cell-current-background,#fff);color:#0064c8;color:var(--calendar-card-table-cell-current-color,#0064c8);border-color:#0064c8;border-color:var(--calendar-card-table-cell-current-border-color,#0064c8)}.next-calendar-panel.next-calendar-week .next-calendar-tbody tr{cursor:pointer}.next-calendar-panel.next-calendar-week .next-calendar-tbody tr:hover .next-calendar-cell .next-calendar-date{background:#f7f9fa;background:var(--calendar-card-table-cell-hover-background,#f7f9fa);color:#333;color:var(--calendar-card-table-cell-hover-color,#333);border-color:transparent;border-color:var(--calendar-card-table-cell-hover-border-color,transparent)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-cell.next-selected .next-calendar-date{font-weight:400;background:transparent;border-color:transparent}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-date{position:relative;color:#333;color:var(--calendar-card-table-cell-inrange-color,#333)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-date:before{content:"";position:absolute;left:-1px;left:calc(0px - var(--line-1, 1px));top:-1px;top:calc(0px - var(--line-1, 1px));bottom:-1px;bottom:calc(0px - var(--line-1, 1px));right:-1px;right:calc(0px - var(--line-1, 1px));border:1px solid;border:var(--line-1,1px) var(--line-solid,solid);background:#eff3f8;background:var(--calendar-card-table-cell-inrange-background,#eff3f8);border-color:transparent;border-color:var(--calendar-card-table-cell-inrange-border-color,transparent);border-radius:2px;border-radius:var(--calendar-card-table-cell-date-border-radius,2px)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-date>span{position:relative}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-end,.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-start{color:#fff;color:var(--calendar-card-table-cell-select-color,#fff)}.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-end:before,.next-calendar-panel.next-calendar-week .next-calendar-tbody .next-calendar-week-active-start:before{background:#0064c8;background:var(--calendar-card-table-cell-select-background,#0064c8);border-color:#0064c8;border-color:var(--calendar-card-table-cell-select-border-color,#0064c8)}.next-calendar[dir=rtl] .next-calendar-header{text-align:left}.next-calendar[dir=rtl] .next-calendar-header .next-select{margin-right:0;margin-left:4px}.next-calendar[dir=rtl] .next-calendar-header .next-menu{text-align:right}.next-calendar[dir=rtl] .next-calendar-btn-prev-decade,.next-calendar[dir=rtl] .next-calendar-btn-prev-year{left:auto;right:16px;right:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar[dir=rtl] .next-calendar-btn-prev-month{left:auto;right:36px;right:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar[dir=rtl] .next-calendar-btn-next-month{right:auto;left:36px;left:var(--calendar-btn-arrow-single-offset-lr,36px)}.next-calendar[dir=rtl] .next-calendar-btn-next-decade,.next-calendar[dir=rtl] .next-calendar-btn-next-year{right:auto;left:16px;left:var(--calendar-btn-arrow-double-offset-lr,16px)}.next-calendar-fullscreen[dir=rtl] .next-calendar-th{text-align:left;padding-left:12px;padding-left:var(--calendar-fullscreen-table-head-padding-r,12px);padding-right:0}.next-calendar-fullscreen[dir=rtl] .next-calendar-date,.next-calendar-fullscreen[dir=rtl] .next-calendar-month{text-align:left}.next-calendar-range[dir=rtl] .next-calendar-body-left,.next-calendar-range[dir=rtl] .next-calendar-body-right{float:right}.next-calendar-range[dir=rtl] .next-calendar-body-left{padding-right:0;padding-left:8px}.next-calendar-range[dir=rtl] .next-calendar-body-right{padding-left:0;padding-right:8px}.next-calendar-table{width:100%;table-layout:fixed}.next-calendar-range .next-calendar-body-left,.next-calendar-range .next-calendar-body-right{float:left;width:50%}.next-calendar-range .next-calendar-body-left{padding-right:8px}.next-calendar-range .next-calendar-body-right{padding-left:8px}.next-calendar-range .next-calendar-body:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-calendar-symbol-prev:before{content:"\ea2c";content:var(--calendar-btn-arrow-content-prev,"")}.next-calendar-symbol-next:before{content:"\ea29";content:var(--calendar-btn-arrow-content-next,"")}.next-calendar-symbol-prev-super:before{content:"\ea2b";content:var(--calendar-btn-arrow-content-prev-super,"")}.next-calendar-symbol-next-super:before{content:"\ea28";content:var(--calendar-btn-arrow-content-next-super,"")}.next-card,.next-card:after,.next-card:before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-card[dir=rtl] .next-card-extra{left:0;right:auto}.next-card[dir=rtl] .next-card-title:before{right:0;left:auto}.next-card[dir=rtl] .next-card-subtitle{float:left;padding-right:8px;padding-right:var(--card-sub-title-padding-left,8px);padding-left:0}.next-card[dir=rtl] .next-card-head-show-bullet .next-card-title{padding-left:0;padding-right:8px;padding-right:var(--card-title-padding-left,8px)}.next-card,.next-card *,.next-card :after,.next-card :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-card{min-width:100px;border:1px solid #e3e4e6;border:var(--card-border-width,1px) var(--card-border-style,solid) var(--card-border-color,#e3e4e6);border-radius:4px;border-radius:var(--card-corner,4px);-webkit-box-shadow:none;-webkit-box-shadow:var(--card-shadow,none);box-shadow:none;box-shadow:var(--card-shadow,none);background:#fff;background:var(--card-background,#fff);overflow:hidden}.next-card-noborder{border:0}.next-card-head{background:#fff;background:var(--card-header-background,#fff);padding-left:16px;padding-left:var(--card-padding-lr,16px);padding-right:16px;padding-right:var(--card-padding-lr,16px)}.next-card-head-show-bullet .next-card-title{padding-left:8px;padding-left:var(--card-title-padding-left,8px)}.next-card-head-show-bullet .next-card-title:before{content:"";display:inline-block;height:16px;height:var(--card-title-bullet-height,16px);width:3px;width:var(--card-title-bullet-width,3px);background:#0064c8;background:var(--card-title-bullet-color,#0064c8);position:absolute;left:0;top:calc(50% - 8px);top:calc(50% - var(--card-title-bullet-height, 16px)/2)}.next-card-head-main{position:relative;margin-top:4px;margin-top:var(--card-head-main-margin-top,4px);margin-bottom:4px;margin-bottom:var(--card-head-main-margin-bottom,4px);height:48px;height:var(--card-head-main-height,48px);line-height:48px;line-height:var(--card-head-main-height,48px)}.next-card-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80%;height:100%;color:#333;color:var(--card-title-color,#333);font-size:14px;font-size:var(--card-title-font-size,14px);font-weight:500;font-weight:var(--card-title-font-weight,500)}.next-card-subtitle{font-size:12px;font-size:var(--card-sub-title-font-size,12px);color:#555;color:var(--card-sub-title-color,#555);padding-left:8px;padding-left:var(--card-sub-title-padding-left,8px)}.next-card-extra{position:absolute;right:0;top:0;height:100%;font-size:12px;font-size:var(--card-title-extra-font-size,12px);color:#0064c8;color:var(--card-title-extra-color,#0064c8)}.next-card-body{padding-bottom:16px;padding-bottom:var(--card-body-padding-bottom,16px);padding-left:16px;padding-left:var(--card-padding-lr,16px);padding-right:16px;padding-right:var(--card-padding-lr,16px)}.next-card-show-divider .next-card-head-main{border-bottom:1px solid transparent;border-bottom:var(--card-head-bottom-border-width,1px) var(--card-border-style,solid) var(--card-head-bottom-border-color,transparent)}.next-card-show-divider .next-card-body{padding-top:16px;padding-top:var(--card-body-show-divider-padding-top,16px)}.next-card-hide-divider .next-card-body{padding-top:0;padding-top:var(--card-body-hide-divider-padding-top,0)}.next-card—free{padding:0}.next-card-content{overflow:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;position:relative}.next-card-footer .next-icon{-webkit-transition:all .1s linear;transition:all .1s linear}.next-card-footer .next-icon.next-icon-arrow-down.expand{-webkit-transform-origin:50% 47%;-ms-transform-origin:50% 47%;transform-origin:50% 47%;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-card-header{background:#fff;background:var(--card-header-background,#fff);padding:0 16px;padding:0 var(--card-padding-lr,16px);margin-bottom:16px;margin-bottom:var(--card-body-show-divider-padding-top,16px);margin-top:16px;margin-top:var(--card-body-padding-bottom,16px)}.next-card-media,.next-card-media>*{display:block;background-size:cover;background-repeat:no-repeat;background-position:50%;-o-object-fit:cover;object-fit:cover;width:100%}.next-card-header-titles{overflow:hidden}.next-card-header-extra{float:right;text-align:right}.next-card-header-extra .next--btn{margin-left:12px;vertical-align:middle}.next-card-header-title{color:#333;color:var(--card-title-color,#333);font-size:14px;font-size:var(--card-title-font-size,14px);font-weight:500;font-weight:var(--card-title-font-weight,500);line-height:1.5}.next-card-header-subtitle{font-size:12px;font-size:var(--card-sub-title-font-size,12px);color:#555;color:var(--card-sub-title-color,#555)}.next-card-actions{display:block;padding:16px;padding:var(--card-body-show-divider-padding-top,16px) var(--card-padding-lr,16px) var(--card-body-padding-bottom,16px)}.next-card-actions .next-btn:not(:last-child){margin-right:12px;vertical-align:middle}.next-card-divider{border-style:none;width:100%;margin:0;position:relative;overflow:visible}.next-card-divider:before{content:"";display:block;border-bottom:1px solid transparent;border-bottom:var(--card-head-bottom-border-width,1px) var(--card-border-style,solid) var(--card-head-bottom-border-color,transparent)}.next-card-divider--inset{padding:0 16px;padding:0 var(--card-padding-lr,16px)}.next-card-content-container{margin-top:16px;margin-top:var(--card-body-show-divider-padding-top,16px);padding-bottom:16px;padding-bottom:var(--card-body-padding-bottom,16px);padding-left:16px;padding-left:var(--card-padding-lr,16px);padding-right:16px;padding-right:var(--card-padding-lr,16px);font-size:12px;font-size:var(--card-content-font-size,12px);line-height:1.5;line-height:var(--card-content-line-height,1.5);color:#555;color:var(--card-content-color,#555)}.next-cascader{display:inline-block;overflow:auto;border:1px solid #e3e4e6;border:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6);border-radius:2px;border-radius:var(--cascader-menu-border-radius,2px)}.next-cascader,.next-cascader *,.next-cascader :after,.next-cascader :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-cascader-inner:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-cascader-menu-wrapper{float:left;overflow:auto;width:auto;width:var(--cascader-menu-width,auto);min-width:100px;min-width:var(--cascader-menu-min-width,100px);height:192px;height:var(--cascader-menu-height,192px);overflow-x:hidden;overflow-y:auto}.next-cascader-menu-wrapper+.next-cascader-menu-wrapper{border-left:1px solid #e3e4e6;border-left:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader-menu{position:relative;padding:0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;min-width:auto;min-height:100%}.next-cascader-menu.next-has-right-border{border-right:1px solid #e3e4e6;border-right:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader-menu-item.next-expanded{color:#333;color:var(--cascader-menu-item-expanded-color,#333);background-color:#f7f9fa;background-color:var(--cascader-menu-item-expanded-background-color,#f7f9fa)}.next-cascader-menu-icon-right{position:absolute;top:0;right:10px;color:#333;color:var(--cascader-menu-icon-expand-color,#333)}.next-cascader-menu-icon-right:hover{color:#333;color:var(--cascader-menu-icon-hover-expand-color,#333)}.next-cascader-menu-icon-expand.next-icon .next-icon-remote,.next-cascader-menu-icon-expand.next-icon:before{width:8px;width:var(--cascader-menu-icon-expand-size,8px);font-size:8px;font-size:var(--cascader-menu-icon-expand-size,8px);line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-cascader-menu-icon-expand.next-icon{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-left:calc(-8px + var(--cascader-menu-icon-expand-size, 8px)/2);margin-right:-4px;margin-right:calc(-8px + var(--cascader-menu-icon-expand-size, 8px)/2)}.next-cascader-menu-icon-expand.next-icon:before{width:16px;font-size:16px}}.next-cascader-menu-icon-loading.next-icon .next-icon-remote,.next-cascader-menu-icon-loading.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-cascader-menu-item.next-expanded .next-cascader-menu-icon-right{color:#333;color:var(--cascader-menu-icon-hover-expand-color,#333)}.next-cascader-menu-item.next-expanded .next-cascader-menu-icon-loading{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-cascader-filtered-list{height:192px;padding:0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;overflow:auto}.next-cascader-filtered-list .next-menu-item-inner{overflow:visible}.next-cascader-filtered-item em{color:#0064c8;color:var(--color-brand1-6,#0064c8);font-style:normal}.next-cascader[dir=rtl] .next-cascader-menu-wrapper{float:right;border-left:none;border-right:1px solid #e3e4e6;border-right:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader[dir=rtl] .next-cascader-menu-wrapper:first-child{border-right:none}.next-cascader[dir=rtl] .next-cascader-menu.next-has-right-border{border-right:none;border-left:1px solid #e3e4e6;border-left:var(--cascader-menu-border-width,1px) var(--line-solid,solid) var(--cascader-menu-border-color,#e3e4e6)}.next-cascader[dir=rtl] .next-cascader-menu-icon-right{right:auto;left:10px}.next-cascader-select,.next-cascader-select *,.next-cascader-select-dropdown,.next-cascader-select :after,.next-cascader-select :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-cascader-select-dropdown{border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-cascader-select-dropdown *,.next-cascader-select-dropdown :after,.next-cascader-select-dropdown :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-cascader-select-dropdown .next-cascader{display:block;border:none;-webkit-box-shadow:none;box-shadow:none}.next-cascader-select-not-found{padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;overflow:auto;color:#888;color:var(--color-text1-2,#888)}.next-cascader-select-not-found .next-menu-item:hover{color:#888;color:var(--color-text1-2,#888);background:#fff;cursor:default}.next-checkbox-wrapper[dir=rtl]{margin-right:8px;margin-left:0}.next-checkbox-wrapper[dir=rtl]:first-child{margin-right:0}.next-checkbox-wrapper[dir=rtl]>.next-checkbox-label{margin-right:8px;margin-right:var(--checkbox-margin-left,8px);margin-left:0}.next-checkbox-wrapper{display:inline-block}.next-checkbox-wrapper,.next-checkbox-wrapper *,.next-checkbox-wrapper :after,.next-checkbox-wrapper :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-checkbox-wrapper .next-checkbox{display:inline-block;position:relative;line-height:1;vertical-align:middle}.next-checkbox-wrapper input[type=checkbox]{opacity:0;position:absolute;top:0;left:0;width:16px;width:var(--checkbox-size,16px);height:16px;height:var(--checkbox-size,16px);margin:0;cursor:pointer}.next-checkbox-wrapper .next-checkbox-inner{display:block;width:16px;width:var(--checkbox-size,16px);height:16px;height:var(--checkbox-size,16px);background:#fff;background:var(--checkbox-bg-color,#fff);border-radius:2px;border-radius:var(--checkbox-border-radius,2px);border:1px solid #577899;border:var(--checkbox-border-width,1px) solid var(--checkbox-border-color,#577899);-webkit-transition:all .1s linear;transition:all .1s linear;text-align:left;-webkit-box-shadow:none;-webkit-box-shadow:var(--checkbox-shadow,none);box-shadow:none;box-shadow:var(--checkbox-shadow,none)}.next-checkbox-wrapper .next-checkbox-inner>.next-icon{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);position:absolute;top:0;opacity:0;line-height:16px;line-height:var(--checkbox-size,16px);-webkit-transition:all .1s linear;transition:all .1s linear;color:#fff;color:var(--checkbox-checked-circle-color,#fff);left:2px;left:calc(var(--checkbox-size, 16px)/2 - var(--checkbox-circle-size, 12px)/2);margin-top:1px;margin-left:0}.next-checkbox-wrapper .next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper .next-checkbox-inner>.next-icon:before{width:12px;width:var(--checkbox-circle-size,12px);font-size:12px;font-size:var(--checkbox-circle-size,12px);line-height:inherit}.next-checkbox-wrapper .next-checkbox-inner>.next-icon:before{vertical-align:top;margin-top:0}.next-checkbox-wrapper .next-checkbox-inner>.next-checkbox-select-icon:before{content:"\ea1e";content:var(--checkbox-select-icon-content,"")}.next-checkbox-wrapper .next-checkbox-inner>.next-checkbox-semi-select-icon:before{content:"\e8ae";content:var(--checkbox-semi-select-icon-content,"")}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080);background-color:#0064c8;background-color:var(--checkbox-checked-bg-color,#0064c8)}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner:hover,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner:hover{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080)}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner>.next-icon,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner>.next-icon{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);margin-left:0}.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.checked.focused>.next-checkbox>.next-checkbox-inner>.next-icon:before,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.checked>.next-checkbox>.next-checkbox-inner>.next-icon:before{width:12px;width:var(--checkbox-circle-size,12px);font-size:12px;font-size:var(--checkbox-circle-size,12px);line-height:inherit}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080);background-color:#0064c8;background-color:var(--checkbox-checked-bg-color,#0064c8)}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner:hover,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner.hovered,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner:hover{border-color:#004080;border-color:var(--checkbox-checked-border-color,#004080)}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner>.next-icon,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner>.next-icon{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1);margin-left:0}.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.indeterminate.focused>.next-checkbox>.next-checkbox-inner>.next-icon:before,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner>.next-icon .next-icon-remote,.next-checkbox-wrapper.indeterminate>.next-checkbox>.next-checkbox-inner>.next-icon:before{width:12px;width:var(--checkbox-circle-size,12px);font-size:12px;font-size:var(--checkbox-circle-size,12px);line-height:inherit}.next-checkbox-wrapper.focused>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper.hovered>.next-checkbox>.next-checkbox-inner,.next-checkbox-wrapper:not(.disabled):hover>.next-checkbox>.next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-hovered-border-color,#004080);background-color:transparent;background-color:var(--checkbox-hovered-bg-color,transparent)}.next-checkbox-wrapper.focused .next-checkbox-label,.next-checkbox-wrapper.hovered .next-checkbox-label,.next-checkbox-wrapper:not(.disabled):hover .next-checkbox-label{cursor:pointer}.next-checkbox-wrapper.checked:not(.disabled).hovered>.next-checkbox .next-checkbox-inner,.next-checkbox-wrapper.checked:not(.disabled):hover>.next-checkbox .next-checkbox-inner,.next-checkbox-wrapper.indeterminate:not(.disabled).hovered>.next-checkbox .next-checkbox-inner,.next-checkbox-wrapper.indeterminate:not(.disabled):hover>.next-checkbox .next-checkbox-inner{border-color:#004080;border-color:var(--checkbox-checked-hovered-border-color,#004080);background-color:#0064c8;background-color:var(--checkbox-checked-hovered-bg-color,#0064c8)}.next-checkbox-wrapper.checked:not(.disabled).hovered>.next-checkbox .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.checked:not(.disabled):hover>.next-checkbox .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.indeterminate:not(.disabled).hovered>.next-checkbox .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.indeterminate:not(.disabled):hover>.next-checkbox .next-checkbox-inner>.next-icon{color:#fff;color:var(--checkbox-checked-hovered-circle-color,#fff);opacity:1}.next-checkbox-wrapper.disabled input[type=checkbox]{cursor:not-allowed}.next-checkbox-wrapper.disabled.checked .next-checkbox-inner,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner,.next-checkbox-wrapper.disabled .next-checkbox-inner{border-color:#c0c6cc;border-color:var(--checkbox-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--checkbox-disabled-bg-color,#f7f9fa)}.next-checkbox-wrapper.disabled.checked .next-checkbox-inner.hovered,.next-checkbox-wrapper.disabled.checked .next-checkbox-inner:hover,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner.hovered,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner:hover{border-color:#c0c6cc;border-color:var(--checkbox-disabled-border-color,#c0c6cc)}.next-checkbox-wrapper.disabled.checked .next-checkbox-inner>.next-icon,.next-checkbox-wrapper.disabled.indeterminate .next-checkbox-inner>.next-icon{color:#555;color:var(--checkbox-disabled-circle-color,#555);opacity:1}.next-checkbox-wrapper.disabled.checked.focused .next-checkbox-inner{border-color:#c0c6cc;border-color:var(--checkbox-disabled-border-color,#c0c6cc);background:#f7f9fa;background:var(--checkbox-disabled-bg-color,#f7f9fa)}.next-checkbox-wrapper.disabled.checked.focused .next-checkbox-inner>.next-icon{color:#555;color:var(--checkbox-disabled-circle-color,#555);opacity:1}.next-checkbox-wrapper.disabled .next-checkbox-label{color:#b3b3b3;color:var(--checkbox-disabled-label-color,#b3b3b3);cursor:not-allowed}.next-checkbox-group .next-checkbox-wrapper{display:inline-block;margin-right:12px}.next-checkbox-group .next-checkbox-wrapper:last-child{margin-right:0}.next-checkbox-group-ver .next-checkbox-wrapper{display:block;margin-left:0;margin-right:0;margin-bottom:8px}.next-checkbox-label{font-size:12px;font-size:var(--checkbox-font-size,12px);color:#333;color:var(--checkbox-label-color,#333);vertical-align:middle;margin:0 0 0 8px;margin-left:var(--checkbox-margin-left,8px);margin-right:8px;margin-right:var(--checkbox-margin-left,8px);line-height:1}.next-collapse[dir=rtl] .next-collapse-panel-title{padding:16px 36px 16px 0;padding:var(--collapse-title-padding-tb,16px) 36px var(--collapse-title-padding-tb,16px) 0}.next-collapse[dir=rtl] .next-collapse-panel-icon{left:inherit;right:16px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);margin-left:0;margin-right:0}.next-collapse[dir=rtl] .next-collapse-panel-icon .next-icon-remote,.next-collapse[dir=rtl] .next-collapse-panel-icon:before{width:12px;font-size:12px;line-height:inherit}.next-collapse{border:1px solid #e3e4e6;border:var(--collapse-border-width,1px) solid var(--collapse-border-color,#e3e4e6);border-radius:2px;border-radius:var(--collapse-border-corner,2px)}.next-collapse,.next-collapse *,.next-collapse :after,.next-collapse :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-collapse:focus,.next-collapse :focus{outline:0}.next-collapse-panel:not(:first-child){border-top:1px solid #e3e4e6;border-top:var(--collapse-title-border-width,1px) solid var(--collapse-panel-border-color,#e3e4e6)}.next-collapse .next-collapse-panel-icon{position:absolute;color:#333;color:var(--collapse-icon-color,#333);-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;left:16px;margin-top:-2px;margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon .next-icon-remote,.next-collapse .next-collapse-panel-icon:before{width:12px;font-size:12px;line-height:inherit}.next-collapse-panel-title{position:relative;line-height:20px;line-height:var(--collapse-title-height,20px);background:#f7f9fa;background:var(--collapse-title-bg-color,#f7f9fa);font-size:12px;font-size:var(--collapse-title-font-size,12px);font-weight:400;font-weight:var(--collapse-title-font-weight,normal);color:#333;color:var(--collapse-title-font-color,#333);cursor:pointer;padding:16px 0 16px 36px;padding:var(--collapse-title-padding-tb,16px) 0 var(--collapse-title-padding-tb,16px) 36px;-webkit-transition:background .1s linear;transition:background .1s linear}.next-collapse-panel-title:hover{background:#eff3f8;background:var(--collapse-title-hover-bg-color,#eff3f8);color:#333;color:var(--collapse-title-hover-font-color,#333);font-weight:400;font-weight:var(--collapse-title-hover-font-weight,normal)}.next-collapse-panel-title:hover .next-collapse-panel-icon{color:#333;color:var(--collapse-icon-hover-color,#333)}.next-collapse-panel-content{height:0;padding:0 16px;padding:0 var(--collapse-content-padding-x,16px);background:#fff;background:var(--collapse-content-bg-color,#fff);font-size:12px;font-size:var(--collapse-content-font-size,12px);color:#333;color:var(--collapse-content-color,#333);-webkit-transition:all .3s ease;transition:all .3s ease;opacity:0}.next-collapse-panel-expanded>.next-collapse-panel-content{display:block;padding:16px;padding:var(--collapse-content-padding-y,16px) var(--collapse-content-padding-x,16px);height:auto;opacity:1}.next-collapse .next-collapse-unfold-icon:before{content:"";content:var(--collapse-unfold-icon-content,"")}.next-collapse-panel-hidden>.next-collapse-panel-content{overflow:hidden}.next-collapse .next-collapse-panel-icon:before{content:"\e98e";content:var(--collapse-fold-icon-content,"")}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);margin-left:0;margin-right:0}.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded .next-icon-remote,.next-collapse .next-collapse-panel-icon.next-collapse-panel-icon-expanded:before{width:12px;font-size:12px;line-height:inherit}.next-collapse-disabled,.next-collapse-panel-disabled:not(:first-child){border-color:#e3e4e6;border-color:var(--collapse-disabled-border-color,#e3e4e6)}.next-collapse-panel-disabled>.next-collapse-panel-title{cursor:not-allowed;background:#f7f9fa;background:var(--collapse-title-disabled-bg-color,#f7f9fa)}.next-collapse-panel-disabled .next-collapse-panel-icon,.next-collapse-panel-disabled>.next-collapse-panel-title{color:#b3b3b3;color:var(--collapse-title-font-disabled-color,#b3b3b3)}.next-collapse-panel-disabled .next-collapse-panel-title:hover{font-weight:400;font-weight:var(--collapse-title-font-weight,normal)}.next-collapse-panel-disabled .next-collapse-panel-title:hover .next-collapse-panel-icon,.next-collapse-panel-disabled:hover{color:#b3b3b3;color:var(--collapse-title-font-disabled-color,#b3b3b3)}.next-collapse-panel-disabled:hover{background:#f7f9fa;background:var(--collapse-title-disabled-bg-color,#f7f9fa)}.next-time-picker-menu{float:left;text-align:center}.next-time-picker-menu:not(:last-child){border-right:1px solid #c0c6cc;border-right:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-time-picker-menu-title{cursor:default;height:36px;height:var(--time-picker-menu-title-height,36px);line-height:36px;line-height:var(--time-picker-menu-title-height,36px);font-size:12px;font-size:var(--time-picker-menu-title-font-size,12px);font-weight:400;font-weight:var(--time-pikcer-menu-title-font-weight,normal);color:#333;color:var(--time-picker-menu-title-color,#333);background:#fff;background:var(--time-picker-menu-title-background,#fff)}.next-time-picker-menu ul{position:relative;overflow-y:auto;list-style:none;margin:0;padding:0;font-size:12px;font-size:var(--time-picker-menu-item-font-size,12px);height:224px;height:calc(var(--time-picker-menu-item-height, 32px)*7)}.next-time-picker-menu-item{cursor:pointer;height:32px;height:var(--time-picker-menu-item-height,32px);line-height:32px;line-height:var(--time-picker-menu-item-height,32px);-webkit-transition:background .1s linear;transition:background .1s linear;color:#333;color:var(--time-picker-menu-item-color,#333);background:#fff;background:var(--time-picker-menu-item-background,#fff);outline:none}.next-time-picker-menu-item:hover{color:#333;color:var(--time-picker-menu-item-color-hover,#333);background:#f7f9fa;background:var(--time-picker-menu-item-background-hover,#f7f9fa)}.next-time-picker-menu-item.next-selected{font-weight:400;font-weight:var(--time-picker-menu-item-font-weight-selected,normal);color:#fff;color:var(--time-picker-menu-item-color-selected,#fff);background:#0064c8;background:var(--time-picker-menu-item-background-selected,#0064c8)}.next-time-picker-menu-item.next-disabled{cursor:not-allowed;color:#555;color:var(--time-picker-menu-item-color-disabled,#555);background:#fff;background:var(--time-picker-menu-item-background-disabled,#fff)}.next-time-picker-panel,.next-time-picker-panel *,.next-time-picker-panel :after,.next-time-picker-panel :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker-panel:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-time-picker-panel-header{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) var(--line-solid,solid) var(--popup-local-border-color,#c0c6cc)}.next-time-picker-panel-input.next-input{width:100%;padding:6px;border-color:transparent;vertical-align:middle}.next-time-picker-panel-col-3 .next-time-picker-menu{width:33.33333%}.next-time-picker-panel-col-2 .next-time-picker-menu{width:50%}.next-time-picker-panel-col-1 .next-time-picker-menu{width:100%}.next-time-picker-body[dir=rtl] .next-time-picker-menu{float:right}.next-time-picker-body[dir=rtl] .next-time-picker-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-time-picker{display:inline-block;width:200px}.next-time-picker,.next-time-picker *,.next-time-picker :after,.next-time-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker-trigger .next-input{width:100%}.next-time-picker-body{overflow:hidden;width:200px;width:var(--time-picker-panel-width,200px);border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);background:#fff;background:var(--time-picker-panel-background,#fff);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-time-picker-symbol-clock-icon:before{content:"\ea2e";content:var(--time-picker-clock-icon,"")}.next-range-picker-panel-input-separator,.next-range-picker-trigger-separator{cursor:default;display:inline-block;text-align:center;color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);width:16px;font-size:12px;font-size:var(--font-size-caption,12px);vertical-align:middle}.next-date-picker,.next-month-picker,.next-week-picker,.next-year-picker{display:inline-block;width:200px}.next-date-picker-input,.next-month-picker-input,.next-week-picker-input,.next-year-picker-input{width:100%}.next-date-picker-body,.next-month-picker-body,.next-week-picker-body,.next-year-picker-body{width:288px}.next-date-picker-panel-input.next-input,.next-month-picker-panel-input.next-input,.next-week-picker-panel-input.next-input,.next-year-picker-panel-input.next-input{width:100%;background:transparent}.next-date-picker-body.next-date-picker-body-show-time .next-date-picker-panel-input.next-input{width:49%}.next-date-picker-body.next-date-picker-body-show-time .next-date-picker-panel-input.next-input:first-child{margin-right:2%}.next-range-picker{display:inline-block;width:336px}.next-range-picker-input{width:100%}.next-range-picker-trigger{border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-bg-color,#fff)}.next-range-picker-trigger:hover{border-color:#c0c6cc;border-color:var(--input-hover-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-hover-bg-color,#fff)}.next-range-picker-trigger.next-error{border-color:#c80000;border-color:var(--input-feedback-error-border-color,#c80000)}.next-range-picker-trigger-input.next-input{height:auto;width:calc(50% - 8px)}.next-range-picker.next-disabled .next-range-picker-trigger{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);cursor:not-allowed}.next-range-picker.next-disabled .next-range-picker-trigger,.next-range-picker.next-disabled .next-range-picker-trigger:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-range-picker.next-large .next-range-picker-panel-input,.next-range-picker.next-large .next-range-picker-trigger{border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-range-picker.next-medium .next-range-picker-panel-input,.next-range-picker.next-medium .next-range-picker-trigger{border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-range-picker.next-small .next-range-picker-panel-input,.next-range-picker.next-small .next-range-picker-trigger{border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-range-picker-body{width:600px}.next-range-picker-panel-input-end-date.next-input,.next-range-picker-panel-input-start-date.next-input{width:calc(50% - 8px)}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-end-date,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-end-time,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-start-date,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-start-time{width:calc(25% - 8px)}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-start-date{margin-right:8px}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-input-end-time{margin-left:8px}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-end,.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-start{width:50%;float:left}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-start{border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-range-picker-body.next-range-picker-body-show-time .next-range-picker-panel-time-end{border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-date-picker-body[dir=rtl] .next-date-picker-panel-footer{text-align:left}.next-date-picker-body[dir=rtl] .next-date-picker-panel-footer>.next-btn:not(:last-child){margin-right:0;margin-left:16px}.next-date-picker-body[dir=rtl].next-date-picker-body-show-time .next-date-picker-panel-input.next-input:first-child{margin-left:2%;margin-right:0}.next-date-picker-body[dir=rtl].next-date-picker-body-show-time .next-time-picker-menu{float:right}.next-date-picker-body[dir=rtl].next-date-picker-body-show-time .next-time-picker-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-range-picker-body[dir=rtl] .next-range-picker-panel-input{text-align:right}.next-range-picker-body[dir=rtl] .next-date-picker-panel-footer{text-align:left}.next-range-picker-body[dir=rtl] .next-date-picker-panel-footer>.next-btn:not(:last-child){margin-right:0;margin-left:16px}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-input-start-date{margin-right:0;margin-left:8px}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-input-end-time{margin-left:0;margin-right:8px}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-end,.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-start{float:right}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-start{border-right:none;border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-range-picker-panel-time-end{border-left:none;border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) var(--line-solid,solid) var(--date-picker-panel-time-panel-separator-color,#c0c6cc)}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-time-picker-menu{float:right}.next-range-picker-body[dir=rtl].next-range-picker-body-show-time .next-time-picker-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--time-picker-menu-border-width,1px) var(--line-solid,solid) var(--time-picker-menu-border-color,#c0c6cc)}.next-date-picker,.next-date-picker *,.next-date-picker :after,.next-date-picker :before,.next-month-picker,.next-month-picker *,.next-month-picker :after,.next-month-picker :before,.next-range-picker,.next-range-picker *,.next-range-picker :after,.next-range-picker :before,.next-week-picker,.next-week-picker *,.next-week-picker :after,.next-week-picker :before,.next-year-picker,.next-year-picker *,.next-year-picker :after,.next-year-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-date-picker-body,.next-month-picker-body,.next-range-picker-body,.next-week-picker-body,.next-year-picker-body{border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));background:#fff;background:var(--date-picker-panel-background,#fff)}.next-date-picker-panel-header,.next-month-picker-panel-header,.next-range-picker-panel-header,.next-week-picker-panel-header,.next-year-picker-panel-header{padding:6px;text-align:center}.next-date-picker-panel-time,.next-month-picker-panel-time,.next-range-picker-panel-time,.next-week-picker-panel-time,.next-year-picker-panel-time{border-top:1px solid #c0c6cc;border-top:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc)}.next-date-picker-panel-footer,.next-month-picker-panel-footer,.next-range-picker-panel-footer,.next-week-picker-panel-footer,.next-year-picker-panel-footer{text-align:right;padding:8px 16px;padding:var(--date-picker-panel-footer-padding-tb,8px) var(--date-picker-panel-footer-padding-lr,16px);border-top:1px solid #c0c6cc;border-top:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc)}.next-date-picker-panel-footer>.next-btn:not(:last-child),.next-date-picker-panel-tools>.next-btn:not(:last-child),.next-month-picker-panel-footer>.next-btn:not(:last-child),.next-month-picker-panel-tools>.next-btn:not(:last-child),.next-range-picker-panel-footer>.next-btn:not(:last-child),.next-range-picker-panel-tools>.next-btn:not(:last-child),.next-week-picker-panel-footer>.next-btn:not(:last-child),.next-week-picker-panel-tools>.next-btn:not(:last-child),.next-year-picker-panel-footer>.next-btn:not(:last-child),.next-year-picker-panel-tools>.next-btn:not(:last-child){margin-right:16px}.next-date-picker-panel-tools,.next-month-picker-panel-tools,.next-range-picker-panel-tools,.next-week-picker-panel-tools,.next-year-picker-panel-tools{float:left}.next-date-picker .next-calendar-panel-header,.next-month-picker .next-calendar-panel-header,.next-range-picker .next-calendar-panel-header,.next-week-picker .next-calendar-panel-header,.next-year-picker .next-calendar-panel-header{margin-left:-1px;margin-left:calc(0px - var(--popup-local-border-width, 1px));margin-right:-1px;margin-right:calc(0px - var(--popup-local-border-width, 1px))}.next-date-picker .next-input input,.next-month-picker .next-input input,.next-range-picker .next-input input,.next-week-picker .next-input input,.next-year-picker .next-input input{vertical-align:baseline}.next-date-picker-symbol-calendar-icon:before,.next-month-picker-symbol-calendar-icon:before,.next-range-picker-symbol-calendar-icon:before,.next-week-picker-symbol-calendar-icon:before,.next-year-picker-symbol-calendar-icon:before{content:"\ea1f";content:var(--date-picker-calendar-icon,"")}.next-range-picker-panel-body .next-calendar{display:inline-block;width:50%}.next-message{position:relative;display:block;vertical-align:baseline;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.next-message,.next-message *,.next-message :after,.next-message :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-message:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-message .next-message-close{color:#333;color:var(--message-close-icon-color,#333);font-size:0;position:absolute;cursor:pointer}.next-message .next-message-close .next-icon-close{width:12px;height:12px;line-height:1em}.next-message .next-message-close .next-icon-close:before{width:12px;height:12px;font-size:12px;line-height:1em}.next-message .next-message-close:hover{color:#333;color:var(--message-hover-close-icon-color,#333)}.next-message.next-message-success.next-inline{background-color:#d8f5d8;background-color:var(--message-success-color-bg-inline,#d8f5d8);border-color:transparent;border-color:var(--message-success-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-success.next-inline .next-message-title{color:#333;color:var(--message-success-color-title-inline,#333)}.next-message.next-message-success.next-inline .next-message-content{color:#333;color:var(--message-success-color-content-inline,#333)}.next-message.next-message-success.next-inline .next-message-symbol{color:#00a700;color:var(--message-success-color-icon-inline,#00a700)}.next-message.next-message-success.next-inline .next-message-symbol-icon:before{content:"\ea23";content:var(--message-success-icon-content,"")}.next-message.next-message-success.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-success.next-addon .next-message-title{color:#111;color:var(--message-success-color-title-addon,#111)}.next-message.next-message-success.next-addon .next-message-content{color:#555;color:var(--message-success-color-content-addon,#555)}.next-message.next-message-success.next-addon .next-message-symbol{color:#32c832;color:var(--message-success-color-icon-addon,#32c832)}.next-message.next-message-success.next-addon .next-message-symbol-icon:before{content:"\ea23";content:var(--message-success-icon-content,"")}.next-message.next-message-success.next-toast{background-color:#fff;background-color:var(--message-success-color-bg-toast,#fff);border-color:#c0c6cc;border-color:var(--message-success-color-border-toast,#c0c6cc);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-success.next-toast .next-message-title{color:#333;color:var(--message-success-color-title-toast,#333)}.next-message.next-message-success.next-toast .next-message-content{color:#333;color:var(--message-success-color-content-toast,#333)}.next-message.next-message-success.next-toast .next-message-symbol{color:#00a700;color:var(--message-success-color-icon-toast,#00a700)}.next-message.next-message-success.next-toast .next-message-symbol-icon:before{content:"\ea23";content:var(--message-success-icon-content,"")}.next-message.next-message-warning.next-inline{background-color:#fff7d1;background-color:var(--message-warning-color-bg-inline,#fff7d1);border-color:transparent;border-color:var(--message-warning-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-warning.next-inline .next-message-title{color:#333;color:var(--message-warning-color-title-inline,#333)}.next-message.next-message-warning.next-inline .next-message-content{color:#333;color:var(--message-warning-color-content-inline,#333)}.next-message.next-message-warning.next-inline .next-message-symbol{color:#fac800;color:var(--message-warning-color-icon-inline,#fac800)}.next-message.next-message-warning.next-inline .next-message-symbol-icon:before{content:"\ea21";content:var(--message-warning-icon-content,"")}.next-message.next-message-warning.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-warning.next-addon .next-message-title{color:#111;color:var(--message-warning-color-title-addon,#111)}.next-message.next-message-warning.next-addon .next-message-content{color:#555;color:var(--message-warning-color-content-addon,#555)}.next-message.next-message-warning.next-addon .next-message-symbol{color:#ffde5c;color:var(--message-warning-color-icon-addon,#ffde5c)}.next-message.next-message-warning.next-addon .next-message-symbol-icon:before{content:"\ea21";content:var(--message-warning-icon-content,"")}.next-message.next-message-warning.next-toast{background-color:#fff;background-color:var(--message-warning-color-bg-toast,#fff);border-color:#c0c6cc;border-color:var(--message-warning-color-border-toast,#c0c6cc);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-warning.next-toast .next-message-title{color:#333;color:var(--message-warning-color-title-toast,#333)}.next-message.next-message-warning.next-toast .next-message-content{color:#333;color:var(--message-warning-color-content-toast,#333)}.next-message.next-message-warning.next-toast .next-message-symbol{color:#fac800;color:var(--message-warning-color-icon-toast,#fac800)}.next-message.next-message-warning.next-toast .next-message-symbol-icon:before{content:"\ea21";content:var(--message-warning-icon-content,"")}.next-message.next-message-error.next-inline{background-color:#f8efef;background-color:var(--message-error-color-bg-inline,#f8efef);border-color:transparent;border-color:var(--message-error-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-error.next-inline .next-message-title{color:#333;color:var(--message-error-color-title-inline,#333)}.next-message.next-message-error.next-inline .next-message-content{color:#333;color:var(--message-error-color-content-inline,#333)}.next-message.next-message-error.next-inline .next-message-symbol{color:#c80000;color:var(--message-error-color-icon-inline,#c80000)}.next-message.next-message-error.next-inline .next-message-symbol-icon:before{content:"\ea21";content:var(--message-error-icon-content,"")}.next-message.next-message-error.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-error.next-addon .next-message-title{color:#111;color:var(--message-error-color-title-addon,#111)}.next-message.next-message-error.next-addon .next-message-content{color:#555;color:var(--message-error-color-content-addon,#555)}.next-message.next-message-error.next-addon .next-message-symbol{color:#c80000;color:var(--message-error-color-icon-addon,#c80000)}.next-message.next-message-error.next-addon .next-message-symbol-icon:before{content:"\ea21";content:var(--message-error-icon-content,"")}.next-message.next-message-error.next-toast{background-color:#fff;background-color:var(--message-error-color-bg-toast,#fff);border-color:#c0c6cc;border-color:var(--message-error-color-border-toast,#c0c6cc);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-error.next-toast .next-message-title{color:#333;color:var(--message-error-color-title-toast,#333)}.next-message.next-message-error.next-toast .next-message-content{color:#333;color:var(--message-error-color-content-toast,#333)}.next-message.next-message-error.next-toast .next-message-symbol{color:#c80000;color:var(--message-error-color-icon-toast,#c80000)}.next-message.next-message-error.next-toast .next-message-symbol-icon:before{content:"\ea21";content:var(--message-error-icon-content,"")}.next-message.next-message-notice.next-inline{background-color:#eff3f8;background-color:var(--message-notice-color-bg-inline,#eff3f8);border-color:transparent;border-color:var(--message-notice-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-notice.next-inline .next-message-title{color:#333;color:var(--message-notice-color-title-inline,#333)}.next-message.next-message-notice.next-inline .next-message-content{color:#333;color:var(--message-notice-color-content-inline,#333)}.next-message.next-message-notice.next-inline .next-message-symbol{color:#0064c8;color:var(--message-notice-color-icon-inline,#0064c8)}.next-message.next-message-notice.next-inline .next-message-symbol-icon:before{content:"\ea2a";content:var(--message-notice-icon-content,"")}.next-message.next-message-notice.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-notice.next-addon .next-message-title{color:#111;color:var(--message-notice-color-title-addon,#111)}.next-message.next-message-notice.next-addon .next-message-content{color:#555;color:var(--message-notice-color-content-addon,#555)}.next-message.next-message-notice.next-addon .next-message-symbol{color:#0070cc;color:var(--message-notice-color-icon-addon,#0070cc)}.next-message.next-message-notice.next-addon .next-message-symbol-icon:before{content:"\ea2a";content:var(--message-notice-icon-content,"")}.next-message.next-message-notice.next-toast{background-color:#fff;background-color:var(--message-notice-color-bg-toast,#fff);border-color:#fff;border-color:var(--message-notice-color-border-toast,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-notice.next-toast .next-message-title{color:#333;color:var(--message-notice-color-title-toast,#333)}.next-message.next-message-notice.next-toast .next-message-content{color:#666;color:var(--message-notice-color-content-toast,#666)}.next-message.next-message-notice.next-toast .next-message-symbol{color:#0070cc;color:var(--message-notice-color-icon-toast,#0070cc)}.next-message.next-message-notice.next-toast .next-message-symbol-icon:before{content:"\ea2a";content:var(--message-notice-icon-content,"")}.next-message.next-message-help.next-inline{background-color:#f8f8f9;background-color:var(--message-help-color-bg-inline,#f8f8f9);border-color:transparent;border-color:var(--message-help-color-border-inline,transparent);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-help.next-inline .next-message-title{color:#333;color:var(--message-help-color-title-inline,#333)}.next-message.next-message-help.next-inline .next-message-content{color:#333;color:var(--message-help-color-content-inline,#333)}.next-message.next-message-help.next-inline .next-message-symbol{color:#333;color:var(--message-help-color-icon-inline,#333)}.next-message.next-message-help.next-inline .next-message-symbol-icon:before{content:"\ea2d";content:var(--message-help-icon-content,"")}.next-message.next-message-help.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-help.next-addon .next-message-title{color:#111;color:var(--message-help-color-title-addon,#111)}.next-message.next-message-help.next-addon .next-message-content{color:#555;color:var(--message-help-color-content-addon,#555)}.next-message.next-message-help.next-addon .next-message-symbol{color:#333;color:var(--message-help-color-icon-addon,#333)}.next-message.next-message-help.next-addon .next-message-symbol-icon:before{content:"\ea2d";content:var(--message-help-icon-content,"")}.next-message.next-message-help.next-toast{background-color:#fff;background-color:var(--message-help-color-bg-toast,#fff);border-color:#fff;border-color:var(--message-help-color-border-toast,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-help.next-toast .next-message-title{color:#333;color:var(--message-help-color-title-toast,#333)}.next-message.next-message-help.next-toast .next-message-content{color:#555;color:var(--message-help-color-content-toast,#555)}.next-message.next-message-help.next-toast .next-message-symbol{color:#888;color:var(--message-help-color-icon-toast,#888)}.next-message.next-message-help.next-toast .next-message-symbol-icon:before{content:"\ea2d";content:var(--message-help-icon-content,"")}.next-message.next-message-loading.next-inline{background-color:#fff;background-color:var(--message-loading-color-bg-inline,#fff);border-color:#e3e4e6;border-color:var(--message-loading-color-border-inline,#e3e4e6);-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style,solid)}.next-message.next-message-loading.next-inline .next-message-title{color:#333;color:var(--message-loading-color-title-inline,#333)}.next-message.next-message-loading.next-inline .next-message-content{color:#333;color:var(--message-loading-color-content-inline,#333)}.next-message.next-message-loading.next-inline .next-message-symbol{color:#333;color:var(--message-loading-color-icon-inline,#333)}.next-message.next-message-loading.next-inline .next-message-symbol-icon:before{content:"\ea26";content:var(--message-loading-icon-content,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-message.next-message-loading.next-addon{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-loading.next-addon .next-message-title{color:#111;color:var(--message-loading-color-title-addon,#111)}.next-message.next-message-loading.next-addon .next-message-content{color:#555;color:var(--message-loading-color-content-addon,#555)}.next-message.next-message-loading.next-addon .next-message-symbol{color:#1c1c1c;color:var(--message-loading-color-icon-addon,#1c1c1c)}.next-message.next-message-loading.next-addon .next-message-symbol-icon:before{content:"\ea26";content:var(--message-loading-icon-content,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-message.next-message-loading.next-toast{background-color:#fff;background-color:var(--message-loading-color-bg-toast,#fff);border-color:#fff;border-color:var(--message-loading-color-border-toast,#fff);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);border-style:solid;border-style:var(--message-border-style-toast,solid)}.next-message.next-message-loading.next-toast .next-message-title{color:#333;color:var(--message-loading-color-title-toast,#333)}.next-message.next-message-loading.next-toast .next-message-content{color:#555;color:var(--message-loading-color-content-toast,#555)}.next-message.next-message-loading.next-toast .next-message-symbol{color:#888;color:var(--message-loading-color-icon-toast,#888)}.next-message.next-message-loading.next-toast .next-message-symbol-icon:before{content:"\ea26";content:var(--message-loading-icon-content,"");-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.next-message.next-medium{border-width:1px;border-width:var(--message-size-m-border-width,1px);padding:12px;padding:var(--message-size-m-padding,12px)}.next-message.next-medium .next-message-symbol{float:left;line-height:12px;line-height:var(--message-size-m-icon,12px)}.next-message.next-medium .next-message-symbol .next-icon-remote,.next-message.next-medium .next-message-symbol:before{width:12px;width:var(--message-size-m-icon,12px);font-size:12px;font-size:var(--message-size-m-icon,12px);line-height:inherit}.next-message.next-medium .next-message-title{font-size:12px;font-size:var(--message-size-m-title-font,12px);line-height:12px;line-height:var(--message-size-m-title-font,12px)}.next-message.next-medium .next-message-content,.next-message.next-medium .next-message-title{padding:0 4px 0 16px;padding:0 var(--message-size-m-title-content-padding-right,4px) 0 calc(var(--message-size-m-title-content-padding-left, 4px) + var(--message-size-m-icon, 12px))}.next-message.next-medium .next-message-content{margin-top:8px;margin-top:var(--message-size-m-content-margin-top,8px);font-size:12px;font-size:var(--message-size-m-content-font,12px);line-height:12px;line-height:var(--message-size-m-content-font,12px)}.next-message.next-medium .next-message-symbol+.next-message-content{margin-top:0}.next-message.next-medium.next-only-content .next-message-content,.next-message.next-medium.next-title-content .next-message-title{line-height:12px;line-height:var(--message-size-m-icon,12px)}.next-message.next-medium .next-message-close{top:12px;top:var(--message-size-m-close-top,12px);right:12px;right:var(--message-size-m-close-right,12px)}.next-message.next-medium.next-inline{border-radius:2px;border-radius:var(--message-size-m-border-radius,2px)}.next-message.next-medium.next-toast{border-radius:2px;border-radius:var(--message-size-m-border-radius-toast,2px)}.next-message.next-large{border-width:1px;border-width:var(--message-size-l-border-width,1px);padding:16px;padding:var(--message-size-l-padding,16px);line-height:18px}.next-message.next-large .next-message-symbol{float:left;line-height:16px;line-height:var(--message-size-l-icon,16px)}.next-message.next-large .next-message-symbol .next-icon-remote,.next-message.next-large .next-message-symbol:before{width:16px;width:var(--message-size-l-icon,16px);font-size:16px;font-size:var(--message-size-l-icon,16px);line-height:inherit}.next-message.next-large .next-message-title{font-size:14px;font-size:var(--message-size-l-title-font,14px);line-height:14px;line-height:var(--message-size-l-title-font,14px)}.next-message.next-large .next-message-content,.next-message.next-large .next-message-title{padding:0 16px 0 24px;padding:0 var(--message-size-l-title-content-padding-right,16px) 0 calc(var(--message-size-l-title-content-padding-left, 8px) + var(--message-size-l-icon, 16px))}.next-message.next-large .next-message-content{margin-top:8px;margin-top:var(--message-size-l-content-margin-top,8px);font-size:12px;font-size:var(--message-size-l-content-font,12px);line-height:12px;line-height:var(--message-size-l-content-font,12px)}.next-message.next-large .next-message-symbol+.next-message-content{margin-top:0}.next-message.next-large.next-only-content .next-message-content,.next-message.next-large.next-title-content .next-message-title{line-height:16px;line-height:var(--message-size-l-icon,16px)}.next-message.next-large .next-message-close{top:16px;top:var(--message-size-l-close-top,16px);right:16px;right:var(--message-size-l-close-right,16px)}.next-message.next-large.next-inline{border-radius:2px;border-radius:var(--message-size-l-border-radius,2px)}.next-message.next-large.next-toast{border-radius:2px;border-radius:var(--message-size-l-border-radius-toast,2px)}.next-message[dir=rtl] .next-message-symbol{float:right}.next-message[dir=rtl].next-medium .next-message-title{padding:0 16px 0 4px;padding:0 calc(var(--message-size-m-title-content-padding-left, 4px) + var(--message-size-m-icon, 12px)) 0 var(--message-size-m-title-content-padding-right,4px)}.next-message[dir=rtl].next-medium .next-message-close{left:12px;left:var(--message-size-m-close-right,12px);right:auto}.next-message[dir=rtl].next-large .next-message-title{padding:0 24px 0 16px;padding:0 calc(var(--message-size-l-title-content-padding-left, 8px) + var(--message-size-l-icon, 16px)) 0 var(--message-size-l-title-content-padding-right,16px)}.next-message[dir=rtl].next-large .next-message-close{left:16px;left:var(--message-size-l-close-right,16px);right:auto}.next-message-wrapper-v2{margin:0;padding:0;position:fixed;left:0;z-index:1001;width:100%;pointer-events:none}.next-message-list{padding:8px;text-align:center}.next-message-list .next-message{display:inline-block;pointer-events:all}.next-message-fade-leave{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-message-fade-leave.next-message-fade-leave-active{-webkit-animation-name:MessageFadeOut;animation-name:MessageFadeOut;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes MessageFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}@keyframes MessageFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}.next-dialog[dir=rtl],.next-dialog[dir=rtl] .next-dialog-footer.next-align-left{text-align:right}.next-dialog[dir=rtl] .next-dialog-footer.next-align-center{text-align:center}.next-dialog[dir=rtl] .next-dialog-footer.next-align-right{text-align:left}.next-dialog[dir=rtl] .next-dialog-btn+.next-dialog-btn{margin-right:4px;margin-left:0}.next-dialog[dir=rtl] .next-dialog-close{left:24px;left:var(--dialog-close-right,24px);right:auto}.next-dialog{position:fixed;z-index:1001;background:#fff;background:var(--dialog-bg,#fff);border:1px solid #c0c6cc;border:var(--dialog-border-width,1px) var(--dialog-border-style,solid) var(--dialog-border-color,#c0c6cc);border-radius:4px;border-radius:var(--dialog-corner,4px);-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.2);-webkit-box-shadow:var(--dialog-shadow,0 8px 16px 0 rgba(0,0,0,.2));box-shadow:0 8px 16px 0 rgba(0,0,0,.2);box-shadow:var(--dialog-shadow,0 8px 16px 0 rgba(0,0,0,.2));text-align:left;overflow:hidden;max-width:90%}.next-dialog,.next-dialog *,.next-dialog :after,.next-dialog :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-dialog-header{padding:24px 24px 16px;padding:var(--dialog-title-padding-top,24px) var(--dialog-title-padding-left-right,24px) var(--dialog-title-padding-bottom,16px) var(--dialog-title-padding-left-right,24px);border-bottom:0 solid #c0c6cc;border-bottom:var(--dialog-title-border-width,0) var(--line-solid,solid) var(--dialog-title-border-color,#c0c6cc);font-size:16px;font-size:var(--dialog-title-font-size,16px);font-weight:400;font-weight:var(--dialog-title-font-weight,normal);background:#fff;background:var(--dialog-title-bg-color,#fff);color:#333;color:var(--dialog-title-color,#333)}.next-dialog-body{padding:0 24px 16px;padding:var(--dialog-content-padding-top,0) var(--dialog-content-padding-left-right,24px) var(--dialog-content-padding-bottom,16px) var(--dialog-content-padding-left-right,24px);font-size:12px;font-size:var(--dialog-content-font-size,12px);color:#333;color:var(--dialog-content-color,#333)}.next-dialog-footer{padding:16px 24px 24px;padding:var(--dialog-footer-padding-top,16px) var(--dialog-footer-padding-left-right,24px) var(--dialog-footer-padding-bottom,24px) var(--dialog-footer-padding-left-right,24px);border-top:0 solid #c0c6cc;border-top:var(--dialog-footer-border-width,0) var(--line-solid,solid) var(--dialog-footer-border-color,#c0c6cc);background:#fff;background:var(--dialog-footer-bg-color,#fff)}.next-dialog-footer.next-align-left{text-align:left}.next-dialog-footer.next-align-center{text-align:center}.next-dialog-footer.next-align-right{text-align:right}.next-dialog-footer-fixed-height{position:absolute;width:100%;bottom:0}.next-dialog-btn+.next-dialog-btn{margin-left:8px;margin-left:var(--dialog-footer-button-spacing,8px)}.next-dialog-close{position:absolute;top:24px;top:var(--dialog-close-top,24px);right:24px;right:var(--dialog-close-right,24px);width:16px;width:var(--dialog-close-width,16px);cursor:pointer}.next-dialog-close,.next-dialog-close:link,.next-dialog-close:visited{height:16px;height:var(--dialog-close-width,16px);color:#666;color:var(--dialog-close-color,#666)}.next-dialog-close:hover{background:#fff;background:var(--dialog-close-bg-hovered,#fff);color:#333;color:var(--dialog-close-color-hovered,#333)}.next-dialog-close .next-dialog-close-icon.next-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-top:calc(0px - var(--dialog-close-size, 16px)/2);margin-left:-8px;margin-left:calc(0px - var(--dialog-close-size, 16px)/2);width:16px;width:var(--dialog-close-size,16px);height:16px;height:var(--dialog-close-size,16px);line-height:1em}.next-dialog-close .next-dialog-close-icon.next-icon:before{width:16px;width:var(--dialog-close-size,16px);height:16px;height:var(--dialog-close-size,16px);font-size:16px;font-size:var(--dialog-close-size,16px);line-height:1em}.next-dialog-container{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1001;padding:40px;overflow:auto;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.next-dialog-container:before{display:inline-block;vertical-align:middle;width:0;height:100%;content:""}.next-dialog-container .next-dialog{display:inline-block;position:relative;vertical-align:middle}.next-dialog-quick .next-dialog-body{padding:48px 24px 16px;padding:var(--dialog-message-content-padding-top,48px) var(--dialog-message-content-padding-left-right,24px) var(--dialog-message-content-padding-bottom,16px) var(--dialog-message-content-padding-left-right,24px)}.next-dialog .next-dialog-message.next-message{min-width:300px;padding:0}.next-drawer{position:fixed;z-index:1001;background:#fff;background:var(--drawer-bg,#fff);border:1px solid #c0c6cc;border:var(--drawer-border-width,1px) var(--drawer-border-style,solid) var(--drawer-border-color,#c0c6cc);-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.2);-webkit-box-shadow:var(--drawer-shadow,0 8px 16px 0 rgba(0,0,0,.2));box-shadow:0 8px 16px 0 rgba(0,0,0,.2);box-shadow:var(--drawer-shadow,0 8px 16px 0 rgba(0,0,0,.2));overflow:auto;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.next-drawer,.next-drawer *,.next-drawer :after,.next-drawer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-drawer-left,.next-drawer-right{height:100%;max-width:80%;width:240px}.next-drawer-bottom,.next-drawer-top{width:100%}.next-drawer-header{padding:24px 24px 16px;padding:var(--drawer-title-padding-top,24px) var(--drawer-title-padding-left-right,24px) var(--drawer-title-padding-bottom,16px) var(--drawer-title-padding-left-right,24px);border-bottom:0 solid transparent;border-bottom:var(--drawer-title-border-width,0) var(--line-solid,solid) var(--drawer-title-border-color,transparent);font-size:16px;font-size:var(--drawer-title-font-size,16px);background:#fff;background:var(--drawer-title-bg-color,#fff);color:#333;color:var(--drawer-title-color,#333)}.next-drawer-no-title{padding:0;border-bottom:0}.next-drawer-body{padding:0 24px 8px;padding:var(--drawer-content-padding-top,0) var(--drawer-content-padding-left-right,24px) var(--drawer-content-padding-bottom,8px) var(--drawer-content-padding-left-right,24px);font-size:12px;font-size:var(--drawer-content-font-size,12px);color:#333;color:var(--drawer-content-color,#333)}.next-drawer-close{position:absolute;top:24px;top:var(--drawer-close-top,24px);right:24px;right:var(--drawer-close-right,24px);width:16px;cursor:pointer}.next-drawer-close,.next-drawer-close:link,.next-drawer-close:visited{height:16px;color:#666;color:var(--drawer-close-color,#666)}.next-drawer-close:hover{background:transparent;background:var(--drawer-close-bg-hovered,transparent);color:#333;color:var(--drawer-close-color-hovered,#333)}.next-drawer-close .next-drawer-close-icon.next-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-top:calc(0px - var(--drawer-close-size, 16px)/2);margin-left:-8px;margin-left:calc(0px - var(--drawer-close-size, 16px)/2);width:16px;width:var(--drawer-close-size,16px);height:16px;height:var(--drawer-close-size,16px);line-height:1em}.next-drawer-close .next-drawer-close-icon.next-icon:before{width:16px;width:var(--drawer-close-size,16px);height:16px;height:var(--drawer-close-size,16px);font-size:16px;font-size:var(--drawer-close-size,16px);line-height:1em}.next-row{display:-webkit-box;display:-ms-flexbox;display:flex}.next-row,.next-row *,.next-row :after,.next-row :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-row.next-row-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}@media (min-width:320px){.next-row.next-row-fixed{width:320px}}@media (min-width:480px){.next-row.next-row-fixed{width:480px}}@media (min-width:720px){.next-row.next-row-fixed{width:720px}}@media (min-width:990px){.next-row.next-row-fixed{width:990px}}@media (min-width:1200px){.next-row.next-row-fixed{width:1200px}}@media (min-width:1500px){.next-row.next-row-fixed{width:1500px}}.next-row.next-row-fixed-xxs{width:320px}.next-row.next-row-fixed-xs{width:480px}.next-row.next-row-fixed-s{width:720px}.next-row.next-row-fixed-m{width:990px}.next-row.next-row-fixed-l{width:1200px}.next-row.next-row-fixed-xl{width:1500px}.next-row.next-row-justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.next-row.next-row-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.next-row.next-row-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-row.next-row-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.next-row.next-row-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.next-row.next-row-align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.next-row.next-row-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.next-row.next-row-align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-row.next-row-align-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.next-row.next-row-align-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.next-col{-webkit-box-flex:1;-ms-flex:1;flex:1}.next-col.next-col-top{-ms-flex-item-align:start;align-self:flex-start}.next-col.next-col-bottom{-ms-flex-item-align:end;align-self:flex-end}.next-col.next-col-center{-ms-flex-item-align:center;align-self:center}@media (min-width:0\0) and (min-resolution:0.001dpcm){.next-row{display:table;width:100%}.next-col{display:table-cell;vertical-align:top}}.next-col-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}@media (min-width:320px){.next-col-xxs-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-xxs-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-xxs-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-xxs-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-xxs-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-xxs-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-xxs-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-xxs-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-xxs-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-xxs-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-xxs-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-xxs-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-xxs-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-xxs-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-xxs-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-xxs-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-xxs-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-xxs-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-xxs-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-xxs-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-xxs-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-xxs-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-xxs-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-xxs-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:480px){.next-col-xs-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-xs-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-xs-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-xs-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-xs-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-xs-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-xs-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-xs-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-xs-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-xs-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-xs-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-xs-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-xs-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-xs-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-xs-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-xs-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-xs-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-xs-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-xs-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-xs-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-xs-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-xs-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-xs-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-xs-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:720px){.next-col-s-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-s-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-s-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-s-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-s-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-s-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-s-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-s-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-s-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-s-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-s-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-s-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-s-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-s-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-s-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-s-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-s-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-s-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-s-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-s-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-s-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-s-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-s-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-s-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:990px){.next-col-m-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-m-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-m-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-m-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-m-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-m-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-m-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-m-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-m-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-m-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-m-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-m-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-m-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-m-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-m-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-m-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-m-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-m-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-m-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-m-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-m-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-m-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-m-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-m-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1200px){.next-col-l-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-l-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-l-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-l-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-l-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-l-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-l-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-l-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-l-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-l-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-l-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-l-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-l-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-l-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-l-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-l-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-l-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-l-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-l-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-l-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-l-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-l-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-l-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-l-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1500px){.next-col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 4.16667%;flex:0 0 4.16667%;width:4.16667%;max-width:4.16667%}.next-col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;width:8.33333%;max-width:8.33333%}.next-col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 12.5%;flex:0 0 12.5%;width:12.5%;max-width:12.5%}.next-col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;width:16.66667%;max-width:16.66667%}.next-col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 20.83333%;flex:0 0 20.83333%;width:20.83333%;max-width:20.83333%}.next-col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;width:25%;max-width:25%}.next-col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 29.16667%;flex:0 0 29.16667%;width:29.16667%;max-width:29.16667%}.next-col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;width:33.33333%;max-width:33.33333%}.next-col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 37.5%;flex:0 0 37.5%;width:37.5%;max-width:37.5%}.next-col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;width:41.66667%;max-width:41.66667%}.next-col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 45.83333%;flex:0 0 45.83333%;width:45.83333%;max-width:45.83333%}.next-col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;width:50%;max-width:50%}.next-col-xl-13{-webkit-box-flex:0;-ms-flex:0 0 54.16667%;flex:0 0 54.16667%;width:54.16667%;max-width:54.16667%}.next-col-xl-14{-webkit-box-flex:0;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;width:58.33333%;max-width:58.33333%}.next-col-xl-15{-webkit-box-flex:0;-ms-flex:0 0 62.5%;flex:0 0 62.5%;width:62.5%;max-width:62.5%}.next-col-xl-16{-webkit-box-flex:0;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;width:66.66667%;max-width:66.66667%}.next-col-xl-17{-webkit-box-flex:0;-ms-flex:0 0 70.83333%;flex:0 0 70.83333%;width:70.83333%;max-width:70.83333%}.next-col-xl-18{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;width:75%;max-width:75%}.next-col-xl-19{-webkit-box-flex:0;-ms-flex:0 0 79.16667%;flex:0 0 79.16667%;width:79.16667%;max-width:79.16667%}.next-col-xl-20{-webkit-box-flex:0;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;width:83.33333%;max-width:83.33333%}.next-col-xl-21{-webkit-box-flex:0;-ms-flex:0 0 87.5%;flex:0 0 87.5%;width:87.5%;max-width:87.5%}.next-col-xl-22{-webkit-box-flex:0;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;width:91.66667%;max-width:91.66667%}.next-col-xl-23{-webkit-box-flex:0;-ms-flex:0 0 95.83333%;flex:0 0 95.83333%;width:95.83333%;max-width:95.83333%}.next-col-xl-24{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}.next-col-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}@media (min-width:320px){.next-col-xxs-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-xxs-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-xxs-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-xxs-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-xxs-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:480px){.next-col-xs-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-xs-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-xs-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-xs-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-xs-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:720px){.next-col-s-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-s-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-s-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-s-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-s-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:990px){.next-col-m-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-m-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-m-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-m-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-m-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1200px){.next-col-l-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-l-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-l-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-l-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-l-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}@media (min-width:1500px){.next-col-xl-1p5{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;width:20%;max-width:20%}.next-col-xl-2p5{-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;max-width:40%}.next-col-xl-3p5{-webkit-box-flex:0;-ms-flex:0 0 60%;flex:0 0 60%;width:60%;max-width:60%}.next-col-xl-4p5{-webkit-box-flex:0;-ms-flex:0 0 80%;flex:0 0 80%;width:80%;max-width:80%}.next-col-xl-5p5{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;max-width:100%}}.next-col-fixed-1{-webkit-box-flex:0;-ms-flex:0 0 20px;flex:0 0 20px;width:20px;max-width:20px}.next-col-fixed-2{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;width:40px;max-width:40px}.next-col-fixed-3{-webkit-box-flex:0;-ms-flex:0 0 60px;flex:0 0 60px;width:60px;max-width:60px}.next-col-fixed-4{-webkit-box-flex:0;-ms-flex:0 0 80px;flex:0 0 80px;width:80px;max-width:80px}.next-col-fixed-5{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;width:100px;max-width:100px}.next-col-fixed-6{-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px;width:120px;max-width:120px}.next-col-fixed-7{-webkit-box-flex:0;-ms-flex:0 0 140px;flex:0 0 140px;width:140px;max-width:140px}.next-col-fixed-8{-webkit-box-flex:0;-ms-flex:0 0 160px;flex:0 0 160px;width:160px;max-width:160px}.next-col-fixed-9{-webkit-box-flex:0;-ms-flex:0 0 180px;flex:0 0 180px;width:180px;max-width:180px}.next-col-fixed-10{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;width:200px;max-width:200px}.next-col-fixed-11{-webkit-box-flex:0;-ms-flex:0 0 220px;flex:0 0 220px;width:220px;max-width:220px}.next-col-fixed-12{-webkit-box-flex:0;-ms-flex:0 0 240px;flex:0 0 240px;width:240px;max-width:240px}.next-col-fixed-13{-webkit-box-flex:0;-ms-flex:0 0 260px;flex:0 0 260px;width:260px;max-width:260px}.next-col-fixed-14{-webkit-box-flex:0;-ms-flex:0 0 280px;flex:0 0 280px;width:280px;max-width:280px}.next-col-fixed-15{-webkit-box-flex:0;-ms-flex:0 0 300px;flex:0 0 300px;width:300px;max-width:300px}.next-col-fixed-16{-webkit-box-flex:0;-ms-flex:0 0 320px;flex:0 0 320px;width:320px;max-width:320px}.next-col-fixed-17{-webkit-box-flex:0;-ms-flex:0 0 340px;flex:0 0 340px;width:340px;max-width:340px}.next-col-fixed-18{-webkit-box-flex:0;-ms-flex:0 0 360px;flex:0 0 360px;width:360px;max-width:360px}.next-col-fixed-19{-webkit-box-flex:0;-ms-flex:0 0 380px;flex:0 0 380px;width:380px;max-width:380px}.next-col-fixed-20{-webkit-box-flex:0;-ms-flex:0 0 400px;flex:0 0 400px;width:400px;max-width:400px}.next-col-fixed-21{-webkit-box-flex:0;-ms-flex:0 0 420px;flex:0 0 420px;width:420px;max-width:420px}.next-col-fixed-22{-webkit-box-flex:0;-ms-flex:0 0 440px;flex:0 0 440px;width:440px;max-width:440px}.next-col-fixed-23{-webkit-box-flex:0;-ms-flex:0 0 460px;flex:0 0 460px;width:460px;max-width:460px}.next-col-fixed-24{-webkit-box-flex:0;-ms-flex:0 0 480px;flex:0 0 480px;width:480px;max-width:480px}.next-col-fixed-25{-webkit-box-flex:0;-ms-flex:0 0 500px;flex:0 0 500px;width:500px;max-width:500px}.next-col-fixed-26{-webkit-box-flex:0;-ms-flex:0 0 520px;flex:0 0 520px;width:520px;max-width:520px}.next-col-fixed-27{-webkit-box-flex:0;-ms-flex:0 0 540px;flex:0 0 540px;width:540px;max-width:540px}.next-col-fixed-28{-webkit-box-flex:0;-ms-flex:0 0 560px;flex:0 0 560px;width:560px;max-width:560px}.next-col-fixed-29{-webkit-box-flex:0;-ms-flex:0 0 580px;flex:0 0 580px;width:580px;max-width:580px}.next-col-fixed-30{-webkit-box-flex:0;-ms-flex:0 0 600px;flex:0 0 600px;width:600px;max-width:600px}.next-col-offset-1{margin-left:4.16667%}.next-col-offset-2{margin-left:8.33333%}.next-col-offset-3{margin-left:12.5%}.next-col-offset-4{margin-left:16.66667%}.next-col-offset-5{margin-left:20.83333%}.next-col-offset-6{margin-left:25%}.next-col-offset-7{margin-left:29.16667%}.next-col-offset-8{margin-left:33.33333%}.next-col-offset-9{margin-left:37.5%}.next-col-offset-10{margin-left:41.66667%}.next-col-offset-11{margin-left:45.83333%}.next-col-offset-12{margin-left:50%}.next-col-offset-13{margin-left:54.16667%}.next-col-offset-14{margin-left:58.33333%}.next-col-offset-15{margin-left:62.5%}.next-col-offset-16{margin-left:66.66667%}.next-col-offset-17{margin-left:70.83333%}.next-col-offset-18{margin-left:75%}.next-col-offset-19{margin-left:79.16667%}.next-col-offset-20{margin-left:83.33333%}.next-col-offset-21{margin-left:87.5%}.next-col-offset-22{margin-left:91.66667%}.next-col-offset-23{margin-left:95.83333%}.next-col-offset-24{margin-left:100%}@media (min-width:320px){.next-col-xxs-offset-1{margin-left:4.16667%}.next-col-xxs-offset-2{margin-left:8.33333%}.next-col-xxs-offset-3{margin-left:12.5%}.next-col-xxs-offset-4{margin-left:16.66667%}.next-col-xxs-offset-5{margin-left:20.83333%}.next-col-xxs-offset-6{margin-left:25%}.next-col-xxs-offset-7{margin-left:29.16667%}.next-col-xxs-offset-8{margin-left:33.33333%}.next-col-xxs-offset-9{margin-left:37.5%}.next-col-xxs-offset-10{margin-left:41.66667%}.next-col-xxs-offset-11{margin-left:45.83333%}.next-col-xxs-offset-12{margin-left:50%}.next-col-xxs-offset-13{margin-left:54.16667%}.next-col-xxs-offset-14{margin-left:58.33333%}.next-col-xxs-offset-15{margin-left:62.5%}.next-col-xxs-offset-16{margin-left:66.66667%}.next-col-xxs-offset-17{margin-left:70.83333%}.next-col-xxs-offset-18{margin-left:75%}.next-col-xxs-offset-19{margin-left:79.16667%}.next-col-xxs-offset-20{margin-left:83.33333%}.next-col-xxs-offset-21{margin-left:87.5%}.next-col-xxs-offset-22{margin-left:91.66667%}.next-col-xxs-offset-23{margin-left:95.83333%}.next-col-xxs-offset-24{margin-left:100%}}@media (min-width:480px){.next-col-xs-offset-1{margin-left:4.16667%}.next-col-xs-offset-2{margin-left:8.33333%}.next-col-xs-offset-3{margin-left:12.5%}.next-col-xs-offset-4{margin-left:16.66667%}.next-col-xs-offset-5{margin-left:20.83333%}.next-col-xs-offset-6{margin-left:25%}.next-col-xs-offset-7{margin-left:29.16667%}.next-col-xs-offset-8{margin-left:33.33333%}.next-col-xs-offset-9{margin-left:37.5%}.next-col-xs-offset-10{margin-left:41.66667%}.next-col-xs-offset-11{margin-left:45.83333%}.next-col-xs-offset-12{margin-left:50%}.next-col-xs-offset-13{margin-left:54.16667%}.next-col-xs-offset-14{margin-left:58.33333%}.next-col-xs-offset-15{margin-left:62.5%}.next-col-xs-offset-16{margin-left:66.66667%}.next-col-xs-offset-17{margin-left:70.83333%}.next-col-xs-offset-18{margin-left:75%}.next-col-xs-offset-19{margin-left:79.16667%}.next-col-xs-offset-20{margin-left:83.33333%}.next-col-xs-offset-21{margin-left:87.5%}.next-col-xs-offset-22{margin-left:91.66667%}.next-col-xs-offset-23{margin-left:95.83333%}.next-col-xs-offset-24{margin-left:100%}}@media (min-width:720px){.next-col-s-offset-1{margin-left:4.16667%}.next-col-s-offset-2{margin-left:8.33333%}.next-col-s-offset-3{margin-left:12.5%}.next-col-s-offset-4{margin-left:16.66667%}.next-col-s-offset-5{margin-left:20.83333%}.next-col-s-offset-6{margin-left:25%}.next-col-s-offset-7{margin-left:29.16667%}.next-col-s-offset-8{margin-left:33.33333%}.next-col-s-offset-9{margin-left:37.5%}.next-col-s-offset-10{margin-left:41.66667%}.next-col-s-offset-11{margin-left:45.83333%}.next-col-s-offset-12{margin-left:50%}.next-col-s-offset-13{margin-left:54.16667%}.next-col-s-offset-14{margin-left:58.33333%}.next-col-s-offset-15{margin-left:62.5%}.next-col-s-offset-16{margin-left:66.66667%}.next-col-s-offset-17{margin-left:70.83333%}.next-col-s-offset-18{margin-left:75%}.next-col-s-offset-19{margin-left:79.16667%}.next-col-s-offset-20{margin-left:83.33333%}.next-col-s-offset-21{margin-left:87.5%}.next-col-s-offset-22{margin-left:91.66667%}.next-col-s-offset-23{margin-left:95.83333%}.next-col-s-offset-24{margin-left:100%}}@media (min-width:990px){.next-col-m-offset-1{margin-left:4.16667%}.next-col-m-offset-2{margin-left:8.33333%}.next-col-m-offset-3{margin-left:12.5%}.next-col-m-offset-4{margin-left:16.66667%}.next-col-m-offset-5{margin-left:20.83333%}.next-col-m-offset-6{margin-left:25%}.next-col-m-offset-7{margin-left:29.16667%}.next-col-m-offset-8{margin-left:33.33333%}.next-col-m-offset-9{margin-left:37.5%}.next-col-m-offset-10{margin-left:41.66667%}.next-col-m-offset-11{margin-left:45.83333%}.next-col-m-offset-12{margin-left:50%}.next-col-m-offset-13{margin-left:54.16667%}.next-col-m-offset-14{margin-left:58.33333%}.next-col-m-offset-15{margin-left:62.5%}.next-col-m-offset-16{margin-left:66.66667%}.next-col-m-offset-17{margin-left:70.83333%}.next-col-m-offset-18{margin-left:75%}.next-col-m-offset-19{margin-left:79.16667%}.next-col-m-offset-20{margin-left:83.33333%}.next-col-m-offset-21{margin-left:87.5%}.next-col-m-offset-22{margin-left:91.66667%}.next-col-m-offset-23{margin-left:95.83333%}.next-col-m-offset-24{margin-left:100%}}@media (min-width:1200px){.next-col-l-offset-1{margin-left:4.16667%}.next-col-l-offset-2{margin-left:8.33333%}.next-col-l-offset-3{margin-left:12.5%}.next-col-l-offset-4{margin-left:16.66667%}.next-col-l-offset-5{margin-left:20.83333%}.next-col-l-offset-6{margin-left:25%}.next-col-l-offset-7{margin-left:29.16667%}.next-col-l-offset-8{margin-left:33.33333%}.next-col-l-offset-9{margin-left:37.5%}.next-col-l-offset-10{margin-left:41.66667%}.next-col-l-offset-11{margin-left:45.83333%}.next-col-l-offset-12{margin-left:50%}.next-col-l-offset-13{margin-left:54.16667%}.next-col-l-offset-14{margin-left:58.33333%}.next-col-l-offset-15{margin-left:62.5%}.next-col-l-offset-16{margin-left:66.66667%}.next-col-l-offset-17{margin-left:70.83333%}.next-col-l-offset-18{margin-left:75%}.next-col-l-offset-19{margin-left:79.16667%}.next-col-l-offset-20{margin-left:83.33333%}.next-col-l-offset-21{margin-left:87.5%}.next-col-l-offset-22{margin-left:91.66667%}.next-col-l-offset-23{margin-left:95.83333%}.next-col-l-offset-24{margin-left:100%}}@media (min-width:1500px){.next-col-xl-offset-1{margin-left:4.16667%}.next-col-xl-offset-2{margin-left:8.33333%}.next-col-xl-offset-3{margin-left:12.5%}.next-col-xl-offset-4{margin-left:16.66667%}.next-col-xl-offset-5{margin-left:20.83333%}.next-col-xl-offset-6{margin-left:25%}.next-col-xl-offset-7{margin-left:29.16667%}.next-col-xl-offset-8{margin-left:33.33333%}.next-col-xl-offset-9{margin-left:37.5%}.next-col-xl-offset-10{margin-left:41.66667%}.next-col-xl-offset-11{margin-left:45.83333%}.next-col-xl-offset-12{margin-left:50%}.next-col-xl-offset-13{margin-left:54.16667%}.next-col-xl-offset-14{margin-left:58.33333%}.next-col-xl-offset-15{margin-left:62.5%}.next-col-xl-offset-16{margin-left:66.66667%}.next-col-xl-offset-17{margin-left:70.83333%}.next-col-xl-offset-18{margin-left:75%}.next-col-xl-offset-19{margin-left:79.16667%}.next-col-xl-offset-20{margin-left:83.33333%}.next-col-xl-offset-21{margin-left:87.5%}.next-col-xl-offset-22{margin-left:91.66667%}.next-col-xl-offset-23{margin-left:95.83333%}.next-col-xl-offset-24{margin-left:100%}}.next-col-offset-fixed-1{margin-left:20px}.next-col-offset-fixed-2{margin-left:40px}.next-col-offset-fixed-3{margin-left:60px}.next-col-offset-fixed-4{margin-left:80px}.next-col-offset-fixed-5{margin-left:100px}.next-col-offset-fixed-6{margin-left:120px}.next-col-offset-fixed-7{margin-left:140px}.next-col-offset-fixed-8{margin-left:160px}.next-col-offset-fixed-9{margin-left:180px}.next-col-offset-fixed-10{margin-left:200px}.next-col-offset-fixed-11{margin-left:220px}.next-col-offset-fixed-12{margin-left:240px}.next-col-offset-fixed-13{margin-left:260px}.next-col-offset-fixed-14{margin-left:280px}.next-col-offset-fixed-15{margin-left:300px}.next-col-offset-fixed-16{margin-left:320px}.next-col-offset-fixed-17{margin-left:340px}.next-col-offset-fixed-18{margin-left:360px}.next-col-offset-fixed-19{margin-left:380px}.next-col-offset-fixed-20{margin-left:400px}.next-col-offset-fixed-21{margin-left:420px}.next-col-offset-fixed-22{margin-left:440px}.next-col-offset-fixed-23{margin-left:460px}.next-col-offset-fixed-24{margin-left:480px}.next-col-offset-fixed-25{margin-left:500px}.next-col-offset-fixed-26{margin-left:520px}.next-col-offset-fixed-27{margin-left:540px}.next-col-offset-fixed-28{margin-left:560px}.next-col-offset-fixed-29{margin-left:580px}.next-col-offset-fixed-30{margin-left:600px}.next-col-offset-fixed-xxs-1{margin-left:20px}.next-col-offset-fixed-xxs-2{margin-left:40px}.next-col-offset-fixed-xxs-3{margin-left:60px}.next-col-offset-fixed-xxs-4{margin-left:80px}.next-col-offset-fixed-xxs-5{margin-left:100px}.next-col-offset-fixed-xxs-6{margin-left:120px}.next-col-offset-fixed-xxs-7{margin-left:140px}.next-col-offset-fixed-xxs-8{margin-left:160px}.next-col-offset-fixed-xxs-9{margin-left:180px}.next-col-offset-fixed-xxs-10{margin-left:200px}.next-col-offset-fixed-xxs-11{margin-left:220px}.next-col-offset-fixed-xxs-12{margin-left:240px}.next-col-offset-fixed-xxs-13{margin-left:260px}.next-col-offset-fixed-xxs-14{margin-left:280px}.next-col-offset-fixed-xxs-15{margin-left:300px}.next-col-offset-fixed-xxs-16{margin-left:320px}.next-col-offset-fixed-xxs-17{margin-left:340px}.next-col-offset-fixed-xxs-18{margin-left:360px}.next-col-offset-fixed-xxs-19{margin-left:380px}.next-col-offset-fixed-xxs-20{margin-left:400px}.next-col-offset-fixed-xxs-21{margin-left:420px}.next-col-offset-fixed-xxs-22{margin-left:440px}.next-col-offset-fixed-xxs-23{margin-left:460px}.next-col-offset-fixed-xxs-24{margin-left:480px}.next-col-offset-fixed-xxs-25{margin-left:500px}.next-col-offset-fixed-xxs-26{margin-left:520px}.next-col-offset-fixed-xxs-27{margin-left:540px}.next-col-offset-fixed-xxs-28{margin-left:560px}.next-col-offset-fixed-xxs-29{margin-left:580px}.next-col-offset-fixed-xxs-30{margin-left:600px}.next-col-offset-fixed-xs-1{margin-left:20px}.next-col-offset-fixed-xs-2{margin-left:40px}.next-col-offset-fixed-xs-3{margin-left:60px}.next-col-offset-fixed-xs-4{margin-left:80px}.next-col-offset-fixed-xs-5{margin-left:100px}.next-col-offset-fixed-xs-6{margin-left:120px}.next-col-offset-fixed-xs-7{margin-left:140px}.next-col-offset-fixed-xs-8{margin-left:160px}.next-col-offset-fixed-xs-9{margin-left:180px}.next-col-offset-fixed-xs-10{margin-left:200px}.next-col-offset-fixed-xs-11{margin-left:220px}.next-col-offset-fixed-xs-12{margin-left:240px}.next-col-offset-fixed-xs-13{margin-left:260px}.next-col-offset-fixed-xs-14{margin-left:280px}.next-col-offset-fixed-xs-15{margin-left:300px}.next-col-offset-fixed-xs-16{margin-left:320px}.next-col-offset-fixed-xs-17{margin-left:340px}.next-col-offset-fixed-xs-18{margin-left:360px}.next-col-offset-fixed-xs-19{margin-left:380px}.next-col-offset-fixed-xs-20{margin-left:400px}.next-col-offset-fixed-xs-21{margin-left:420px}.next-col-offset-fixed-xs-22{margin-left:440px}.next-col-offset-fixed-xs-23{margin-left:460px}.next-col-offset-fixed-xs-24{margin-left:480px}.next-col-offset-fixed-xs-25{margin-left:500px}.next-col-offset-fixed-xs-26{margin-left:520px}.next-col-offset-fixed-xs-27{margin-left:540px}.next-col-offset-fixed-xs-28{margin-left:560px}.next-col-offset-fixed-xs-29{margin-left:580px}.next-col-offset-fixed-xs-30{margin-left:600px}.next-col-offset-fixed-s-1{margin-left:20px}.next-col-offset-fixed-s-2{margin-left:40px}.next-col-offset-fixed-s-3{margin-left:60px}.next-col-offset-fixed-s-4{margin-left:80px}.next-col-offset-fixed-s-5{margin-left:100px}.next-col-offset-fixed-s-6{margin-left:120px}.next-col-offset-fixed-s-7{margin-left:140px}.next-col-offset-fixed-s-8{margin-left:160px}.next-col-offset-fixed-s-9{margin-left:180px}.next-col-offset-fixed-s-10{margin-left:200px}.next-col-offset-fixed-s-11{margin-left:220px}.next-col-offset-fixed-s-12{margin-left:240px}.next-col-offset-fixed-s-13{margin-left:260px}.next-col-offset-fixed-s-14{margin-left:280px}.next-col-offset-fixed-s-15{margin-left:300px}.next-col-offset-fixed-s-16{margin-left:320px}.next-col-offset-fixed-s-17{margin-left:340px}.next-col-offset-fixed-s-18{margin-left:360px}.next-col-offset-fixed-s-19{margin-left:380px}.next-col-offset-fixed-s-20{margin-left:400px}.next-col-offset-fixed-s-21{margin-left:420px}.next-col-offset-fixed-s-22{margin-left:440px}.next-col-offset-fixed-s-23{margin-left:460px}.next-col-offset-fixed-s-24{margin-left:480px}.next-col-offset-fixed-s-25{margin-left:500px}.next-col-offset-fixed-s-26{margin-left:520px}.next-col-offset-fixed-s-27{margin-left:540px}.next-col-offset-fixed-s-28{margin-left:560px}.next-col-offset-fixed-s-29{margin-left:580px}.next-col-offset-fixed-s-30{margin-left:600px}.next-col-offset-fixed-m-1{margin-left:20px}.next-col-offset-fixed-m-2{margin-left:40px}.next-col-offset-fixed-m-3{margin-left:60px}.next-col-offset-fixed-m-4{margin-left:80px}.next-col-offset-fixed-m-5{margin-left:100px}.next-col-offset-fixed-m-6{margin-left:120px}.next-col-offset-fixed-m-7{margin-left:140px}.next-col-offset-fixed-m-8{margin-left:160px}.next-col-offset-fixed-m-9{margin-left:180px}.next-col-offset-fixed-m-10{margin-left:200px}.next-col-offset-fixed-m-11{margin-left:220px}.next-col-offset-fixed-m-12{margin-left:240px}.next-col-offset-fixed-m-13{margin-left:260px}.next-col-offset-fixed-m-14{margin-left:280px}.next-col-offset-fixed-m-15{margin-left:300px}.next-col-offset-fixed-m-16{margin-left:320px}.next-col-offset-fixed-m-17{margin-left:340px}.next-col-offset-fixed-m-18{margin-left:360px}.next-col-offset-fixed-m-19{margin-left:380px}.next-col-offset-fixed-m-20{margin-left:400px}.next-col-offset-fixed-m-21{margin-left:420px}.next-col-offset-fixed-m-22{margin-left:440px}.next-col-offset-fixed-m-23{margin-left:460px}.next-col-offset-fixed-m-24{margin-left:480px}.next-col-offset-fixed-m-25{margin-left:500px}.next-col-offset-fixed-m-26{margin-left:520px}.next-col-offset-fixed-m-27{margin-left:540px}.next-col-offset-fixed-m-28{margin-left:560px}.next-col-offset-fixed-m-29{margin-left:580px}.next-col-offset-fixed-m-30{margin-left:600px}.next-col-offset-fixed-l-1{margin-left:20px}.next-col-offset-fixed-l-2{margin-left:40px}.next-col-offset-fixed-l-3{margin-left:60px}.next-col-offset-fixed-l-4{margin-left:80px}.next-col-offset-fixed-l-5{margin-left:100px}.next-col-offset-fixed-l-6{margin-left:120px}.next-col-offset-fixed-l-7{margin-left:140px}.next-col-offset-fixed-l-8{margin-left:160px}.next-col-offset-fixed-l-9{margin-left:180px}.next-col-offset-fixed-l-10{margin-left:200px}.next-col-offset-fixed-l-11{margin-left:220px}.next-col-offset-fixed-l-12{margin-left:240px}.next-col-offset-fixed-l-13{margin-left:260px}.next-col-offset-fixed-l-14{margin-left:280px}.next-col-offset-fixed-l-15{margin-left:300px}.next-col-offset-fixed-l-16{margin-left:320px}.next-col-offset-fixed-l-17{margin-left:340px}.next-col-offset-fixed-l-18{margin-left:360px}.next-col-offset-fixed-l-19{margin-left:380px}.next-col-offset-fixed-l-20{margin-left:400px}.next-col-offset-fixed-l-21{margin-left:420px}.next-col-offset-fixed-l-22{margin-left:440px}.next-col-offset-fixed-l-23{margin-left:460px}.next-col-offset-fixed-l-24{margin-left:480px}.next-col-offset-fixed-l-25{margin-left:500px}.next-col-offset-fixed-l-26{margin-left:520px}.next-col-offset-fixed-l-27{margin-left:540px}.next-col-offset-fixed-l-28{margin-left:560px}.next-col-offset-fixed-l-29{margin-left:580px}.next-col-offset-fixed-l-30{margin-left:600px}.next-col-offset-fixed-xl-1{margin-left:20px}.next-col-offset-fixed-xl-2{margin-left:40px}.next-col-offset-fixed-xl-3{margin-left:60px}.next-col-offset-fixed-xl-4{margin-left:80px}.next-col-offset-fixed-xl-5{margin-left:100px}.next-col-offset-fixed-xl-6{margin-left:120px}.next-col-offset-fixed-xl-7{margin-left:140px}.next-col-offset-fixed-xl-8{margin-left:160px}.next-col-offset-fixed-xl-9{margin-left:180px}.next-col-offset-fixed-xl-10{margin-left:200px}.next-col-offset-fixed-xl-11{margin-left:220px}.next-col-offset-fixed-xl-12{margin-left:240px}.next-col-offset-fixed-xl-13{margin-left:260px}.next-col-offset-fixed-xl-14{margin-left:280px}.next-col-offset-fixed-xl-15{margin-left:300px}.next-col-offset-fixed-xl-16{margin-left:320px}.next-col-offset-fixed-xl-17{margin-left:340px}.next-col-offset-fixed-xl-18{margin-left:360px}.next-col-offset-fixed-xl-19{margin-left:380px}.next-col-offset-fixed-xl-20{margin-left:400px}.next-col-offset-fixed-xl-21{margin-left:420px}.next-col-offset-fixed-xl-22{margin-left:440px}.next-col-offset-fixed-xl-23{margin-left:460px}.next-col-offset-fixed-xl-24{margin-left:480px}.next-col-offset-fixed-xl-25{margin-left:500px}.next-col-offset-fixed-xl-26{margin-left:520px}.next-col-offset-fixed-xl-27{margin-left:540px}.next-col-offset-fixed-xl-28{margin-left:560px}.next-col-offset-fixed-xl-29{margin-left:580px}.next-col-offset-fixed-xl-30{margin-left:600px}.next-col.next-col-hidden{display:none}@media (min-width:320px) and (max-width:479px){.next-col.next-col-xxs-hidden{display:none}}@media (min-width:480px) and (max-width:719px){.next-col.next-col-xs-hidden{display:none}}@media (min-width:720px) and (max-width:989px){.next-col.next-col-s-hidden{display:none}}@media (min-width:990px) and (max-width:1199px){.next-col.next-col-m-hidden{display:none}}@media (min-width:1200px) and (max-width:1499px){.next-col.next-col-l-hidden{display:none}}@media (min-width:1500px){.next-col.next-col-xl-hidden{display:none}}.next-row.next-row-hidden{display:none}@media (min-width:320px) and (max-width:479px){.next-row.next-row-xxs-hidden{display:none}}@media (min-width:480px) and (max-width:719px){.next-row.next-row-xs-hidden{display:none}}@media (min-width:720px) and (max-width:989px){.next-row.next-row-s-hidden{display:none}}@media (min-width:990px) and (max-width:1199px){.next-row.next-row-m-hidden{display:none}}@media (min-width:1200px) and (max-width:1499px){.next-row.next-row-l-hidden{display:none}}@media (min-width:1500px){.next-row.next-row-xl-hidden{display:none}}.next-col-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}@media (min-width:320px){.next-col-xxs-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-xxs-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-xxs-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-xxs-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-xxs-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-xxs-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-xxs-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-xxs-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-xxs-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-xxs-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-xxs-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-xxs-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-xxs-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-xxs-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-xxs-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-xxs-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-xxs-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-xxs-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-xxs-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-xxs-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-xxs-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-xxs-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-xxs-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-xxs-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:480px){.next-col-xs-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-xs-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-xs-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-xs-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-xs-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-xs-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-xs-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-xs-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-xs-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-xs-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-xs-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-xs-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-xs-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-xs-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-xs-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-xs-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-xs-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-xs-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-xs-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-xs-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-xs-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-xs-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-xs-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-xs-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:720px){.next-col-s-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-s-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-s-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-s-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-s-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-s-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-s-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-s-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-s-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-s-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-s-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-s-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-s-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-s-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-s-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-s-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-s-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-s-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-s-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-s-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-s-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-s-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-s-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-s-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:990px){.next-col-m-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-m-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-m-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-m-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-m-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-m-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-m-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-m-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-m-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-m-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-m-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-m-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-m-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-m-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-m-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-m-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-m-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-m-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-m-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-m-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-m-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-m-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-m-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-m-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:1200px){.next-col-l-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-l-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-l-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-l-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-l-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-l-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-l-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-l-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-l-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-l-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-l-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-l-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-l-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-l-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-l-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-l-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-l-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-l-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-l-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-l-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-l-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-l-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-l-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-l-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}@media (min-width:1500px){.next-col-xl-offset-1[dir=rtl]{margin-right:4.16667%;margin-left:auto}.next-col-xl-offset-2[dir=rtl]{margin-right:8.33333%;margin-left:auto}.next-col-xl-offset-3[dir=rtl]{margin-right:12.5%;margin-left:auto}.next-col-xl-offset-4[dir=rtl]{margin-right:16.66667%;margin-left:auto}.next-col-xl-offset-5[dir=rtl]{margin-right:20.83333%;margin-left:auto}.next-col-xl-offset-6[dir=rtl]{margin-right:25%;margin-left:auto}.next-col-xl-offset-7[dir=rtl]{margin-right:29.16667%;margin-left:auto}.next-col-xl-offset-8[dir=rtl]{margin-right:33.33333%;margin-left:auto}.next-col-xl-offset-9[dir=rtl]{margin-right:37.5%;margin-left:auto}.next-col-xl-offset-10[dir=rtl]{margin-right:41.66667%;margin-left:auto}.next-col-xl-offset-11[dir=rtl]{margin-right:45.83333%;margin-left:auto}.next-col-xl-offset-12[dir=rtl]{margin-right:50%;margin-left:auto}.next-col-xl-offset-13[dir=rtl]{margin-right:54.16667%;margin-left:auto}.next-col-xl-offset-14[dir=rtl]{margin-right:58.33333%;margin-left:auto}.next-col-xl-offset-15[dir=rtl]{margin-right:62.5%;margin-left:auto}.next-col-xl-offset-16[dir=rtl]{margin-right:66.66667%;margin-left:auto}.next-col-xl-offset-17[dir=rtl]{margin-right:70.83333%;margin-left:auto}.next-col-xl-offset-18[dir=rtl]{margin-right:75%;margin-left:auto}.next-col-xl-offset-19[dir=rtl]{margin-right:79.16667%;margin-left:auto}.next-col-xl-offset-20[dir=rtl]{margin-right:83.33333%;margin-left:auto}.next-col-xl-offset-21[dir=rtl]{margin-right:87.5%;margin-left:auto}.next-col-xl-offset-22[dir=rtl]{margin-right:91.66667%;margin-left:auto}.next-col-xl-offset-23[dir=rtl]{margin-right:95.83333%;margin-left:auto}.next-col-xl-offset-24[dir=rtl]{margin-right:100%;margin-left:auto}}.next-col-offset-fixed-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-xxs-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-xxs-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-xxs-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-xxs-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-xxs-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-xxs-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-xxs-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-xxs-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-xxs-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-xxs-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-xxs-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-xxs-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-xxs-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-xxs-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-xxs-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-xxs-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-xxs-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-xxs-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-xxs-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-xxs-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-xxs-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-xxs-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-xxs-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-xxs-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-xxs-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-xxs-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-xxs-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-xxs-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-xxs-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-xxs-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-xs-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-xs-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-xs-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-xs-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-xs-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-xs-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-xs-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-xs-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-xs-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-xs-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-xs-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-xs-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-xs-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-xs-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-xs-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-xs-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-xs-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-xs-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-xs-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-xs-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-xs-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-xs-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-xs-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-xs-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-xs-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-xs-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-xs-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-xs-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-xs-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-xs-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-s-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-s-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-s-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-s-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-s-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-s-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-s-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-s-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-s-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-s-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-s-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-s-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-s-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-s-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-s-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-s-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-s-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-s-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-s-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-s-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-s-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-s-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-s-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-s-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-s-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-s-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-s-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-s-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-s-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-s-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-m-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-m-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-m-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-m-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-m-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-m-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-m-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-m-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-m-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-m-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-m-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-m-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-m-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-m-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-m-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-m-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-m-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-m-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-m-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-m-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-m-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-m-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-m-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-m-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-m-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-m-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-m-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-m-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-m-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-m-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-l-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-l-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-l-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-l-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-l-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-l-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-l-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-l-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-l-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-l-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-l-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-l-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-l-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-l-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-l-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-l-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-l-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-l-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-l-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-l-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-l-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-l-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-l-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-l-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-l-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-l-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-l-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-l-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-l-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-l-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-col-offset-fixed-xl-1[dir=rtl]{margin-right:20px;margin-left:auto}.next-col-offset-fixed-xl-2[dir=rtl]{margin-right:40px;margin-left:auto}.next-col-offset-fixed-xl-3[dir=rtl]{margin-right:60px;margin-left:auto}.next-col-offset-fixed-xl-4[dir=rtl]{margin-right:80px;margin-left:auto}.next-col-offset-fixed-xl-5[dir=rtl]{margin-right:100px;margin-left:auto}.next-col-offset-fixed-xl-6[dir=rtl]{margin-right:120px;margin-left:auto}.next-col-offset-fixed-xl-7[dir=rtl]{margin-right:140px;margin-left:auto}.next-col-offset-fixed-xl-8[dir=rtl]{margin-right:160px;margin-left:auto}.next-col-offset-fixed-xl-9[dir=rtl]{margin-right:180px;margin-left:auto}.next-col-offset-fixed-xl-10[dir=rtl]{margin-right:200px;margin-left:auto}.next-col-offset-fixed-xl-11[dir=rtl]{margin-right:220px;margin-left:auto}.next-col-offset-fixed-xl-12[dir=rtl]{margin-right:240px;margin-left:auto}.next-col-offset-fixed-xl-13[dir=rtl]{margin-right:260px;margin-left:auto}.next-col-offset-fixed-xl-14[dir=rtl]{margin-right:280px;margin-left:auto}.next-col-offset-fixed-xl-15[dir=rtl]{margin-right:300px;margin-left:auto}.next-col-offset-fixed-xl-16[dir=rtl]{margin-right:320px;margin-left:auto}.next-col-offset-fixed-xl-17[dir=rtl]{margin-right:340px;margin-left:auto}.next-col-offset-fixed-xl-18[dir=rtl]{margin-right:360px;margin-left:auto}.next-col-offset-fixed-xl-19[dir=rtl]{margin-right:380px;margin-left:auto}.next-col-offset-fixed-xl-20[dir=rtl]{margin-right:400px;margin-left:auto}.next-col-offset-fixed-xl-21[dir=rtl]{margin-right:420px;margin-left:auto}.next-col-offset-fixed-xl-22[dir=rtl]{margin-right:440px;margin-left:auto}.next-col-offset-fixed-xl-23[dir=rtl]{margin-right:460px;margin-left:auto}.next-col-offset-fixed-xl-24[dir=rtl]{margin-right:480px;margin-left:auto}.next-col-offset-fixed-xl-25[dir=rtl]{margin-right:500px;margin-left:auto}.next-col-offset-fixed-xl-26[dir=rtl]{margin-right:520px;margin-left:auto}.next-col-offset-fixed-xl-27[dir=rtl]{margin-right:540px;margin-left:auto}.next-col-offset-fixed-xl-28[dir=rtl]{margin-right:560px;margin-left:auto}.next-col-offset-fixed-xl-29[dir=rtl]{margin-right:580px;margin-left:auto}.next-col-offset-fixed-xl-30[dir=rtl]{margin-right:600px;margin-left:auto}.next-responsive-grid{display:grid}.next-responsive-grid,.next-responsive-grid *,.next-responsive-grid :after,.next-responsive-grid :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-responsive-grid-ie{display:block}.next-form,.next-form *,.next-form :after,.next-form :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-form-preview.next-form-item .next-form-item-label{color:#555;color:var(--form-element-preview-label-color,#555)}.next-form-preview.next-form-item .next-form-preview{color:#111;color:var(--form-element-preview-text-color,#111)}.next-form-preview.next-form-item.next-medium .next-form-item-label{font-size:12px;font-size:var(--form-element-medium-preview-label-font-size,12px);line-height:16px;line-height:var(--form-element-medium-preview-height,16px)}.next-form-preview.next-form-item.next-small .next-form-item-label{font-size:12px;font-size:var(--form-element-small-preview-label-font-size,12px);line-height:16px;line-height:var(--form-element-small-preview-height,16px)}.next-form-preview.next-form-item.next-large .next-form-item-label{font-size:14px;font-size:var(--form-element-large-preview-label-font-size,14px);line-height:16px;line-height:var(--form-element-large-preview-height,16px)}.next-form-responsive-grid .next-form-item-control{-webkit-box-flex:1;-ms-flex:1;flex:1}.next-form-responsive-grid .next-form-item{margin-bottom:0}.next-form-responsive-grid .next-form-item.next-left{display:-webkit-box;display:-ms-flexbox;display:flex}.next-form-responsive-grid.next-small .next-responsive-grid{gap:16px;gap:var(--form-inline-s-item-margin-r,16px)}.next-form-responsive-grid.next-small .next-form-item.next-left .next-form-item-label{line-height:1.4;margin-top:6px;margin-top:calc(var(--form-element-small-height, 24px)/2 - var(--form-element-small-font-size, 12px)/2);margin-bottom:6px;margin-bottom:calc(var(--form-element-small-height, 24px)/2 - var(--form-element-small-font-size, 12px)/2)}.next-form-responsive-grid.next-medium .next-responsive-grid{gap:20px;gap:var(--form-inline-m-item-margin-r,20px)}.next-form-responsive-grid.next-medium .next-form-item.next-left .next-form-item-label{line-height:1.4;margin-top:10px;margin-top:calc(var(--form-element-medium-height, 32px)/2 - var(--form-element-medium-font-size, 12px)/2);margin-bottom:10px;margin-bottom:calc(var(--form-element-medium-height, 32px)/2 - var(--form-element-medium-font-size, 12px)/2)}.next-form-responsive-grid.next-large .next-responsive-grid{gap:24px;gap:var(--form-inline-l-item-margin-r,24px)}.next-form-responsive-grid.next-large .next-form-item.next-left .next-form-item-label{line-height:1.4;margin-top:11px;margin-top:calc(var(--form-element-large-height, 36px)/2 - var(--form-element-large-font-size, 14px)/2);margin-bottom:11px;margin-bottom:calc(var(--form-element-large-height, 36px)/2 - var(--form-element-large-font-size, 14px)/2)}.next-form-item{margin-bottom:16px;margin-bottom:var(--form-item-m-margin-b,16px)}.next-form-item.has-error>.next-form-item-control>.next-form-item-help{color:#c80000;color:var(--form-error-color,#c80000)}.next-form-item.has-warning>.next-form-item-control>.next-form-item-help{color:#fff3b4;color:var(--form-warning-color,#fff3b4)}.next-form-item .next-form-item-label,.next-form-item .next-form-text-align,.next-form-item p{line-height:32px;line-height:var(--form-element-medium-height,32px)}.next-form-item .next-form-text-align,.next-form-item p{margin:0}.next-form-item .next-checkbox-group,.next-form-item .next-checkbox-wrapper,.next-form-item .next-radio-group,.next-form-item .next-radio-wrapper,.next-form-item .next-rating{line-height:28px;line-height:calc(var(--form-element-medium-height, 32px) - 4px)}.next-form-item .next-form-preview{font-size:12px;font-size:var(--form-element-medium-preview-font-size,12px);line-height:16px;line-height:var(--form-element-medium-preview-height,16px)}.next-form-item .next-form-preview.next-input-textarea>p{font-size:12px;font-size:var(--form-element-medium-preview-font-size,12px);text-align:justify;min-height:16.8px;min-height:calc(var(--form-element-medium-preview-font-size, 12px)*1.4);line-height:1.4;margin-top:-.4px;margin-top:calc(var(--form-element-medium-preview-height, 16px)/2 - var(--form-element-medium-preview-font-size, 12px)*1.4/2)}.next-form-item .next-form-item-label{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-form-item .next-form-item-label>label{display:inline-block;line-height:1.5;line-height:var(--font-lineheight-2,1.5)}.next-form-item.next-large{margin-bottom:16px;margin-bottom:var(--form-item-l-margin-b,16px)}.next-form-item.next-large .next-form-item-label,.next-form-item.next-large .next-form-text-align,.next-form-item.next-large p{line-height:36px;line-height:var(--form-element-large-height,36px)}.next-form-item.next-large .next-checkbox-group,.next-form-item.next-large .next-checkbox-wrapper,.next-form-item.next-large .next-radio-group,.next-form-item.next-large .next-radio-wrapper,.next-form-item.next-large .next-rating{line-height:35px;line-height:calc(var(--form-element-large-height, 36px) - 1px)}.next-form-item.next-large .next-form-preview{font-size:14px;font-size:var(--form-element-large-preview-font-size,14px);line-height:16px;line-height:var(--form-element-large-preview-height,16px)}.next-form-item.next-large .next-form-preview.next-input-textarea>p{font-size:14px;font-size:var(--form-element-large-preview-font-size,14px);text-align:justify;min-height:19.6px;min-height:calc(var(--form-element-large-preview-font-size, 14px)*1.4);line-height:1.4;margin-top:-1.8px;margin-top:calc(var(--form-element-large-preview-height, 16px)/2 - var(--form-element-large-preview-font-size, 14px)*1.4/2)}.next-form-item.next-large .next-switch{margin-top:5px;margin-top:calc(var(--form-element-large-height, 36px)/2 - 13px)}.next-form-item.next-large .next-form-item-label{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-form-item.next-small{margin-bottom:16px;margin-bottom:var(--form-item-s-margin-b,16px)}.next-form-item.next-small .next-checkbox-group,.next-form-item.next-small .next-checkbox-wrapper,.next-form-item.next-small .next-form-item-label,.next-form-item.next-small .next-form-text-align,.next-form-item.next-small .next-radio-group,.next-form-item.next-small .next-radio-wrapper,.next-form-item.next-small .next-rating,.next-form-item.next-small p{line-height:24px;line-height:var(--form-element-small-height,24px)}.next-form-item.next-small .next-form-preview{font-size:12px;font-size:var(--form-element-small-preview-font-size,12px);line-height:16px;line-height:var(--form-element-small-preview-height,16px)}.next-form-item.next-small .next-form-preview.next-input-textarea>p{font-size:12px;font-size:var(--form-element-small-preview-font-size,12px);text-align:justify;min-height:16.8px;min-height:calc(var(--form-element-small-preview-font-size, 12px)*1.4);line-height:1.4;margin-top:-.4px;margin-top:calc(var(--form-element-small-preview-height, 16px)/2 - var(--form-element-small-preview-font-size, 12px)*1.4/2)}.next-form-item.next-small .next-form-item-label{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-form-item.next-top>.next-form-item-label{margin-bottom:2px;margin-bottom:var(--form-top-label-margin-b,2px)}.next-form-item.next-inset .next-form-item-label{padding-right:0;padding-left:0;line-height:inherit}.next-form-item-control .next-form-text-align{margin:0}.next-form-item-control>.next-input,.next-form-item-control>.next-input-group,.next-form-item-fullwidth .next-form-item-control>.next-date-picker,.next-form-item-fullwidth .next-form-item-control>.next-input,.next-form-item-fullwidth .next-form-item-control>.next-input-group,.next-form-item-fullwidth .next-form-item-control>.next-month-picker,.next-form-item-fullwidth .next-form-item-control>.next-range-picker,.next-form-item-fullwidth .next-form-item-control>.next-select,.next-form-item-fullwidth .next-form-item-control>.next-time-picker,.next-form-item-fullwidth .next-form-item-control>.next-year-picker{width:100%}.next-form-item-fullwidth .next-form-item-control>.next-date-picker2 .next-date-picker2-input input{width:inherit}.next-form-item-label{display:inline-block;vertical-align:top;color:#555;color:var(--form-label-color,#555);text-align:right;padding-right:12px;padding-right:var(--form-label-padding-r,12px)}.next-form-item-label label[required]:before{margin-right:4px;content:"*";color:#c80000;color:var(--form-error-color,#c80000)}.next-form-item-label.has-colon label:after{content:":";position:relative;top:-.5px;margin:0 0 0 2px}.next-form-item-label.next-left{text-align:left}.next-form-item-label.next-left>label[required]:before{display:none}.next-form-item-label.next-left>label[required]:after{margin-left:4px;content:"*";color:#c80000;color:var(--form-error-color,#c80000)}.next-form-item-help{margin-top:4px;margin-top:var(--form-help-margin-top,4px);font-size:12px;font-size:var(--form-help-font-size,12px);line-height:1.5;line-height:var(--font-lineheight-2,1.5);color:#888;color:var(--form-help-color,#888)}.next-form.next-inline .next-form-item{display:inline-block;vertical-align:top}.next-form.next-inline .next-form-item.next-left .next-form-item-control{display:inline-block;vertical-align:top;line-height:0}.next-form.next-inline .next-form-item:not(:last-child){margin-right:20px;margin-right:var(--form-inline-m-item-margin-r,20px)}.next-form.next-inline .next-form-item.next-large:not(:last-child){margin-right:24px;margin-right:var(--form-inline-l-item-margin-r,24px)}.next-form.next-inline .next-form-item.next-small:not(:last-child){margin-right:16px;margin-right:var(--form-inline-s-item-margin-r,16px)}@media screen and (min-width:0\0) and (min-resolution:0.001dpcm){.next-form-item.next-left>.next-form-item-label,.next-form.next-inline .next-form-item.next-left .next-form-item-control{display:table-cell}}.next-form[dir=rtl] .next-form-item-label{text-align:left;padding-left:12px;padding-left:var(--form-label-padding-r,12px);padding-right:0}.next-form[dir=rtl].next-inline .next-form-item:not(:last-child){margin-left:20px;margin-left:var(--form-inline-m-item-margin-r,20px);margin-right:0}.next-form[dir=rtl].next-inline .next-form-item.next-large:not(:last-child){margin-left:24px;margin-left:var(--form-inline-l-item-margin-r,24px);margin-right:0}.next-form[dir=rtl].next-inline .next-form-item.next-small:not(:last-child){margin-left:16px;margin-left:var(--form-inline-s-item-margin-r,16px);margin-right:0}.next-avatar{position:relative;display:inline-block;overflow:hidden;color:#fff;white-space:nowrap;text-align:center;vertical-align:middle;background:#004080;background:var(--color-fill1-4,#004080);width:40px;width:var(--avatar-size-medium,40px);height:40px;height:var(--avatar-size-medium,40px);line-height:40px;line-height:var(--avatar-size-medium,40px);border-radius:50%}.next-avatar-image{background:transparent}.next-avatar-string{position:absolute;left:50%;-webkit-transform-origin:0 center;-ms-transform-origin:0 center;transform-origin:0 center}.next-avatar-large{width:52px;width:var(--avatar-size-large,52px);height:52px;height:var(--avatar-size-large,52px);line-height:52px;line-height:var(--avatar-size-large,52px);border-radius:50%}.next-avatar-large-string{position:absolute;left:50%;-webkit-transform-origin:0 center;-ms-transform-origin:0 center;transform-origin:0 center}.next-avatar-small{width:28px;width:var(--avatar-size-small,28px);height:28px;height:var(--avatar-size-small,28px);line-height:28px;line-height:var(--avatar-size-small,28px);border-radius:50%}.next-avatar-small-string{position:absolute;left:50%;-webkit-transform-origin:0 center;-ms-transform-origin:0 center;transform-origin:0 center}.next-avatar-square{border-radius:2px;border-radius:var(--avatar-border-radius,2px)}.next-avatar>img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.next-select{display:inline-block;position:relative;font-size:0;vertical-align:middle}.next-select,.next-select *,.next-select :after,.next-select :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-select-trigger{min-width:100px;outline:0;-webkit-transition:all .1s linear;transition:all .1s linear}.next-select-trigger .next-input-label{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.next-select-trigger .next-select-values{display:block;width:100%;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow:hidden}.next-select-trigger .next-select-values>em{font-style:inherit}.next-select-trigger .next-select-values input{padding-left:0;padding-right:0}.next-select-trigger .next-input-control{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.next-select-trigger .next-input-control>*{display:inline-block;width:auto}.next-select-trigger .next-input-control>.next-select-arrow{padding-right:0}.next-select-trigger .next-input.next-disabled em{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3)}.next-select-trigger .next-input.next-disabled .next-select-arrow{cursor:not-allowed}.next-select-trigger .next-select-clear{display:none}.next-select-trigger.next-has-clear:hover .next-select-clear{display:inline-block}.next-select-trigger.next-has-clear:hover .next-select-arrow{display:none}.next-select .next-select-inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;min-width:100px;outline:0;color:#333;color:var(--select-color,#333)}.next-select .next-select-inner .next-tag{line-height:1;margin-right:4px;margin-bottom:3px;padding-left:0;padding-right:0}.next-select .next-select-inner .next-input-inner{width:auto}.next-select-trigger-search{position:relative;display:inline-block;vertical-align:top;overflow:hidden;width:100%;max-width:100%}.next-select-trigger-search>input,.next-select-trigger-search>span{display:block;font-size:inherit;font-family:inherit;letter-spacing:inherit;white-space:nowrap;overflow:hidden}.next-select-trigger-search input{position:absolute;background-color:transparent;width:100%;height:100%!important;z-index:1;left:0;border:0;outline:0;margin:0;padding:0;cursor:inherit}.next-select-trigger-search>span{position:relative;visibility:hidden;white-space:pre;max-width:100%;z-index:-1}.next-select-single.next-no-search{cursor:pointer}.next-select-single.next-has-search.next-active .next-select-values>em{display:none}.next-select-single.next-inactive .next-select-values>em+.next-select-trigger-search,.next-select-single.next-no-search .next-select-values>em+.next-select-trigger-search{width:1px;opacity:0;filter:alpha(opacity=0)}.next-select-single .next-select-values{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-select-single .next-select-values>em{vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.next-select-multiple .next-select-compact{position:relative;white-space:nowrap}.next-select-multiple .next-select-compact .next-select-trigger-search{width:auto}.next-select-multiple .next-select-compact .next-select-tag-compact{position:absolute;top:0;right:0;z-index:1;padding:0 4px 0 16px;color:#333;color:var(--input-text-color,#333);background:linear-gradient(90deg,transparent,#fff 10px);background:linear-gradient(90deg,transparent,var(--input-bg-color,#fff) 10px)}.next-select-multiple .next-disabled .next-select-tag-compact{background:linear-gradient(90deg,transparent,#f7f9fa 10px);background:linear-gradient(90deg,transparent,var(--input-disabled-bg-color,#f7f9fa) 10px)}.next-select-multiple .next-select-values,.next-select-tag .next-select-values{margin-bottom:-3px;height:auto!important}.next-select-multiple .next-select-trigger-search,.next-select-tag .next-select-trigger-search{margin-bottom:3px}.next-select-multiple .next-tag+.next-select-trigger-search,.next-select-tag .next-tag+.next-select-trigger-search{width:auto;min-width:1px}.next-select-multiple .next-input,.next-select-tag .next-input{height:auto;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.next-select-multiple.next-small .next-select-values,.next-select-tag.next-small .next-select-values{min-height:22px;min-height:calc(var(--form-element-small-height, 24px) - 2px);padding-top:2px;padding-top:calc(var(--form-element-small-height, 24px)/2 - var(--select-s-lineheight, 18px)/2 - 1px);padding-bottom:2px;padding-bottom:calc(var(--form-element-small-height, 24px)/2 - var(--select-s-lineheight, 18px)/2 - 1px);line-height:18px;line-height:var(--select-s-lineheight,18px)}.next-select-multiple.next-small .next-select-values-compact,.next-select-tag.next-small .next-select-values-compact{height:24px!important;height:var(--form-element-small-height,24px)!important}.next-select-multiple.next-small .next-tag,.next-select-tag.next-small .next-tag{border:0;padding-top:2px;padding-top:calc(var(--select-s-lineheight, 18px)/2 - 7px);padding-bottom:2px;padding-bottom:calc(var(--select-s-lineheight, 18px)/2 - 7px);height:18px;height:var(--select-s-lineheight,18px)}.next-select-multiple.next-small .next-tag .next-tag-body,.next-select-multiple.next-small .next-tag .next-tag-close-btn,.next-select-tag.next-small .next-tag .next-tag-body,.next-select-tag.next-small .next-tag .next-tag-close-btn{line-height:14px;line-height:calc(var(--select-s-lineheight, 18px) - var(--select-s-lineheight, 18px)/2*2 + 14px)}.next-select-multiple.next-small .next-tag-body,.next-select-tag.next-small .next-tag-body{line-height:18px;line-height:var(--select-s-lineheight,18px)}.next-select-multiple.next-small .next-input-control,.next-select-multiple.next-small .next-input-inner,.next-select-multiple.next-small .next-input-label,.next-select-multiple.next-small .next-select-tag-compact,.next-select-tag.next-small .next-input-control,.next-select-tag.next-small .next-input-inner,.next-select-tag.next-small .next-input-label,.next-select-tag.next-small .next-select-tag-compact{line-height:22px;line-height:calc(var(--form-element-small-height, 24px) - 2px)}.next-select-multiple.next-medium .next-select-values,.next-select-tag.next-medium .next-select-values{min-height:30px;min-height:calc(var(--form-element-medium-height, 32px) - 2px);padding-top:4px;padding-top:calc(var(--form-element-medium-height, 32px)/2 - var(--select-m-lineheight, 22px)/2 - 1px);padding-bottom:4px;padding-bottom:calc(var(--form-element-medium-height, 32px)/2 - var(--select-m-lineheight, 22px)/2 - 1px);line-height:22px;line-height:var(--select-m-lineheight,22px)}.next-select-multiple.next-medium .next-select-values-compact,.next-select-tag.next-medium .next-select-values-compact{height:32px!important;height:var(--form-element-medium-height,32px)!important}.next-select-multiple.next-medium .next-tag,.next-select-tag.next-medium .next-tag{padding-top:2px;padding-top:calc(var(--select-m-lineheight, 22px)/2 - 9px);padding-bottom:2px;padding-bottom:calc(var(--select-m-lineheight, 22px)/2 - 9px);height:22px;height:var(--select-m-lineheight,22px)}.next-select-multiple.next-medium .next-tag .next-tag-body,.next-select-multiple.next-medium .next-tag .next-tag-close-btn,.next-select-tag.next-medium .next-tag .next-tag-body,.next-select-tag.next-medium .next-tag .next-tag-close-btn{line-height:18px;line-height:calc(var(--select-m-lineheight, 22px) - var(--select-m-lineheight, 22px)/2*2 + 18px)}.next-select-multiple.next-medium .next-input-control,.next-select-multiple.next-medium .next-input-inner,.next-select-multiple.next-medium .next-input-label,.next-select-multiple.next-medium .next-select-tag-compact,.next-select-tag.next-medium .next-input-control,.next-select-tag.next-medium .next-input-inner,.next-select-tag.next-medium .next-input-label,.next-select-tag.next-medium .next-select-tag-compact{line-height:30px;line-height:calc(var(--form-element-medium-height, 32px) - 2px)}.next-select-multiple.next-large .next-select-values,.next-select-tag.next-large .next-select-values{min-height:34px;min-height:calc(var(--form-element-large-height, 36px) - 2px);padding-top:6px;padding-top:calc(var(--form-element-large-height, 36px)/2 - var(--select-l-lineheight, 22px)/2 - 1px);padding-bottom:6px;padding-bottom:calc(var(--form-element-large-height, 36px)/2 - var(--select-l-lineheight, 22px)/2 - 1px);line-height:22px;line-height:var(--select-l-lineheight,22px)}.next-select-multiple.next-large .next-select-values-compact,.next-select-tag.next-large .next-select-values-compact{height:36px!important;height:var(--form-element-large-height,36px)!important}.next-select-multiple.next-large .next-tag,.next-select-tag.next-large .next-tag{padding-top:2px;padding-top:calc(var(--select-l-lineheight, 22px)/2 - 9px);padding-bottom:2px;padding-bottom:calc(var(--select-l-lineheight, 22px)/2 - 9px);height:22px;height:var(--select-l-lineheight,22px)}.next-select-multiple.next-large .next-tag .next-tag-body,.next-select-multiple.next-large .next-tag .next-tag-close-btn,.next-select-tag.next-large .next-tag .next-tag-body,.next-select-tag.next-large .next-tag .next-tag-close-btn{line-height:18px;line-height:calc(var(--select-l-lineheight, 22px) - var(--select-l-lineheight, 22px)/2*2 + 18px)}.next-select-multiple.next-large .next-input-control,.next-select-multiple.next-large .next-input-inner,.next-select-multiple.next-large .next-input-label,.next-select-multiple.next-large .next-select-tag-compact,.next-select-tag.next-large .next-input-control,.next-select-tag.next-large .next-input-inner,.next-select-tag.next-large .next-input-label,.next-select-tag.next-large .next-select-tag-compact{line-height:34px;line-height:calc(var(--form-element-large-height, 36px) - 2px)}.next-select-auto-complete{width:160px}.next-select-auto-complete .next-input{width:100%}.next-select-auto-complete .next-input .next-input-hint-wrap{padding-right:1px}.next-select-auto-complete .next-input .next-select-arrow{padding-left:0}.next-select.next-active .next-select-arrow .next-icon-arrow-down{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-select .next-select-unfold-icon:before{content:"";content:var(--select-unfold-icon-content,"")}.next-select-symbol-fold:before{content:"\ea1f";content:var(--select-fold-icon-content,"")}.next-select-arrow{cursor:pointer;width:auto!important;text-align:center;-webkit-transition:all .1s linear;transition:all .1s linear}.next-select-popup-wrap{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-select-popup-wrap,.next-select-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-select-menu-wrapper{max-height:260px;overflow:auto;border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-select-menu-wrapper .next-select-menu{max-height:none;border:none}.next-select-menu{max-height:260px;overflow:auto}.next-select-menu .next-select-menu-empty-content{padding-left:8px;padding-right:8px;color:#888;color:var(--select-hint-color,#888)}.next-select-menu.next-select-auto-complete-menu.next-select-menu-empty{display:none}.next-select-menu .next-menu-item-text .next-icon{vertical-align:middle}.next-select-all{display:block;cursor:pointer;padding:0 8px;margin:0 12px 8px;border-bottom:1px solid #c0c6cc;border-bottom:1px solid var(--color-line1-2,#c0c6cc)}.next-select-all:hover{color:#0064c8;color:var(--color-link-3,#0064c8)}.next-select-all .next-menu-icon-selected.next-icon{display:inline-block!important;top:auto;color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-select-highlight{color:#0064c8;color:var(--select-highlight-color,#0064c8);font-size:12px;font-size:var(--select-highlight-font,12px)}.next-select-in-ie.next-select-trigger .next-select-values{overflow:visible}.next-select-in-ie.next-select-trigger .next-input-control,.next-select-in-ie.next-select-trigger .next-input-label{width:1px}.next-select-in-ie.next-select-trigger .next-input-control>*{display:table-cell;width:1%}.next-select-in-ie.next-select-trigger .next-select-arrow{display:table-cell}.next-select-in-ie.next-select-trigger .next-select-clear{display:none}.next-select-in-ie.next-select-trigger.next-select-multiple .next-select-inner,.next-select-in-ie.next-select-trigger.next-select-tag .next-select-inner{vertical-align:top}.next-select-in-ie.next-select-trigger .next-select-inner,.next-select-in-ie.next-select-trigger.next-select-single .next-select-values{display:inline-table}.next-select-in-ie.next-select-trigger.next-select-single .next-input.next-small .next-select-values{line-height:24px;line-height:var(--form-element-small-height,24px)}.next-select-in-ie.next-select-trigger.next-select-single .next-input.next-medium .next-select-values{line-height:32px;line-height:var(--form-element-medium-height,32px)}.next-select-in-ie.next-select-trigger.next-select-single .next-input.next-large .next-select-values{line-height:36px;line-height:var(--form-element-large-height,36px)}.next-select-in-ie.next-select-trigger .next-select-trigger-search>span{max-width:100px}.next-select-in-ie.next-select-trigger.next-select-single.next-select-in-ie-fixwidth .next-select-values{position:relative}.next-select-in-ie.next-select-trigger.next-select-single.next-select-in-ie-fixwidth .next-select-values>em{position:absolute;display:inline-block;height:100%;line-height:1;vertical-align:middle;overflow:hidden;left:4px;right:0;top:30%}.next-select-in-ie.next-select-trigger.next-select-single.next-inactive .next-select-values>em+.next-select-trigger-search,.next-select-in-ie.next-select-trigger.next-select-single.next-no-search .next-select-values>em+.next-select-trigger-search{filter:alpha(opacity=0);font-size:0}.next-select-in-ie.next-select-trigger.next-no-search .next-select-trigger-search input{color:inherit}@media screen and (-webkit-min-device-pixel-ratio:0){.next-select-multiple .next-select-compact .next-select-tag-compact{background:linear-gradient(90deg,hsla(0,0%,100%,0),#fff 10px);background:linear-gradient(90deg,hsla(0,0%,100%,0),var(--input-bg-color,#fff) 10px)}.next-select-multiple .next-disabled .next-select-tag-compact{background:linear-gradient(90deg,hsla(0,0%,100%,0),#f7f9fa 10px);background:linear-gradient(90deg,hsla(0,0%,100%,0),var(--input-disabled-bg-color,#f7f9fa) 10px)}}.next-select.next-select-multiple[dir=rtl] .next-select-compact .next-select-tag-compact{left:0;right:auto;padding:0 16px 0 4px;background:linear-gradient(270deg,hsla(0,0%,100%,0),#fff 10px);background:linear-gradient(270deg,hsla(0,0%,100%,0),var(--input-bg-color,#fff) 10px)}.next-list-header{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) solid var(--list-divider-color,#c0c6cc);color:#111;color:var(--list-title-color,#111)}.next-list-footer{border-top:1px solid #c0c6cc;border-top:var(--line-1,1px) solid var(--list-divider-color,#c0c6cc);color:#555;color:var(--list-content-color,#555)}.next-list-loading.next-loading{display:block}.next-list-empty{font-size:12px;font-size:var(--font-size-body-1,12px);color:#d1d5d9;color:var(--color-line1-4,#d1d5d9);padding:32px 0;text-align:center}.next-list-items{margin:0;padding:0;list-style:none}.next-list-item{display:table;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;color:#555;color:var(--list-content-color,#555)}.next-list-item-extra,.next-list-item-media{display:table-cell;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;min-width:1px;-ms-flex-negative:0;flex-shrink:0;vertical-align:top}.next-list-item-extra{color:#888;color:var(--list-extra-color,#888)}.next-list-item-content{display:table-cell;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;vertical-align:middle}.next-list-item-title{color:#111;color:var(--list-title-color,#111)}.next-list-medium .next-list-header{font-size:16px;font-size:var(--list-size-m-title-font-size,16px);font-weight:700;font-weight:var(--list-size-m-title-font-weight,bold)}.next-list-medium .next-list-footer,.next-list-medium .next-list-header{padding:16px 0;padding:var(--list-size-m-item-padding-tb,16px) var(--list-size-m-item-padding-lr,0)}.next-list-medium .next-list-item-media{padding-right:8px;padding-right:var(--list-size-m-item-media-margin,8px)}.next-list-medium .next-list-item-extra{padding-left:8px;padding-left:var(--list-size-m-item-media-margin,8px)}.next-list-medium .next-list-item{font-size:14px;font-size:var(--list-size-m-item-content-font-size,14px);line-height:1.5;line-height:var(--list-size-m-item-content-line-height,1.5);padding:16px 0;padding:var(--list-size-m-item-padding-tb,16px) var(--list-size-m-item-padding-lr,0)}.next-list-medium .next-list-item-title{font-weight:400;font-weight:var(--list-size-m-item-title-font-weight,normal);font-size:14px;font-size:var(--list-size-m-item-title-font-size,14px);line-height:1.5;line-height:var(--list-size-m-item-title-line-height,1.5)}.next-list-small .next-list-header{font-size:14px;font-size:var(--list-size-s-title-font-size,14px);font-weight:700;font-weight:var(--list-size-s-title-font-weight,bold)}.next-list-small .next-list-footer,.next-list-small .next-list-header{padding:8px 0;padding:var(--list-size-s-item-padding-tb,8px) var(--list-size-s-item-padding-lr,0)}.next-list-small .next-list-item-media{padding-right:8px;padding-right:var(--list-size-s-item-media-margin,8px)}.next-list-small .next-list-item-extra{padding-left:8px;padding-left:var(--list-size-s-item-media-margin,8px)}.next-list-small .next-list-item{font-size:12px;font-size:var(--list-size-s-item-content-font-size,12px);font-weight:400;font-weight:var(--list-size-s-item-title-font-weight,normal);line-height:1;line-height:var(--list-size-s-item-content-line-height,1);padding:8px 0;padding:var(--list-size-s-item-padding-tb,8px) var(--list-size-s-item-padding-lr,0)}.next-list-small .next-list-item-title{font-size:14px;font-size:var(--list-size-s-item-title-font-size,14px);line-height:1.5;line-height:var(--list-size-s-item-title-line-height,1.5)}.next-list-divider .next-list-item{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) solid var(--list-divider-color,#c0c6cc)}.next-list-divider .next-list-item:last-child{border-bottom:none}.next-list[dir=rtl] .next-list-item-media{padding-left:8px;padding-left:var(--list-size-m-item-media-margin,8px);padding-right:0}.next-list[dir=rtl] .next-list-item-extra{padding-right:8px;padding-right:var(--list-size-m-item-media-margin,8px);padding-left:0}.next-list[dir=rtl] .next-list-small .next-list-item-media{padding-left:8px;padding-left:var(--list-size-s-item-media-margin,8px);padding-right:0}.next-list[dir=rtl] .next-list-small .next-list-item-extra{padding-right:8px;padding-right:var(--list-size-s-item-media-margin,8px);padding-left:0}.next-menu-btn{display:inline-block;-webkit-box-shadow:none;box-shadow:none}.next-menu-btn-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-menu-btn .next-icon{-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.next-menu-btn .next-menu-btn-arrow:before{content:"\ea1f";content:var(--menu-btn-fold-icon-content,"")}.next-menu-btn.next-expand .next-menu-btn-arrow{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-menu-btn-symbol-unfold:before{content:"";content:var(--menu-btn-unfold-icon-content,"")}.next-menu-btn.next-btn-normal .next-menu-btn-arrow{color:#666;color:var(--menu-btn-pure-text-normal-icon-color,#666)}.next-menu-btn.next-btn-normal:hover .next-menu-btn-arrow{color:#333;color:var(--btn-pure-normal-color-hover,#333)}.next-menu-btn.next-btn-secondary .next-menu-btn-arrow{color:#666;color:var(--menu-btn-pure-text-secondary-icon-color,#666)}.next-menu-btn.next-btn-secondary:hover .next-menu-btn-arrow{color:#333;color:var(--btn-pure-secondary-color-hover,#333)}.next-menu-btn.next-btn-secondary.next-btn-text:hover .next-menu-btn-arrow{color:#333;color:var(--btn-text-secondary-color-hover,#333)}.next-menu-btn.next-btn-primary .next-menu-btn-arrow{color:#fff;color:var(--menu-btn-pure-text-primary-icon-color,#fff)}.next-menu-btn.next-btn-primary:hover .next-menu-btn-arrow{color:#fff;color:var(--btn-pure-primary-color-hover,#fff)}.next-menu-btn.next-btn-text.next-btn-normal .next-menu-btn-arrow{color:#111;color:var(--menu-btn-text-text-normal-icon-color,#111)}.next-menu-btn.next-btn-text.next-btn-normal:hover .next-menu-btn-arrow{color:#0064c8;color:var(--btn-text-normal-color-hover,#0064c8)}.next-menu-btn.next-btn-text.next-btn-primary .next-menu-btn-arrow{color:#0064c8;color:var(--menu-btn-text-text-primary-icon-color,#0064c8)}.next-menu-btn.next-btn-text.next-btn-primary:hover .next-menu-btn-arrow{color:#0064c8;color:var(--btn-text-primary-color-hover,#0064c8)}.next-menu-btn.next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:#0064c8;color:var(--menu-btn-ghost-light-icon-color,#0064c8)}.next-menu-btn.next-btn-ghost.next-btn-light:hover .next-menu-btn-arrow{color:#fff;color:var(--btn-ghost-light-color-hover,#fff)}.next-menu-btn.next-btn-ghost.next-btn-dark .next-menu-btn-arrow{color:#fff;color:var(--menu-btn-ghost-dark-icon-color,#fff)}.next-menu-btn.next-btn-ghost.next-btn-dark:hover .next-menu-btn-arrow{color:#fff;color:var(--btn-ghost-dark-color-hover,#fff)}.next-menu-btn.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text.disabled .next-menu-btn-arrow,.next-menu-btn.next-btn-text[disabled] .next-menu-btn-arrow,.next-menu-btn[disabled] .next-menu-btn-arrow{color:#c1c1c1;color:var(--menu-btn-disabled-icon-color,#c1c1c1)}.next-menu-btn[disabled].next-btn-ghost.next-btn-dark .next-menu-btn-arrow{color:hsla(0,0%,100%,.25);color:var(--menu-btn-ghost-dark-disabled-icon-color,hsla(0,0%,100%,.25))}.next-menu-btn[disabled].next-btn-ghost.next-btn-light .next-menu-btn-arrow{color:#c1c1c1;color:var(--menu-btn-ghost-light-disabled-icon-color,#c1c1c1)}.next-nav{min-width:auto;border-radius:0}.next-nav,.next-nav *,.next-nav :after,.next-nav :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-nav-icon.next-icon{margin-right:4px;font-weight:inherit}.next-nav-icon.next-icon .next-icon-remote,.next-nav-icon.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-nav-group-label{height:40px;height:var(--nav-group-height,40px);line-height:40px;line-height:var(--nav-group-height,40px);font-size:12px;font-size:var(--nav-group-font-size,12px)}.next-nav-item .next-menu-item-text>span,.next-nav-item .next-nav-group-label>span{opacity:1;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.next-nav-item .next-menu-item-text>a{text-decoration:none;color:inherit}.next-nav-item.next-focused .next-menu-hoz-icon-arrow.next-icon,.next-nav-item.next-focused .next-menu-icon-arrow.next-icon,.next-nav-item .next-menu-hoz-icon-arrow.next-icon,.next-nav-item .next-menu-icon-arrow.next-icon,.next-nav-item.next-opened .next-menu-hoz-icon-arrow.next-icon,.next-nav-item.next-opened .next-menu-icon-arrow.next-icon,.next-nav-item.next-selected .next-menu-hoz-icon-arrow.next-icon,.next-nav-item.next-selected .next-menu-icon-arrow.next-icon,.next-nav-item:hover .next-menu-hoz-icon-arrow.next-icon,.next-nav-item:hover .next-menu-icon-arrow.next-icon{color:inherit;top:0;-webkit-transform-origin:center 50%;-ms-transform-origin:center 50%;transform-origin:center 50%}.next-nav.next-active .next-nav-item:before{position:absolute;-webkit-transition:all .3s ease;transition:all .3s ease;content:""}.next-nav.next-hoz{padding:0;height:44px;height:calc(var(--nav-hoz-height, 44px) + var(--nav-hoz-item-margin-tb, 0px)*2);line-height:42px;line-height:calc(var(--nav-hoz-height, 44px) - var(--popup-local-border-width, 1px)*2);font-size:12px;font-size:var(--nav-hoz-font-size,12px)}.next-nav.next-hoz .next-menu-item.next-nav-item{margin-left:0;margin-left:var(--nav-hoz-item-margin-lr,0);margin-right:0;margin-right:var(--nav-hoz-item-margin-lr,0);padding:0 20px;padding:0 var(--nav-hoz-item-padding-lr,20px);border-radius:0;border-radius:var(--nav-hoz-item-corner,0)}.next-nav.next-hoz .next-menu-item,.next-nav.next-hoz .next-menu-sub-menu-wrapper>.next-menu-item{margin-top:0;margin-top:var(--nav-hoz-item-margin-tb,0);margin-bottom:0;margin-bottom:var(--nav-hoz-item-margin-tb,0)}.next-nav.next-hoz .next-menu-item-inner{height:42px;height:calc(var(--nav-hoz-height, 44px) - var(--popup-local-border-width, 1px)*2);font-size:12px;font-size:var(--nav-hoz-font-size,12px)}.next-nav.next-hoz .next-nav-group-label .next-menu-item-inner{height:40px;height:var(--nav-group-height,40px);line-height:40px;line-height:var(--nav-group-height,40px);font-size:12px;font-size:var(--nav-group-font-size,12px)}.next-nav.next-hoz .next-menu-header{float:left}.next-nav.next-hoz .next-menu-footer,.next-nav.next-hoz .next-menu-header{height:42px;height:calc(var(--nav-hoz-height, 44px) - var(--popup-local-border-width, 1px)*2)}.next-nav.next-hoz .next-menu-footer{float:right}.next-nav.next-hoz .next-nav-item:before{width:0;left:50%;height:2px;height:var(--nav-hoz-item-selected-active-line,2px)}.next-nav.next-hoz .next-nav-item:hover:before{height:0;height:var(--nav-hoz-item-hover-active-line,0)}.next-nav.next-hoz.next-top .next-nav-item:before{top:-1px;top:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-hoz.next-bottom .next-nav-item:before{bottom:-1px;bottom:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-hoz .next-selected.next-nav-item:before{width:100%;left:0;height:2px;height:var(--nav-hoz-item-selected-active-line,2px)}.next-nav.next-ver{padding:0;-webkit-transition:width .3s ease;transition:width .3s ease;line-height:40px;line-height:var(--nav-ver-height,40px);font-size:12px;font-size:var(--nav-ver-font-size,12px)}.next-nav.next-ver .next-menu-item.next-nav-item{margin-left:0;margin-left:var(--nav-ver-item-margin-lr,0);margin-right:0;margin-right:var(--nav-ver-item-margin-lr,0);padding:0 20px;padding:0 var(--nav-ver-item-padding-lr,20px);border-radius:0;border-radius:var(--nav-ver-item-corner,0)}.next-nav.next-ver .next-menu-item:not(:first-child),.next-nav.next-ver .next-menu-sub-menu-wrapper:not(:first-child)>.next-menu-item{margin-top:0;margin-top:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver .next-menu-item:not(:last-child),.next-nav.next-ver .next-menu-sub-menu-wrapper:not(:last-child)>.next-menu-item{margin-bottom:0;margin-bottom:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver .next-menu-item-inner{height:40px;height:var(--nav-ver-height,40px);font-size:12px;font-size:var(--nav-ver-font-size,12px)}.next-nav.next-ver .next-nav-group-label .next-menu-item-inner{height:40px;height:var(--nav-group-height,40px);line-height:40px;line-height:var(--nav-group-height,40px);font-size:12px;font-size:var(--nav-group-font-size,12px)}.next-nav.next-ver>.next-menu-item:first-child,.next-nav.next-ver>.next-menu-sub-menu-wrapper:first-child>.next-menu-item{margin-top:0;margin-top:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver>.next-menu-item:last-child,.next-nav.next-ver>.next-menu-sub-menu-wrapper:last-child>.next-menu-item{margin-bottom:0;margin-bottom:var(--nav-ver-item-margin-tb,0)}.next-nav.next-ver .next-menu-sub-menu{line-height:40px;line-height:var(--nav-ver-sub-nav-height,40px)}.next-nav.next-ver .next-menu-sub-menu .next-menu-item-inner{height:40px;height:var(--nav-ver-sub-nav-height,40px);font-size:12px;font-size:var(--nav-ver-sub-nav-font-size,12px)}.next-nav.next-ver .next-nav-item:before{height:0;top:50%;width:2px;width:var(--nav-ver-item-selected-active-line,2px)}.next-nav.next-ver .next-nav-item:hover:before{width:0;width:var(--nav-ver-item-hover-active-line,0)}.next-nav.next-ver.next-left .next-nav-item:before,.next-nav.next-ver.next-top .next-nav-item:before{left:-1px;left:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-ver.next-bottom .next-nav-item:before,.next-nav.next-ver.next-right .next-nav-item:before{right:-1px;right:calc(0px - var(--popup-local-border-width, 1px))}.next-nav.next-ver .next-selected.next-nav-item:before{height:100%;top:0;width:2px;width:var(--nav-ver-item-selected-active-line,2px)}.next-nav.next-primary{border-width:0;border-width:var(--nav-primary-border-width,0);background:#111;background:var(--nav-primary-bg-color,#111);border-color:#111;border-color:var(--nav-primary-border-color,#111);color:#fff;color:var(--nav-primary-text-color,#fff);font-weight:400;font-weight:var(--nav-primary-text-style,normal);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--nav-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--nav-primary-shadow,0 4px 8px 0 rgba(0,0,0,.16))}.next-nav.next-primary.next-hoz{line-height:var(--nav-hoz-height,44px);line-height:44px;line-height:calc(var(--nav-hoz-height, 44px) - var(--nav-primary-border-width, 0px)*2)}.next-nav.next-primary.next-hoz .next-menu-footer,.next-nav.next-primary.next-hoz .next-menu-header,.next-nav.next-primary.next-hoz .next-menu-item-inner{line-height:44px;line-height:var(--nav-hoz-height,44px);height:44px;height:calc(var(--nav-hoz-height, 44px) - var(--nav-primary-border-width, 0px)*2)}.next-nav.next-primary.next-hoz.next-top .next-nav-item:before{top:0;top:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary.next-hoz.next-bottom .next-nav-item:before{bottom:0;bottom:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary.next-ver.next-left .next-nav-item:before{left:0;left:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary.next-ver.next-right .next-nav-item:before{right:0;right:calc(0px - var(--nav-primary-border-width, 0px))}.next-nav.next-primary .next-nav-item.next-menu-item{background:#111;background:var(--nav-primary-bg-color,#111);color:#fff;color:var(--nav-primary-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-focused,.next-nav.next-primary .next-nav-item.next-menu-item:hover{background:#000;background:var(--nav-primary-item-hover-bg-color,#000);color:#fff;color:var(--nav-primary-item-hover-text-color,#fff);font-weight:400;font-weight:var(--nav-primary-item-hover-text-style,normal)}.next-nav.next-primary .next-nav-item.next-menu-item.next-selected{background:#000;background:var(--nav-primary-item-selected-bg-color,#000);color:#fff;color:var(--nav-primary-item-selected-text-color,#fff);font-weight:700;font-weight:var(--nav-primary-item-selected-text-style,bold)}.next-nav.next-primary .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-primary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-primary-item-opened-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-primary-item-childselected-text-style,normal);background:transparent;background:var(--nav-primary-item-childselected-bg-color,transparent);color:#fff;color:var(--nav-primary-item-childselected-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#fff;color:var(--nav-primary-item-opened-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#fff;color:var(--nav-primary-item-childselected-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item:before{background:#0064c8;background:var(--nav-primary-item-selected-active-color,#0064c8)}.next-nav.next-primary .next-nav-item.next-menu-item:hover:before{background:#0064c8;background:var(--nav-primary-item-hover-active-color,#0064c8)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-primary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-primary-item-opened-text-color,#fff)}.next-nav.next-primary .next-nav-group-label{color:#888;color:var(--nav-primary-group-text-color,#888);font-weight:400;font-weight:var(--nav-primary-group-text-style,normal)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item{background:#111;background:var(--nav-primary-sub-nav-bg-color,#111);color:#fff;color:var(--nav-primary-sub-nav-text-color,#fff);font-weight:400;font-weight:var(--nav-primary-sub-nav-text-style,normal)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-primary .next-menu-sub-menu .next-menu-item:hover{background:#000;background:var(--nav-primary-sub-nav-hover-bg-color,#000);color:#fff;color:var(--nav-primary-sub-nav-hover-text-color,#fff)}.next-nav.next-primary .next-menu-sub-menu .next-menu-item.next-selected{background:#000;background:var(--nav-primary-sub-nav-selected-bg-color,#000);color:#fff;color:var(--nav-primary-sub-nav-selected-text-color,#fff)}.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#c1c1c1;color:var(--nav-primary-item-disabled-text-color,#c1c1c1);cursor:not-allowed}.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-primary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#c1c1c1;color:var(--nav-primary-item-disabled-text-color,#c1c1c1)}.next-nav.next-secondary{border-width:0;border-width:var(--nav-secondary-border-width,0);background:#0064c8;background:var(--nav-secondary-bg-color,#0064c8);border-color:#0064c8;border-color:var(--nav-secondary-border-color,#0064c8);color:#fff;color:var(--nav-secondary-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-text-style,normal);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--nav-secondary-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--nav-secondary-shadow,0 4px 8px 0 rgba(0,0,0,.16))}.next-nav.next-secondary.next-hoz{line-height:var(--nav-hoz-height,44px);line-height:44px;line-height:calc(var(--nav-hoz-height, 44px) - var(--nav-secondary-border-width, 0px)*2)}.next-nav.next-secondary.next-hoz .next-menu-footer,.next-nav.next-secondary.next-hoz .next-menu-header,.next-nav.next-secondary.next-hoz .next-menu-item-inner{line-height:44px;line-height:var(--nav-hoz-height,44px);height:44px;height:calc(var(--nav-hoz-height, 44px) - var(--nav-secondary-border-width, 0px)*2)}.next-nav.next-secondary.next-hoz.next-top .next-nav-item:before{top:0;top:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary.next-hoz.next-bottom .next-nav-item:before{bottom:0;bottom:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary.next-ver.next-left .next-nav-item:before{left:0;left:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary.next-ver.next-right .next-nav-item:before{right:0;right:calc(0px - var(--nav-secondary-border-width, 0px))}.next-nav.next-secondary .next-nav-item.next-menu-item{background:#0064c8;background:var(--nav-secondary-bg-color,#0064c8);color:#fff;color:var(--nav-secondary-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-focused,.next-nav.next-secondary .next-nav-item.next-menu-item:hover{background:#002850;background:var(--nav-secondary-item-hover-bg-color,#002850);color:#fff;color:var(--nav-secondary-item-hover-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-item-hover-text-style,normal)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-selected{background:#002850;background:var(--nav-secondary-item-selected-bg-color,#002850);color:#fff;color:var(--nav-secondary-item-selected-text-color,#fff);font-weight:700;font-weight:var(--nav-secondary-item-selected-text-style,bold)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-secondary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-secondary-item-opened-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-secondary-item-childselected-text-style,normal);background:transparent;background:var(--nav-secondary-item-childselected-bg-color,transparent);color:#fff;color:var(--nav-secondary-item-childselected-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#fff;color:var(--nav-secondary-item-opened-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#fff;color:var(--nav-secondary-item-childselected-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item:before{background:#002850;background:var(--nav-secondary-item-selected-active-color,#002850)}.next-nav.next-secondary .next-nav-item.next-menu-item:hover:before{background:#002850;background:var(--nav-secondary-item-hover-active-color,#002850)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-secondary-item-opened-bg-color,transparent);color:#fff;color:var(--nav-secondary-item-opened-text-color,#fff)}.next-nav.next-secondary .next-nav-group-label{color:#fff;color:var(--nav-secondary-group-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-group-text-style,normal)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item{background:#0064c8;background:var(--nav-secondary-sub-nav-bg-color,#0064c8);color:#fff;color:var(--nav-secondary-sub-nav-text-color,#fff);font-weight:400;font-weight:var(--nav-secondary-sub-nav-text-style,normal)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-secondary .next-menu-sub-menu .next-menu-item:hover{background:#002850;background:var(--nav-secondary-sub-nav-hover-bg-color,#002850);color:#fff;color:var(--nav-secondary-sub-nav-hover-text-color,#fff)}.next-nav.next-secondary .next-menu-sub-menu .next-menu-item.next-selected{background:#002850;background:var(--nav-secondary-sub-nav-selected-bg-color,#002850);color:#fff;color:var(--nav-secondary-sub-nav-selected-text-color,#fff)}.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#f7f9fa;color:var(--nav-secondary-item-disabled-text-color,#f7f9fa);cursor:not-allowed}.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-secondary .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#f7f9fa;color:var(--nav-secondary-item-disabled-text-color,#f7f9fa)}.next-nav.next-normal{border-color:#e3e4e6;border-color:var(--nav-normal-border-color,#e3e4e6);font-weight:400;font-weight:var(--nav-normal-text-style,normal);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--nav-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16));box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:var(--nav-normal-shadow,0 4px 8px 0 rgba(0,0,0,.16))}.next-nav.next-normal,.next-nav.next-normal .next-nav-item.next-menu-item{background:#fff;background:var(--nav-normal-bg-color,#fff);color:#111;color:var(--nav-normal-text-color,#111)}.next-nav.next-normal .next-nav-item.next-menu-item.next-focused,.next-nav.next-normal .next-nav-item.next-menu-item:hover{background:#fff;background:var(--nav-normal-item-hover-bg-color,#fff);color:#0064c8;color:var(--nav-normal-item-hover-text-color,#0064c8);font-weight:400;font-weight:var(--nav-normal-item-hover-text-style,normal)}.next-nav.next-normal .next-nav-item.next-menu-item.next-selected{background:#f7f9fa;background:var(--nav-normal-item-selected-bg-color,#f7f9fa);color:#0064c8;color:var(--nav-normal-item-selected-text-color,#0064c8);font-weight:700;font-weight:var(--nav-normal-item-selected-text-style,bold)}.next-nav.next-normal .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-normal-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-normal-item-opened-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-normal-item-childselected-text-style,normal);background:transparent;background:var(--nav-normal-item-childselected-bg-color,transparent);color:#0064c8;color:var(--nav-normal-item-childselected-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#0064c8;color:var(--nav-normal-item-opened-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#0064c8;color:var(--nav-normal-item-childselected-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item:before{background:#0064c8;background:var(--nav-normal-item-selected-active-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item:hover:before{background:#0064c8;background:var(--nav-normal-item-hover-active-color,#0064c8)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-normal-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-normal-item-opened-text-color,#0064c8)}.next-nav.next-normal .next-nav-group-label{color:#888;color:var(--nav-normal-group-text-color,#888);font-weight:400;font-weight:var(--nav-normal-group-text-style,normal)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item{background:#fff;background:var(--nav-normal-sub-nav-bg-color,#fff);color:#111;color:var(--nav-normal-sub-nav-text-color,#111);font-weight:400;font-weight:var(--nav-normal-sub-nav-text-style,normal)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-normal .next-menu-sub-menu .next-menu-item:hover{background:#f7f9fa;background:var(--nav-normal-sub-nav-hover-bg-color,#f7f9fa);color:#0064c8;color:var(--nav-normal-sub-nav-hover-text-color,#0064c8)}.next-nav.next-normal .next-menu-sub-menu .next-menu-item.next-selected{background:#f7f9fa;background:var(--nav-normal-sub-nav-selected-bg-color,#f7f9fa);color:#0064c8;color:var(--nav-normal-sub-nav-selected-text-color,#0064c8)}.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#888;color:var(--nav-normal-item-disabled-text-color,#888);cursor:not-allowed}.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-normal .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#888;color:var(--nav-normal-item-disabled-text-color,#888)}.next-nav.next-line{background:transparent;background:var(--nav-line-bg-color,transparent);border-color:#c0c6cc;border-color:var(--nav-line-border-color,#c0c6cc);color:#111;color:var(--nav-line-text-color,#111);font-weight:400;font-weight:var(--nav-line-text-style,normal);-webkit-box-shadow:none;box-shadow:none}.next-nav.next-line.next-hoz{border-right-color:transparent;border-right-color:var(--nav-line-bg-color,transparent)}.next-nav.next-line.next-hoz,.next-nav.next-line.next-ver{border-top-color:transparent;border-top-color:var(--nav-line-bg-color,transparent);border-left-color:transparent;border-left-color:var(--nav-line-bg-color,transparent)}.next-nav.next-line.next-ver{border-bottom-color:transparent;border-bottom-color:var(--nav-line-bg-color,transparent)}.next-nav.next-line .next-nav-item.next-menu-item{background:transparent;background:var(--nav-line-bg-color,transparent);color:#111;color:var(--nav-line-text-color,#111)}.next-nav.next-line .next-nav-item.next-menu-item.next-focused,.next-nav.next-line .next-nav-item.next-menu-item:hover{background:transparent;background:var(--nav-line-item-hover-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-hover-text-color,#0064c8);font-weight:400;font-weight:var(--nav-line-item-hover-text-style,normal)}.next-nav.next-line .next-nav-item.next-menu-item.next-selected{background:transparent;background:var(--nav-line-item-selected-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-selected-text-color,#0064c8);font-weight:700;font-weight:var(--nav-line-item-selected-text-style,bold)}.next-nav.next-line .next-nav-item.next-menu-item.next-opened{background:transparent;background:var(--nav-line-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-opened-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-child-selected{font-weight:400;font-weight:var(--nav-line-item-childselected-text-style,normal);background:transparent;background:var(--nav-line-item-childselected-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-childselected-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-opened.next-nav-popup{color:#0064c8;color:var(--nav-line-item-opened-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-child-selected.next-nav-popup{color:#0064c8;color:var(--nav-line-item-childselected-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item:before{background:#0064c8;background:var(--nav-line-item-selected-active-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item:hover:before{background:#0064c8;background:var(--nav-line-item-hover-active-color,#0064c8)}.next-nav.next-line .next-menu-sub-menu .next-menu-item.next-opened{background:transparent;background:var(--nav-line-item-opened-bg-color,transparent);color:#0064c8;color:var(--nav-line-item-opened-text-color,#0064c8)}.next-nav.next-line .next-nav-group-label{color:#888;color:var(--nav-line-group-text-color,#888);font-weight:400;font-weight:var(--nav-line-group-text-style,normal)}.next-nav.next-line .next-menu-sub-menu .next-menu-item{background:transparent;background:var(--nav-line-sub-nav-bg-color,transparent);color:#111;color:var(--nav-line-sub-nav-text-color,#111);font-weight:400;font-weight:var(--nav-line-sub-nav-text-style,normal)}.next-nav.next-line .next-menu-sub-menu .next-menu-item.next-focused,.next-nav.next-line .next-menu-sub-menu .next-menu-item:hover{background:transparent;background:var(--nav-line-sub-nav-hover-bg-color,transparent);color:#0064c8;color:var(--nav-line-sub-nav-hover-text-color,#0064c8)}.next-nav.next-line .next-menu-sub-menu .next-menu-item.next-selected{background:transparent;background:var(--nav-line-sub-nav-selected-bg-color,transparent);color:#0064c8;color:var(--nav-line-sub-nav-selected-text-color,#0064c8)}.next-nav.next-line .next-nav-item.next-menu-item.next-disabled,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a{color:#888;color:var(--nav-line-item-disabled-text-color,#888);cursor:not-allowed}.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-icon-arrow,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-icon-selected,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-arrow,.next-nav.next-line .next-nav-item.next-menu-item.next-disabled .next-menu-item-text>a .next-menu-icon-selected{color:#888;color:var(--nav-line-item-disabled-text-color,#888)}.next-nav.next-icon-only.next-custom-icon-only-width{text-align:center}.next-nav.next-icon-only .next-menu-item-inner{text-overflow:clip}.next-nav.next-icon-only.next-normal .next-nav-icon.next-icon{margin-left:0;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--popup-local-border-width, 1px));margin-right:0;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--popup-local-border-width, 1px))}.next-nav.next-icon-only.next-normal .next-nav-icon.next-icon .next-icon-remote,.next-nav.next-icon-only.next-normal .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only.next-primary .next-nav-icon.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-primary-border-width, 0px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-primary-border-width, 0px))}.next-nav.next-icon-only.next-primary .next-nav-icon.next-icon .next-icon-remote,.next-nav.next-icon-only.next-primary .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only.next-secondary .next-nav-icon.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-secondary-border-width, 0px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px) - var(--nav-secondary-border-width, 0px))}.next-nav.next-icon-only.next-secondary .next-nav-icon.next-icon .next-icon-remote,.next-nav.next-icon-only.next-secondary .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only .next-nav-icon-only-arrow.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));-webkit-transition:all .1s linear;transition:all .1s linear;-webkit-transform-origin:center 50%;-ms-transform-origin:center 50%;transform-origin:center 50%}.next-nav.next-icon-only .next-nav-icon-only-arrow.next-icon .next-icon-remote,.next-nav.next-icon-only .next-nav-icon-only-arrow.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px))}.next-nav.next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down .next-icon-remote,.next-nav.next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav.next-icon-only .next-nav-item.next-selected .next-nav-icon.next-icon{-webkit-animation:pulse .3s cubic-bezier(.23,1,.32,1);animation:pulse .3s cubic-bezier(.23,1,.32,1)}.next-nav.next-icon-only .next-menu-hoz-icon-arrow,.next-nav.next-icon-only .next-menu-icon-arrow{display:none}.next-nav-embeddable.next-normal,.next-nav-embeddable.next-primary,.next-nav-embeddable.next-secondary{height:100%;background:transparent;-webkit-box-shadow:none;box-shadow:none;border:none}.next-nav-embeddable.next-normal .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-normal .next-nav-item.next-menu-item,.next-nav-embeddable.next-primary .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-primary .next-nav-item.next-menu-item,.next-nav-embeddable.next-secondary .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-secondary .next-nav-item.next-menu-item{background:transparent}.next-nav-embeddable.next-normal.next-icon-only .next-nav-icon.next-icon,.next-nav-embeddable.next-primary.next-icon-only .next-nav-icon.next-icon,.next-nav-embeddable.next-secondary.next-icon-only .next-nav-icon.next-icon{margin-left:1px;margin-left:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px));margin-right:1px;margin-right:calc(29px - var(--nav-icon-only-font-size, 16px)/2 - var(--nav-ver-item-padding-lr, 20px))}.next-nav-embeddable.next-normal.next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav-embeddable.next-normal.next-icon-only .next-nav-icon.next-icon:before,.next-nav-embeddable.next-primary.next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav-embeddable.next-primary.next-icon-only .next-nav-icon.next-icon:before,.next-nav-embeddable.next-secondary.next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav-embeddable.next-secondary.next-icon-only .next-nav-icon.next-icon:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-nav-embeddable.next-nav.next-hoz .next-menu-item-inner,.next-nav-embeddable.next-nav.next-hoz .next-menu-sub-menu .next-menu-item,.next-nav-embeddable.next-nav.next-hoz .next-nav-item.next-menu-item{height:100%}.next-nav-embeddable,.next-nav-embeddable .next-nav-item.next-disabled,.next-nav-embeddable .next-nav-item.next-disabled .next-menu-item-text>a{background:transparent;border:none}.next-nav[dir=rtl] .next-nav-icon.next-icon{margin-left:4px;margin-right:0}.next-nav[dir=rtl] .next-nav-icon.next-icon .next-icon-remote,.next-nav[dir=rtl] .next-nav-icon.next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-nav[dir=rtl].next-hoz .next-menu-header{float:right}.next-nav[dir=rtl].next-hoz .next-menu-footer{float:left}.next-nav[dir=rtl].next-hoz .next-nav-item:before{width:0;left:50%}.next-nav[dir=rtl].next-hoz .next-selected.next-nav-item:before{width:100%;left:auto;right:0}.next-nav[dir=rtl].next-ver.next-left .next-nav-item:before{right:0;right:-1px;right:calc(0px - var(--popup-local-border-width, 1px));left:auto}.next-nav[dir=rtl].next-ver.next-right .next-nav-item:before{left:0;left:-1px;left:calc(0px - var(--popup-local-border-width, 1px));right:auto}.next-nav[dir=rtl].next-primary.next-ver.next-left .next-nav-item:before{right:0;right:calc(0px - var(--nav-primary-border-width, 0px));left:auto}.next-nav[dir=rtl].next-primary.next-ver.next-right .next-nav-item:before{left:0;left:calc(0px - var(--nav-primary-border-width, 0px));right:auto}.next-nav[dir=rtl].next-secondary.next-ver.next-left .next-nav-item:before{right:0;right:calc(0px - var(--nav-secondary-border-width, 0px));left:auto}.next-nav[dir=rtl].next-secondary.next-ver.next-right .next-nav-item:before{left:0;left:calc(0px - var(--nav-secondary-border-width, 0px));right:auto}.next-nav[dir=rtl] .next-nav.next-line.next-ver{border-top-color:transparent;border-top-color:var(--nav-line-bg-color,transparent);border-right-color:transparent;border-right-color:var(--nav-line-bg-color,transparent);border-left-color:transparent;border-bottom-color:transparent;border-bottom-color:var(--nav-line-bg-color,transparent)}.next-nav[dir=rtl].next-icon-only .next-nav-icon-only-arrow.next-icon,.next-nav[dir=rtl].next-icon-only .next-nav-icon.next-icon,.next-nav[dir=rtl].next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down{margin-left:0;margin-right:1px;margin-right:calc(9px - var(--nav-icon-only-font-size, 16px)/2)}.next-nav[dir=rtl].next-icon-only .next-nav-icon-only-arrow.next-icon .next-icon-remote,.next-nav[dir=rtl].next-icon-only .next-nav-icon-only-arrow.next-icon:before,.next-nav[dir=rtl].next-icon-only .next-nav-icon.next-icon .next-icon-remote,.next-nav[dir=rtl].next-icon-only .next-nav-icon.next-icon:before,.next-nav[dir=rtl].next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down .next-icon-remote,.next-nav[dir=rtl].next-icon-only .next-nav-item.next-opened .next-nav-icon-only-arrow.next-icon-arrow-down:before{width:16px;width:var(--nav-icon-only-font-size,16px);font-size:16px;font-size:var(--nav-icon-only-font-size,16px);line-height:inherit}.next-number-picker{display:inline-block}.next-number-picker,.next-number-picker *,.next-number-picker :after,.next-number-picker :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-number-picker .next-btn{padding:0!important;line-height:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.next-number-picker-normal .next-input{width:100%}.next-number-picker-normal .next-input .next-input-control{padding-right:0;height:100%}.next-number-picker-normal:not(.next-number-picker-no-trigger) .next-input input{padding-right:2px}.next-number-picker-normal .next-btn{display:block}.next-number-picker-normal .next-btn:hover{z-index:1}.next-number-picker-normal .next-btn:first-child{border-right:none;border-top:none;height:50%;border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.next-number-picker-normal .next-btn:last-child{border-right:none;border-bottom:none;margin-top:-1px;height:calc(50% + 1px);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:0}.next-number-picker-normal .next-number-picker-handler{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;height:100%;display:block}.next-number-picker-normal:not(.next-number-picker-show-trigger) .next-number-picker-handler{opacity:0}.next-number-picker-normal.hover .next-number-picker-handler,.next-number-picker-normal:hover .next-number-picker-handler{opacity:1}.next-number-picker-normal .next-input.next-disabled .next-number-picker-handler{opacity:0}.next-number-picker-normal .next-number-picker-up-icon:before{content:"\ea2f";content:var(--number-picker-normal-up-icon,"")}.next-number-picker-normal .next-number-picker-down-icon:before{content:"\ea37";content:var(--number-picker-normal-down-icon,"")}.next-number-picker-normal.next-small{width:68px}.next-number-picker-normal.next-small .next-btn{width:20px;width:var(--number-picker-normal-s-button-width,20px)}.next-number-picker-normal.next-small .next-btn:first-child{border-top-right-radius:2px;border-top-right-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal.next-small .next-btn:last-child{border-bottom-right-radius:2px;border-bottom-right-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal.next-small .next-icon .next-icon-remote,.next-number-picker-normal.next-small .next-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-number-picker-normal.next-small .next-icon{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-number-picker-normal.next-small .next-icon:before{width:16px;font-size:16px}}.next-number-picker-normal.next-medium{width:140px;width:var(--number-picker-normal-m-input-width,140px)}.next-number-picker-normal.next-medium .next-btn{width:40px;width:var(--number-picker-normal-m-button-width,40px)}.next-number-picker-normal.next-medium .next-btn:first-child{border-top-right-radius:2px;border-top-right-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal.next-medium .next-btn:last-child{border-bottom-right-radius:2px;border-bottom-right-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal.next-medium .next-icon .next-icon-remote,.next-number-picker-normal.next-medium .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-number-picker-normal.next-large{width:80px;width:var(--number-picker-normal-l-input-width,80px)}.next-number-picker-normal.next-large .next-btn{width:20px;width:var(--number-picker-normal-l-button-width,20px)}.next-number-picker-normal.next-large .next-btn:first-child{border-top-right-radius:2px;border-top-right-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal.next-large .next-btn:last-child{border-bottom-right-radius:2px;border-bottom-right-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal.next-large .next-icon .next-icon-remote,.next-number-picker-normal.next-large .next-icon:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-number-picker-normal.next-large .next-icon{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-number-picker-normal.next-large .next-icon:before{width:16px;font-size:16px}}.next-number-picker-inline input{text-align:center}.next-number-picker-inline .next-input input{padding:0}.next-number-picker-inline .next-number-picker-add-icon:before{content:"\ea27";content:var(--number-picker-inline-add-icon,"")}.next-number-picker-inline .next-number-picker-minus-icon:before{content:"\e8ae";content:var(--number-picker-inline-minus-icon,"")}.next-number-picker-inline.next-small{width:68px;min-width:72px;min-width:calc(var(--form-element-small-height, 24px)*3)}.next-number-picker-inline.next-small .next-icon .next-icon-remote,.next-number-picker-inline.next-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-number-picker-inline.next-small .next-btn{height:24px;height:var(--form-element-small-height,24px)}.next-number-picker-inline.next-small .next-before .next-btn{margin-right:2px;margin-right:var(--number-picker-inline-s-button-margin,2px);border-top-left-radius:2px;border-top-left-radius:var(--number-picker-inline-s-button-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--number-picker-inline-s-button-corner,2px)}.next-number-picker-inline.next-small .next-after .next-btn{margin-left:2px;margin-left:var(--number-picker-inline-s-button-margin,2px);border-top-right-radius:2px;border-top-right-radius:var(--number-picker-inline-s-button-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--number-picker-inline-s-button-corner,2px)}.next-number-picker-inline.next-medium{width:140px;width:var(--number-picker-inline-m-input-width,140px);min-width:96px;min-width:calc(var(--form-element-medium-height, 32px)*3)}.next-number-picker-inline.next-medium .next-icon .next-icon-remote,.next-number-picker-inline.next-medium .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-number-picker-inline.next-medium .next-btn{height:32px;height:var(--form-element-medium-height,32px)}.next-number-picker-inline.next-medium .next-before .next-btn{margin-right:0;margin-right:var(--number-picker-inline-m-button-margin,0);border-top-left-radius:2px;border-top-left-radius:var(--number-picker-inline-m-button-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--number-picker-inline-m-button-corner,2px)}.next-number-picker-inline.next-medium .next-after .next-btn{margin-left:0;margin-left:var(--number-picker-inline-m-button-margin,0);border-top-right-radius:2px;border-top-right-radius:var(--number-picker-inline-m-button-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--number-picker-inline-m-button-corner,2px)}.next-number-picker-inline.next-large{width:128px;width:var(--number-picker-inline-l-input-width,128px);min-width:108px;min-width:calc(var(--form-element-large-height, 36px)*3)}.next-number-picker-inline.next-large .next-icon .next-icon-remote,.next-number-picker-inline.next-large .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-number-picker-inline.next-large .next-btn{height:36px;height:var(--form-element-large-height,36px)}.next-number-picker-inline.next-large .next-before .next-btn{margin-right:2px;margin-right:var(--number-picker-inline-l-button-margin,2px);border-top-left-radius:2px;border-top-left-radius:var(--number-picker-inline-l-button-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--number-picker-inline-l-button-corner,2px)}.next-number-picker-inline.next-large .next-after .next-btn{margin-left:2px;margin-left:var(--number-picker-inline-l-button-margin,2px);border-top-right-radius:2px;border-top-right-radius:var(--number-picker-inline-l-button-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--number-picker-inline-l-button-corner,2px)}.next-number-picker-inline .next-btn.next-small{width:24px;width:var(--form-element-small-height,24px)}.next-number-picker-inline .next-btn.next-medium{width:32px;width:var(--form-element-medium-height,32px)}.next-number-picker-inline .next-btn.next-large{width:36px;width:var(--form-element-large-height,36px)}@-moz-document url-prefix(){.next-number-picker-normal.next-small .next-number-picker-handler{height:22px;height:calc(var(--form-element-small-height, 24px) - 2px)}.next-number-picker-normal.next-medium .next-number-picker-handler{height:30px;height:calc(var(--form-element-medium-height, 32px) - 2px)}.next-number-picker-normal.next-large .next-number-picker-handler{height:34px;height:calc(var(--form-element-large-height, 36px) - 2px)}}.next-number-picker-normal[dir=rtl] .next-btn:first-child{border-right:1px solid #577899;border-right:1px solid var(--color-line1-3,#577899);border-left:0;border-top-right-radius:0}.next-number-picker-normal[dir=rtl] .next-btn:first-child.next-small{border-top-left-radius:2px;border-top-left-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:first-child.next-medium{border-top-left-radius:2px;border-top-left-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:first-child.next-large{border-top-left-radius:2px;border-top-left-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:last-child{border-right:1px solid #577899;border-right:1px solid var(--color-line1-3,#577899);border-left:0;border-bottom-right-radius:0}.next-number-picker-normal[dir=rtl] .next-btn:last-child.next-small{border-bottom-left-radius:2px;border-bottom-left-radius:var(--form-element-small-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:last-child.next-medium{border-bottom-left-radius:2px;border-bottom-left-radius:var(--form-element-medium-corner,2px)}.next-number-picker-normal[dir=rtl] .next-btn:last-child.next-large{border-bottom-left-radius:2px;border-bottom-left-radius:var(--form-element-large-corner,2px)}.next-number-picker-normal[dir=rtl] .next-input .next-input-control{padding-left:0}.next-number-picker-inline[dir=rtl] .next-before .next-btn{margin-right:0}.next-number-picker-inline[dir=rtl] .next-before .next-btn.next-small{margin-left:2px;margin-left:var(--number-picker-inline-s-button-margin,2px);border-top-right-radius:2px!important;border-top-right-radius:var(--number-picker-inline-s-button-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--number-picker-inline-s-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-before .next-btn.next-medium{margin-left:0;margin-left:var(--number-picker-inline-m-button-margin,0);border-top-right-radius:2px!important;border-top-right-radius:var(--number-picker-inline-m-button-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--number-picker-inline-m-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-before .next-btn.next-large{margin-left:2px;margin-left:var(--number-picker-inline-l-button-margin,2px);border-top-right-radius:2px!important;border-top-right-radius:var(--number-picker-inline-l-button-corner,2px)!important;border-bottom-right-radius:2px!important;border-bottom-right-radius:var(--number-picker-inline-l-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-after .next-btn{margin-left:0}.next-number-picker-inline[dir=rtl] .next-after .next-btn.next-small{margin-right:2px;margin-right:var(--number-picker-inline-s-button-margin,2px);border-top-left-radius:2px!important;border-top-left-radius:var(--number-picker-inline-s-button-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--number-picker-inline-s-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-after .next-btn.next-medium{margin-right:0;margin-right:var(--number-picker-inline-m-button-margin,0);border-top-left-radius:2px!important;border-top-left-radius:var(--number-picker-inline-m-button-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--number-picker-inline-m-button-corner,2px)!important}.next-number-picker-inline[dir=rtl] .next-after .next-btn.next-large{margin-right:2px;margin-right:var(--number-picker-inline-l-button-margin,2px);border-top-left-radius:2px!important;border-top-left-radius:var(--number-picker-inline-l-button-corner,2px)!important;border-bottom-left-radius:2px!important;border-bottom-left-radius:var(--number-picker-inline-l-button-corner,2px)!important}.next-pagination[dir=rtl] .next-pagination-total{margin-right:0;margin-left:16px}.next-pagination[dir=rtl] .next-pagination-jump-go{margin-left:0;margin-right:4px}.next-pagination[dir=rtl] .next-pagination-size-selector-title{margin-right:0;margin-left:4px;margin-left:var(--pagination-size-selector-title-margin-right,4px)}.next-pagination[dir=rtl] .next-pagination-size-selector-btn.next-btn-text+.next-pagination-size-selector-btn{border-left:none;border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) solid var(--color-line1-2,#c0c6cc)}.next-pagination[dir=rtl] .next-pagination-pages+.next-pagination-size-selector,.next-pagination[dir=rtl] .next-pagination-size-selector+.next-pagination-pages{margin-left:0;margin-right:40px}.next-pagination[dir=rtl].next-start .next-pagination-pages{float:left}.next-pagination[dir=rtl].next-end .next-pagination-pages,.next-pagination[dir=rtl].next-start .next-pagination-size-selector{float:right}.next-pagination[dir=rtl].next-end .next-pagination-size-selector{float:left}.next-pagination[dir=rtl].next-small .next-pagination-list{margin:0 4px;margin:0 var(--pagination-small-item-split,4px)}.next-pagination[dir=rtl].next-small .next-pagination-total{line-height:24px;line-height:var(--form-element-small-height,24px);vertical-align:middle}.next-pagination[dir=rtl].next-small .next-pagination-item{padding:0 6px;border-width:1px;border-width:var(--pagination-small-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-small-item-corner,2px)}.next-pagination[dir=rtl].next-small .next-pagination-item+.next-pagination-item{margin:0 4px 0 0;margin:0 var(--pagination-small-item-split,4px) 0 0}.next-pagination[dir=rtl].next-small .next-pagination-ellipsis{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination[dir=rtl].next-small .next-pagination-ellipsis .next-icon-remote,.next-pagination[dir=rtl].next-small .next-pagination-ellipsis:before{width:8px;width:var(--pagination-small-ellipsis-size,8px);font-size:8px;font-size:var(--pagination-small-ellipsis-size,8px);line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-pagination[dir=rtl].next-small .next-pagination-ellipsis{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:4px;margin-left:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2);margin-right:4px;margin-right:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2)}.next-pagination[dir=rtl].next-small .next-pagination-ellipsis:before{width:16px;font-size:16px}}.next-pagination[dir=rtl].next-small .next-pagination-display{font-size:12px;font-size:var(--pagination-small-total-font-size,12px)}.next-pagination[dir=rtl].next-small .next-pagination-display em{font-size:12px;font-size:var(--pagination-small-current-font-size,12px)}.next-pagination[dir=rtl].next-small .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-small-jump-font-size,12px)}.next-pagination[dir=rtl].next-small .next-pagination-jump-input{width:28px;width:var(--pagination-small-input-width,28px)}.next-pagination[dir=rtl].next-small .next-pagination-size-selector-title{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);font-size:12px;font-size:var(--pagination-small-jump-font-size,12px);vertical-align:middle}.next-pagination[dir=rtl].next-small .next-pagination-size-selector-btn{padding:0 8px;padding:0 var(--pagination-small-size-selector-number-padding,8px)}.next-pagination[dir=rtl].next-small .next-pagination-item.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-small .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination[dir=rtl].next-small .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-small .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination[dir=rtl].next-medium .next-pagination-list{margin:0 8px;margin:0 var(--pagination-item-split,8px)}.next-pagination[dir=rtl].next-medium .next-pagination-total{line-height:32px;line-height:var(--form-element-medium-height,32px);vertical-align:middle}.next-pagination[dir=rtl].next-medium .next-pagination-item{padding:0 10px;border-width:1px;border-width:var(--pagination-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-item-corner,2px)}.next-pagination[dir=rtl].next-medium .next-pagination-item+.next-pagination-item{margin:0 8px 0 0;margin:0 var(--pagination-item-split,8px) 0 0}.next-pagination[dir=rtl].next-medium .next-pagination-ellipsis{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination[dir=rtl].next-medium .next-pagination-ellipsis .next-icon-remote,.next-pagination[dir=rtl].next-medium .next-pagination-ellipsis:before{width:12px;width:var(--pagination-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-ellipsis-size,12px);line-height:inherit}.next-pagination[dir=rtl].next-medium .next-pagination-display{font-size:12px;font-size:var(--pagination-total-font-size,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-display em{font-size:12px;font-size:var(--pagination-current-font-size,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-jump-font-size,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-jump-input{width:40px;width:var(--pagination-input-width,40px)}.next-pagination[dir=rtl].next-medium .next-pagination-size-selector-title{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);font-size:12px;font-size:var(--pagination-jump-font-size,12px);vertical-align:middle}.next-pagination[dir=rtl].next-medium .next-pagination-size-selector-btn{padding:0 12px;padding:0 var(--pagination-size-selector-number-padding,12px)}.next-pagination[dir=rtl].next-medium .next-pagination-item.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-medium .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination[dir=rtl].next-medium .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-medium .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination[dir=rtl].next-large .next-pagination-list{margin:0 8px;margin:0 var(--pagination-large-item-split,8px)}.next-pagination[dir=rtl].next-large .next-pagination-total{line-height:36px;line-height:var(--form-element-large-height,36px);vertical-align:middle}.next-pagination[dir=rtl].next-large .next-pagination-item{padding:0 15px;border-width:1px;border-width:var(--pagination-large-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-large-item-corner,2px)}.next-pagination[dir=rtl].next-large .next-pagination-item+.next-pagination-item{margin:0 8px 0 0;margin:0 var(--pagination-large-item-split,8px) 0 0}.next-pagination[dir=rtl].next-large .next-pagination-ellipsis{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination[dir=rtl].next-large .next-pagination-ellipsis .next-icon-remote,.next-pagination[dir=rtl].next-large .next-pagination-ellipsis:before{width:12px;width:var(--pagination-large-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-large-ellipsis-size,12px);line-height:inherit}.next-pagination[dir=rtl].next-large .next-pagination-display{font-size:14px;font-size:var(--pagination-large-total-font-size,14px)}.next-pagination[dir=rtl].next-large .next-pagination-display em{font-size:14px;font-size:var(--pagination-large-current-font-size,14px)}.next-pagination[dir=rtl].next-large .next-pagination-jump-text{font-size:14px;font-size:var(--pagination-large-jump-font-size,14px)}.next-pagination[dir=rtl].next-large .next-pagination-jump-input{width:48px;width:var(--pagination-large-input-width,48px)}.next-pagination[dir=rtl].next-large .next-pagination-size-selector-title{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);font-size:14px;font-size:var(--pagination-large-jump-font-size,14px);vertical-align:middle}.next-pagination[dir=rtl].next-large .next-pagination-size-selector-btn{padding:0 16px;padding:0 var(--pagination-large-size-selector-number-padding,16px)}.next-pagination[dir=rtl].next-large .next-pagination-item.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-large .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination[dir=rtl].next-large .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination[dir=rtl].next-large .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination{font-size:0}.next-pagination,.next-pagination *,.next-pagination :after,.next-pagination :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-pagination:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-pagination-total{display:inline-block;font-size:14px;font-size:var(--font-size-body-2,14px);margin-right:16px}.next-pagination-pages{display:inline-block}.next-pagination-list{display:inline-block;vertical-align:top}.next-pagination .next-pagination-item:not([disabled]){display:inline-block;border-style:solid;border-style:var(--pagination-item-border-style,solid);border-color:transparent;border-color:var(--pagination-item-border-color,transparent);background:transparent;background:var(--pagination-item-bg,transparent);color:#333;color:var(--pagination-item-color,#333);-webkit-box-shadow:none;-webkit-box-shadow:var(--pagination-item-shadow,none);box-shadow:none;box-shadow:var(--pagination-item-shadow,none)}.next-pagination .next-pagination-item{-webkit-transition:none;transition:none}.next-pagination .next-pagination-item.next-current{border-color:#0064c8;border-color:var(--pagination-item-current-border-color,#0064c8);background:#fff;background:var(--pagination-item-current-bg,#fff);color:#0064c8;color:var(--pagination-item-current-color,#0064c8);-webkit-box-shadow:none;-webkit-box-shadow:var(--pagination-item-current-shadow,none);box-shadow:none;box-shadow:var(--pagination-item-current-shadow,none)}.next-pagination .next-pagination-item.next-current:focus,.next-pagination .next-pagination-item.next-current:hover{border-color:#0064c8;border-color:var(--pagination-item-current-hover-border-color,#0064c8);background:#fff;background:var(--pagination-item-current-hover-bg,#fff);color:#333;color:var(--pagination-item-current-hover-color,#333);-webkit-box-shadow:none;-webkit-box-shadow:var(--pagination-item-current-hover-shadow,none);box-shadow:none;box-shadow:var(--pagination-item-current-hover-shadow,none)}.next-pagination-ellipsis{display:inline-block;color:#333;color:var(--pagination-ellipsis-color,#333);vertical-align:top}.next-pagination-display{display:inline-block;margin:0 16px;color:#333;color:var(--pagination-total-color,#333);vertical-align:middle}.next-pagination-display em{font-style:normal;color:#0064c8;color:var(--pagination-current-color,#0064c8)}.next-pagination-jump-text{display:inline-block;vertical-align:middle;color:#333;color:var(--pagination-jump-color,#333)}.next-pagination-jump-input{margin:0 4px;margin:0 var(--pagination-input-margin,4px);vertical-align:top}.next-pagination-jump-go{margin-left:4px;vertical-align:top}.next-pagination-size-selector{display:inline-block;position:relative}.next-pagination-size-selector-title{margin-right:4px;margin-right:var(--pagination-size-selector-title-margin-right,4px);color:#888;color:var(--pagination-size-selector-title-color,#888)}.next-pagination-size-selector-filter{display:inline-block;vertical-align:middle}.next-pagination-size-selector-dropdown{vertical-align:top;min-width:64px}.next-pagination-size-selector-dropdown .next-select-inner,.next-pagination-size-selector-popup{min-width:64px}.next-pagination-size-selector-btn.next-btn-text{height:auto;line-height:normal;color:#555;color:var(--pagination-size-selector-filter-color,#555);border-radius:0}.next-pagination-size-selector-btn.next-btn-text.next-current{color:#0064c8;color:var(--pagination-size-selector-filter-current-color,#0064c8)}.next-pagination-size-selector-btn.next-btn-text+.next-pagination-size-selector-btn{border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) solid var(--color-line1-2,#c0c6cc)}.next-pagination-pages+.next-pagination-size-selector,.next-pagination-size-selector+.next-pagination-pages{margin-left:40px}.next-pagination.next-hide{display:none}.next-pagination.next-start .next-pagination-pages{float:right}.next-pagination.next-end .next-pagination-pages,.next-pagination.next-start .next-pagination-size-selector{float:left}.next-pagination.next-end .next-pagination-size-selector{float:right}.next-pagination.next-small .next-pagination-list{margin:0 4px;margin:0 var(--pagination-small-item-split,4px)}.next-pagination.next-small .next-pagination-total{line-height:24px;line-height:var(--form-element-small-height,24px);vertical-align:middle}.next-pagination.next-small .next-pagination-item{padding:0 6px;padding:0 var(--pagination-small-item-padding,6px);border-width:1px;border-width:var(--pagination-small-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-small-item-corner,2px)}.next-pagination.next-small .next-pagination-item+.next-pagination-item{margin:0 0 0 4px;margin:0 0 0 var(--pagination-small-item-split,4px)}.next-pagination.next-small .next-pagination-ellipsis{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination.next-small .next-pagination-ellipsis .next-icon-remote,.next-pagination.next-small .next-pagination-ellipsis:before{width:8px;width:var(--pagination-small-ellipsis-size,8px);font-size:8px;font-size:var(--pagination-small-ellipsis-size,8px);line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-pagination.next-small .next-pagination-ellipsis{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:4px;margin-left:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2);margin-right:4px;margin-right:calc(var(--pagination-ellipsis-margin, 8px) - 8px + var(--pagination-small-ellipsis-size, 8px)/2)}.next-pagination.next-small .next-pagination-ellipsis:before{width:16px;font-size:16px}}.next-pagination.next-small .next-pagination-display{font-size:12px;font-size:var(--pagination-small-total-font-size,12px)}.next-pagination.next-small .next-pagination-display em{font-size:12px;font-size:var(--pagination-small-current-font-size,12px)}.next-pagination.next-small .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-small-jump-font-size,12px)}.next-pagination.next-small .next-pagination-jump-input{width:28px;width:var(--pagination-small-input-width,28px)}.next-pagination.next-small .next-pagination-size-selector-title{height:24px;height:var(--form-element-small-height,24px);line-height:24px;line-height:var(--form-element-small-height,24px);font-size:12px;font-size:var(--pagination-small-jump-font-size,12px);vertical-align:middle}.next-pagination.next-small .next-pagination-size-selector-btn{padding:0 8px;padding:0 var(--pagination-small-size-selector-number-padding,8px)}.next-pagination.next-small .next-pagination-item.next-next:not([disabled]) i,.next-pagination.next-small .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination.next-small .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination.next-small .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination.next-small.next-arrow-only .next-pagination-item.next-next,.next-pagination.next-small.next-arrow-only .next-pagination-item.next-prev{width:20px;padding:0}.next-pagination.next-small.next-arrow-only .next-pagination-item.next-next .next-icon,.next-pagination.next-small.next-arrow-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-small.next-arrow-prev-only .next-pagination-item.next-prev{width:20px;padding:0}.next-pagination.next-small.next-arrow-prev-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-small.next-no-border .next-pagination-item.next-next,.next-pagination.next-small.next-no-border .next-pagination-item.next-prev{padding:0;border:none;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.next-pagination.next-small.next-no-border .next-pagination-item.next-next .next-icon,.next-pagination.next-small.next-no-border .next-pagination-item.next-prev .next-icon{margin:0}.next-pagination.next-small.next-no-border .next-pagination-item.next-next:not([disabled]):hover i,.next-pagination.next-small.next-no-border .next-pagination-item.next-prev:not([disabled]):hover i{color:#0064c8;color:var(--pagination-arrow-hover-color-noboder,#0064c8)}.next-pagination.next-small.next-no-border .next-pagination-display{margin:0 8px}.next-pagination.next-small.next-mini .next-pagination-item.next-prev{margin-right:4px}.next-pagination.next-small.next-mini .next-pagination-item.next-next{margin-left:4px}.next-pagination.next-medium .next-pagination-list{margin:0 8px;margin:0 var(--pagination-item-split,8px)}.next-pagination.next-medium .next-pagination-total{line-height:32px;line-height:var(--form-element-medium-height,32px);vertical-align:middle}.next-pagination.next-medium .next-pagination-item{padding:0 10px;padding:0 var(--pagination-item-padding,10px);border-width:1px;border-width:var(--pagination-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-item-corner,2px)}.next-pagination.next-medium .next-pagination-item+.next-pagination-item{margin:0 0 0 8px;margin:0 0 0 var(--pagination-item-split,8px)}.next-pagination.next-medium .next-pagination-ellipsis{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination.next-medium .next-pagination-ellipsis .next-icon-remote,.next-pagination.next-medium .next-pagination-ellipsis:before{width:12px;width:var(--pagination-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-ellipsis-size,12px);line-height:inherit}.next-pagination.next-medium .next-pagination-display{font-size:12px;font-size:var(--pagination-total-font-size,12px)}.next-pagination.next-medium .next-pagination-display em{font-size:12px;font-size:var(--pagination-current-font-size,12px)}.next-pagination.next-medium .next-pagination-jump-text{font-size:12px;font-size:var(--pagination-jump-font-size,12px)}.next-pagination.next-medium .next-pagination-jump-input{width:40px;width:var(--pagination-input-width,40px)}.next-pagination.next-medium .next-pagination-size-selector-title{height:32px;height:var(--form-element-medium-height,32px);line-height:32px;line-height:var(--form-element-medium-height,32px);font-size:12px;font-size:var(--pagination-jump-font-size,12px);vertical-align:middle}.next-pagination.next-medium .next-pagination-size-selector-btn{padding:0 12px;padding:0 var(--pagination-size-selector-number-padding,12px)}.next-pagination.next-medium .next-pagination-item.next-next:not([disabled]) i,.next-pagination.next-medium .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination.next-medium .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination.next-medium .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-next,.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-prev{width:28px;padding:0}.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-next .next-icon,.next-pagination.next-medium.next-arrow-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-medium.next-arrow-prev-only .next-pagination-item.next-prev{width:28px;padding:0}.next-pagination.next-medium.next-arrow-prev-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-medium.next-no-border .next-pagination-item.next-next,.next-pagination.next-medium.next-no-border .next-pagination-item.next-prev{padding:0;border:none;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.next-pagination.next-medium.next-no-border .next-pagination-item.next-next .next-icon,.next-pagination.next-medium.next-no-border .next-pagination-item.next-prev .next-icon{margin:0}.next-pagination.next-medium.next-no-border .next-pagination-item.next-next:not([disabled]):hover i,.next-pagination.next-medium.next-no-border .next-pagination-item.next-prev:not([disabled]):hover i{color:#0064c8;color:var(--pagination-arrow-hover-color-noboder,#0064c8)}.next-pagination.next-medium.next-no-border .next-pagination-display{margin:0 12px}.next-pagination.next-medium.next-mini .next-pagination-item.next-prev{margin-right:4px}.next-pagination.next-medium.next-mini .next-pagination-item.next-next{margin-left:4px}.next-pagination.next-large .next-pagination-list{margin:0 8px;margin:0 var(--pagination-large-item-split,8px)}.next-pagination.next-large .next-pagination-total{line-height:36px;line-height:var(--form-element-large-height,36px);vertical-align:middle}.next-pagination.next-large .next-pagination-item{padding:0 15px;padding:0 var(--pagination-large-item-padding,15px);border-width:1px;border-width:var(--pagination-large-item-border-width,1px);border-radius:2px;border-radius:var(--pagination-large-item-corner,2px)}.next-pagination.next-large .next-pagination-item+.next-pagination-item{margin:0 0 0 8px;margin:0 0 0 var(--pagination-large-item-split,8px)}.next-pagination.next-large .next-pagination-ellipsis{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);margin-left:8px;margin-left:var(--pagination-ellipsis-margin,8px);margin-right:8px;margin-right:var(--pagination-ellipsis-margin,8px)}.next-pagination.next-large .next-pagination-ellipsis .next-icon-remote,.next-pagination.next-large .next-pagination-ellipsis:before{width:12px;width:var(--pagination-large-ellipsis-size,12px);font-size:12px;font-size:var(--pagination-large-ellipsis-size,12px);line-height:inherit}.next-pagination.next-large .next-pagination-display{font-size:14px;font-size:var(--pagination-large-total-font-size,14px)}.next-pagination.next-large .next-pagination-display em{font-size:14px;font-size:var(--pagination-large-current-font-size,14px)}.next-pagination.next-large .next-pagination-jump-text{font-size:14px;font-size:var(--pagination-large-jump-font-size,14px)}.next-pagination.next-large .next-pagination-jump-input{width:48px;width:var(--pagination-large-input-width,48px)}.next-pagination.next-large .next-pagination-size-selector-title{height:36px;height:var(--form-element-large-height,36px);line-height:36px;line-height:var(--form-element-large-height,36px);font-size:14px;font-size:var(--pagination-large-jump-font-size,14px);vertical-align:middle}.next-pagination.next-large .next-pagination-size-selector-btn{padding:0 16px;padding:0 var(--pagination-large-size-selector-number-padding,16px)}.next-pagination.next-large .next-pagination-item.next-next:not([disabled]) i,.next-pagination.next-large .next-pagination-item.next-prev:not([disabled]) i{color:#333;color:var(--pagination-arrow-color,#333)}.next-pagination.next-large .next-pagination-item:hover.next-next:not([disabled]) i,.next-pagination.next-large .next-pagination-item:hover.next-prev:not([disabled]) i{color:#555;color:var(--pagination-arrow-hover-color,#555)}.next-pagination.next-large.next-arrow-only .next-pagination-item.next-next,.next-pagination.next-large.next-arrow-only .next-pagination-item.next-prev{width:40px;padding:0}.next-pagination.next-large.next-arrow-only .next-pagination-item.next-next .next-icon,.next-pagination.next-large.next-arrow-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-large.next-arrow-prev-only .next-pagination-item.next-prev{width:40px;padding:0}.next-pagination.next-large.next-arrow-prev-only .next-pagination-item.next-prev .next-icon{margin:0 auto}.next-pagination.next-large.next-no-border .next-pagination-item.next-next,.next-pagination.next-large.next-no-border .next-pagination-item.next-prev{padding:0;border:none;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.next-pagination.next-large.next-no-border .next-pagination-item.next-next .next-icon,.next-pagination.next-large.next-no-border .next-pagination-item.next-prev .next-icon{margin:0}.next-pagination.next-large.next-no-border .next-pagination-item.next-next:not([disabled]):hover i,.next-pagination.next-large.next-no-border .next-pagination-item.next-prev:not([disabled]):hover i{color:#0064c8;color:var(--pagination-arrow-hover-color-noboder,#0064c8)}.next-pagination.next-large.next-no-border .next-pagination-display{margin:0 16px}.next-pagination.next-large.next-mini .next-pagination-item.next-prev{margin-right:8px}.next-pagination.next-large.next-mini .next-pagination-item.next-next{margin-left:8px}.next-pagination-icon-prev:before{content:"\ea2c";content:var(--pagination-icon-prev-content,"")}.next-pagination-icon-next:before{content:"\ea29";content:var(--pagination-icon-next-content,"")}.next-pagination-icon-ellipsis:before{content:"\ea24";content:var(--pagination-icon-ellipsis-content,"")}.next-paragraph{color:#111;color:var(--paragraph-text-color,#111)}.next-paragraph-short{line-height:1.5;line-height:var(--paragraph-s-line-height,1.5)}.next-paragraph-long{line-height:1.6;line-height:var(--paragraph-l-line-height,1.6)}.next-paragraph-small{font-size:12px;font-size:var(--paragraph-s-font-size,12px)}.next-paragraph-medium{font-size:14px;font-size:var(--paragraph-m-font-size,14px)}.next-progress-circle[dir=rtl] .next-progress-circle-container{-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.next-progress-line[dir=rtl] .next-progress-line-overlay{left:auto;right:0}.next-progress-line,.next-progress-line *,.next-progress-line :after,.next-progress-line :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-progress-line{width:100%;display:inline-block;position:relative}.next-progress-line-container{display:inline-block;width:100%;vertical-align:middle}.next-progress-line-underlay{position:relative;overflow:hidden;width:100%;background:#e3e4e6;background:var(--progress-line-underlay-color,#e3e4e6)}.next-progress-line-overlay{position:absolute;left:0;top:0;-webkit-transition:all .3s ease;transition:all .3s ease}.next-progress-line-overlay-normal{background:#0064c8;background:var(--progress-line-normal-color,#0064c8)}.next-progress-line-overlay-success{background:#00a700;background:var(--progress-line-success-color,#00a700)}.next-progress-line-overlay-error{background:#c80000;background:var(--progress-line-error-color,#c80000)}.next-progress-line-overlay-started{background:#0064c8;background:var(--progress-line-started-color,#0064c8)}.next-progress-line-overlay-middle{background:#0064c8;background:var(--progress-line-middle-color,#0064c8)}.next-progress-line-overlay-finishing{background:#0064c8;background:var(--progress-line-finishing-color,#0064c8)}.next-progress-line.next-small .next-progress-line-overlay,.next-progress-line.next-small .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-s,2px);height:4px;height:var(--progress-line-height-size-s,4px)}.next-progress-line.next-small .next-progress-line-overlay{top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-s, 4px)/2)}.next-progress-line.next-small .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-s,12px);line-height:4px;line-height:var(--progress-line-height-size-s,4px)}.next-progress-line.next-medium .next-progress-line-overlay,.next-progress-line.next-medium .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-m,2px);height:4px;height:var(--progress-line-height-size-m,4px)}.next-progress-line.next-medium .next-progress-line-overlay{top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-m, 4px)/2)}.next-progress-line.next-medium .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-m,12px);line-height:4px;line-height:var(--progress-line-height-size-m,4px)}.next-progress-line.next-large .next-progress-line-overlay,.next-progress-line.next-large .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-l,2px);height:8px;height:var(--progress-line-height-size-l,8px)}.next-progress-line.next-large .next-progress-line-overlay{top:50%;margin-top:-4px;margin-top:calc(0px - var(--progress-line-height-size-l, 8px)/2)}.next-progress-line.next-large .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-l,12px);line-height:8px;line-height:var(--progress-line-height-size-l,8px)}.next-progress-line-show-info .next-progress-line-container{padding-right:60px;margin-right:-60px}.next-progress-line-show-info .next-progress-line-text{width:50px;text-align:left;margin-left:10px;vertical-align:middle;display:inline-block;color:#333;color:var(--progress-line-font-color,#333)}.next-progress-line-show-border .next-progress-line-underlay{border:1px solid #c0c6cc;border:var(--progress-line-underlay-border-width,1px) solid var(--progress-line-underlay-border-color,#c0c6cc)}.next-progress-line-show-border.next-small .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-s,2px);height:6px;height:calc(var(--progress-line-height-size-s, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-small .next-progress-line-overlay{height:4px;height:var(--progress-line-height-size-s,4px);border-radius:2px;border-radius:var(--progress-line-radius-s,2px);top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-s, 4px)/2)}.next-progress-line-show-border.next-small .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-s,12px);line-height:6px;line-height:calc(var(--progress-line-height-size-s, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-medium .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-m,2px);height:6px;height:calc(var(--progress-line-height-size-m, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-medium .next-progress-line-overlay{height:4px;height:var(--progress-line-height-size-m,4px);border-radius:2px;border-radius:var(--progress-line-radius-m,2px);top:50%;margin-top:-2px;margin-top:calc(0px - var(--progress-line-height-size-m, 4px)/2)}.next-progress-line-show-border.next-medium .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-m,12px);line-height:6px;line-height:calc(var(--progress-line-height-size-m, 4px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-large .next-progress-line-underlay{border-radius:2px;border-radius:var(--progress-line-radius-l,2px);height:10px;height:calc(var(--progress-line-height-size-l, 8px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-line-show-border.next-large .next-progress-line-overlay{height:8px;height:var(--progress-line-height-size-l,8px);border-radius:2px;border-radius:var(--progress-line-radius-l,2px);top:50%;margin-top:-4px;margin-top:calc(0px - var(--progress-line-height-size-l, 8px)/2)}.next-progress-line-show-border.next-large .next-progress-line-text{font-size:12px;font-size:var(--progress-line-font-l,12px);line-height:10px;line-height:calc(var(--progress-line-height-size-l, 8px) + var(--progress-line-underlay-border-width, 1px)*2)}.next-progress-circle,.next-progress-circle *,.next-progress-circle :after,.next-progress-circle :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-progress-circle{position:relative;display:inline-block}.next-progress-circle-underlay{stroke-width:4px;stroke-width:var(--progress-circle-underlay-width,4px);stroke:#e3e4e6;stroke:var(--progress-circle-underlay-color,#e3e4e6)}.next-progress-circle-overlay{-webkit-transition:all .3s ease;transition:all .3s ease;stroke-linecap:round;stroke-linecap:var(--progress-circle-corner,round);stroke-width:4px;stroke-width:var(--progress-circle-overlay-width,4px)}.next-progress-circle-overlay-normal{stroke:#0064c8;stroke:var(--progress-circle-normal-color,#0064c8)}.next-progress-circle-overlay-success{stroke:#00a700;stroke:var(--progress-circle-success-color,#00a700)}.next-progress-circle-overlay-error{stroke:#c80000;stroke:var(--progress-circle-error-color,#c80000)}.next-progress-circle-overlay-started{stroke:#0064c8;stroke:var(--progress-circle-started-color,#0064c8)}.next-progress-circle-overlay-middle{stroke:#0064c8;stroke:var(--progress-circle-middle-color,#0064c8)}.next-progress-circle-overlay-finishing{stroke:#0064c8;stroke:var(--progress-circle-finishing-color,#0064c8)}.next-progress-circle.next-small{width:100px;width:var(--progress-circle-size-s,100px);height:100px;height:var(--progress-circle-size-s,100px);font-size:14px;font-size:var(--progress-circle-font-s,14px)}.next-progress-circle.next-medium{width:116px;width:var(--progress-circle-size-m,116px);height:116px;height:var(--progress-circle-size-m,116px);font-size:14px;font-size:var(--progress-circle-font-m,14px)}.next-progress-circle.next-large{width:132px;width:var(--progress-circle-size-l,132px);height:132px;height:var(--progress-circle-size-l,132px);font-size:20px;font-size:var(--progress-circle-font-l,20px)}.next-progress-circle-text{display:block;position:absolute;width:100%;top:50%;left:0;text-align:center;line-height:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;color:#666;color:var(--progress-circle-text-color,#666)}.next-range{width:100%;font-family:inherit;font-weight:400;font-size:inherit;line-height:inherit;vertical-align:baseline;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;cursor:pointer}.next-range,.next-range *,.next-range :after,.next-range :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-range .next-range-inner{position:relative}.next-range .next-range-inner:only-child{margin-top:auto;margin-bottom:auto}.next-range .next-range-track{width:100%}.next-range .next-range-selected,.next-range .next-range-track{position:absolute;top:50%;border-radius:0;border-radius:var(--range-size-m-track-radius,0)}.next-range .next-range-selected{width:0;left:0}.next-range .next-range-scale{position:relative;width:100%;height:12px;height:var(--range-size-m-scale-height,12px)}.next-range .next-range-scale .next-range-scale-item{position:absolute;left:0;width:2px;border:1px solid;border:var(--range-size-m-scale-item-border-width,1px) solid;border-radius:0;border-radius:var(--range-size-m-scale-radius,0)}.next-range .next-range-scale .next-range-scale-item:last-child{margin-left:-2px;margin-left:calc(0px - var(--range-size-m-scale-item-border-width, 1px)*2)}.next-range .next-range-slider{position:absolute;top:50%;left:0;border-radius:50%}.next-range .next-range-slider-inner{position:absolute;top:50%;left:50%;border:1px solid #577899;border:var(--range-size-slider-border-width,1px) var(--range-size-slider-border-style,solid) var(--range-normal-slider-border-color,#577899);border-radius:50%;-webkit-transition:border-color .1s linear,-webkit-transform .1s linear;transition:border-color .1s linear,-webkit-transform .1s linear;transition:transform .1s linear,border-color .1s linear;transition:transform .1s linear,border-color .1s linear,-webkit-transform .1s linear}.next-range .next-range-frag.next-range-active .next-range-slider .next-range-slider-inner,.next-range .next-range-slider.next-range-slider-moving .next-range-slider-inner{border:2px solid #0064c8;border:var(--line-2,2px) var(--line-solid,solid) var(--range-normal-selected-color,#0064c8);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range .next-range-mark{position:relative;cursor:auto}.next-range .next-range-mark .next-range-mark-text{position:absolute;left:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);padding-left:2px;text-align:center}.next-range .next-range-frag{position:absolute;top:0}.next-range .next-range-frag .next-range-slider{left:0}.next-range .next-range-frag .next-range-slider:nth-child(2){left:100%}.next-range .next-range-frag .next-range-selected{width:100%}.next-range.disabled{cursor:not-allowed}.next-range.disabled .next-range-mark{cursor:auto}.next-range .next-range-track{background:#e3e4e6;background:var(--range-normal-unselected-color,#e3e4e6)}.next-range .next-range-track:hover{background:#e3e4e6;background:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range .next-range-selected{background:#0064c8;background:var(--range-normal-selected-color,#0064c8)}.next-range .next-range-selected:hover{background:#0064c8;background:var(--range-normal-selected-color-hover,#0064c8)}.next-range .next-range-scale .next-range-scale-item{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color,#e3e4e6);background:#e3e4e6;background:var(--range-normal-unselected-color,#e3e4e6)}.next-range .next-range-scale .next-range-scale-item:hover{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range .next-range-scale .next-range-scale-item.activated{border-color:#0064c8;border-color:var(--range-normal-selected-color,#0064c8);background:#0064c8;background:var(--range-normal-selected-color,#0064c8)}.next-range .next-range-scale .next-range-scale-item.activated:hover{border-color:#0064c8;border-color:var(--range-normal-selected-color-hover,#0064c8)}.next-range .next-range-slider-inner{background:#fff;background:var(--range-normal-slider-bg-color,#fff);border-color:#577899;border-color:var(--range-normal-slider-border-color,#577899)}.next-range .next-range-slider-inner:hover{background:#fff;background:var(--range-normal-slider-bg-color-hover,#fff);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range .next-range-mark .next-range-mark-text{color:#333;color:var(--range-normal-mark-color,#333)}.next-range .next-range-mark .next-range-mark-text:hover{color:#888;color:var(--range-normal-mark-color-hover,#888)}.next-range .next-range-mark .next-range-mark-text.activated{color:#333;color:var(--range-normal-mark-selected-color,#333)}.next-range .next-range-mark .next-range-mark-text.activated:hover{color:#111;color:var(--range-normal-mark-selected-color-hover,#111)}.next-range.disabled .next-range-track{background:#e3e4e6;background:var(--range-normal-unselected-color-disabled,#e3e4e6)}.next-range.disabled .next-range-selected{background:#b3b3b3;background:var(--range-normal-selected-color-disabled,#b3b3b3)}.next-range.disabled .next-range-scale-item{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color-disabled,#e3e4e6)}.next-range.disabled .next-range-scale-item.activated{border-color:#b3b3b3;border-color:var(--range-normal-selected-color-disabled,#b3b3b3)}.next-range.disabled .next-range-slider-inner{background:#fff;background:var(--range-normal-slider-bg-color-disabled,#fff);border-color:#c0c6cc;border-color:var(--range-normal-slider-border-color-disabled,#c0c6cc);-webkit-transform:none;-ms-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.next-range.disabled .next-range-mark-text{color:#b3b3b3;color:var(--range-normal-mark-color-disabled,#b3b3b3)}.next-range.disabled .next-range-mark-text.activated{color:#b3b3b3;color:var(--range-normal-mark-selected-color-disabled,#b3b3b3)}.next-range .next-range-selected,.next-range .next-range-track{height:4px;height:var(--range-size-m-track-height,4px);margin-top:-2px;margin-top:calc(0px - var(--range-size-m-track-height, 4px)/2)}.next-range .next-range-frag{margin-top:4px;margin-top:calc(var(--range-size-m-scale-height, 12px)/2 - var(--range-size-m-track-height, 4px)/2);height:4px;height:var(--range-size-m-track-height,4px)}.next-range .next-range-slider{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--range-size-m-slider-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--range-size-m-slider-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-range .next-range-slider,.next-range .next-range-slider-inner{height:16px;height:var(--range-size-m-slider-hw,16px);width:16px;width:var(--range-size-m-slider-hw,16px);margin-top:-8px;margin-top:calc(0px - var(--range-size-m-slider-hw, 16px)/2);margin-left:-8px;margin-left:calc(0px - var(--range-size-m-slider-hw, 16px)/2)}.next-range .next-range-mark{display:block}.next-range .next-range-mark .next-range-mark-text{font-size:12px;font-size:var(--range-size-m-mark-font-size,12px);font-weight:400;font-weight:var(--range-size-m-mark-font-weight,normal);line-height:20px;line-height:var(--range-size-m-mark-font-lineheight,20px);height:20px;height:var(--range-size-m-mark-font-lineheight,20px)}.next-range .next-range-mark.next-range-mark-below{height:30px;height:var(--range-size-m-mark-top,30px)}.next-range .next-range-mark.next-range-mark-below .next-range-mark-text{bottom:0}.next-range .next-range-mark.next-range-mark-above{height:30px;height:var(--range-size-m-mark-top,30px)}.next-range .next-range-scale .next-range-scale-item{height:12px;height:var(--range-size-m-scale-height,12px)}.next-range.simulation-hover>.next-range-slider-inner{background:#fff;background:var(--range-normal-slider-bg-color-hover,#fff);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range.simulation-hover .next-range-selected{background:#0064c8;background:var(--range-normal-selected-color-hover,#0064c8)}.next-range.simulation-hover .next-range-track{background:#e3e4e6;background:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range.simulation-hover .next-range-scale-item{border-color:#e3e4e6;border-color:var(--range-normal-unselected-color-hover,#e3e4e6)}.next-range.simulation-hover .next-range-scale-item.activated{border-color:#0064c8;border-color:var(--range-normal-selected-color-hover,#0064c8)}.next-range.simulation-click>.next-range-slider-inner{border:2px solid #0064c8;border:2px solid var(--range-normal-selected-color,#0064c8);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.16);box-shadow:0 4px 8px 0 rgba(0,0,0,.16);-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.next-range[dir=rtl] .next-range-mark{position:relative;cursor:auto}.next-range[dir=rtl] .next-range-mark .next-range-mark-text{position:absolute;right:0;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);padding-right:2px;text-align:center}.next-rating[dir=rtl] .next-rating-overlay{right:0;left:auto}.next-rating[dir=rtl] .next-rating-overlay .next-rating-icon,.next-rating[dir=rtl] .next-rating-underlay .next-rating-icon{margin-right:4px;margin-left:0}.next-rating[dir=rtl] .next-rating-overlay .next-rating-icon:last-child,.next-rating[dir=rtl] .next-rating-underlay .next-rating-icon:last-child{margin-left:4px}.next-rating{vertical-align:top;display:inline-block;position:relative}.next-rating:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-rating-base,.next-rating-text{float:left}.next-rating-base-disabled,.next-rating-base-disabled .next-rating-overlay .next-rating-icon,.next-rating-base-disabled .next-rating-underlay .next-rating-icon{cursor:not-allowed}.next-rating-symbol-icon:before{content:"\e814";content:var(--rating-grade-icon-content,"")}.next-rating-underlay{white-space:nowrap;overflow:hidden}.next-rating-underlay .next-icon{color:#fff;color:var(--rating-normal-underlay-color,#fff)}.next-rating-stroke-mode .next-rating-underlay .next-icon{color:transparent;-webkit-text-stroke:1px #0064c8;-webkit-text-stroke:1px var(--rating-normal-overlay-color,#0064c8)}.next-rating-overlay{white-space:nowrap;overflow:hidden;position:absolute;width:0;top:0;left:0}.next-rating-overlay .next-icon{color:#0064c8;color:var(--rating-normal-overlay-color,#0064c8)}.next-rating-overlay .next-rating-icon,.next-rating-underlay .next-rating-icon{cursor:pointer;margin-left:4px}.next-rating-overlay .next-rating-icon:last-child,.next-rating-underlay .next-rating-icon:last-child{margin-right:4px}.next-rating-overlay .next-icon,.next-rating-underlay .next-icon{-webkit-transition:all .1s linear;transition:all .1s linear}.next-rating-overlay .next-icon.hover,.next-rating-underlay .next-icon.hover{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}.next-rating-overlay .next-icon.clicked,.next-rating-underlay .next-icon.clicked{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}.next-rating-info{position:absolute;top:calc(100% + 4px);left:0;border:1px solid #004080;border:1px solid var(--color-fill1-4,#004080);background:#fff;padding:4px 8px 3px;font-size:12px;white-space:nowrap}.next-rating-info:after{position:absolute;content:"";width:4px;height:4px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);border-left:1px solid #004080;border-top:1px solid #004080;border:1px solid var(--color-fill1-4,#004080);background:#fff;border-bottom:1px solid transparent;border-right:1px solid transparent;top:-3px;left:4px}.next-rating.hover,.next-rating:focus .next-rating-base:not(.next-rating-base-disabled){outline:none}.next-rating.hover .next-rating-overlay .next-icon,.next-rating:focus .next-rating-base:not(.next-rating-base-disabled) .next-rating-overlay .next-icon{color:#fff;color:var(--rating-normal-overlay-hover-color,#fff)}.next-rating-grade-low.hover .next-rating-overlay .next-icon,.next-rating-grade-low .next-rating-overlay .next-icon{color:#fac800;color:var(--rating-grade-low-overlay-color,#fac800)}.next-rating-grade-high .next-rating-overlay .next-icon{color:#fac800;color:var(--rating-grade-high-overlay-color,#fac800)}.next-rating-grade-high.hover .next-rating-overlay .next-icon{color:#fac800;color:var(--rating-grade-high-overlay-hover-color,#fac800)}.next-rating-small{font-size:12px;font-size:var(--rating-small-font-size,12px)}.next-rating-small .next-icon .next-icon-remote,.next-rating-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-rating-small .next-rating-text{margin-left:8px;margin-left:var(--rating-small-text-margin-left,8px)}.next-rating-medium{font-size:12px;font-size:var(--rating-medium-font-size,12px)}.next-rating-medium .next-icon .next-icon-remote,.next-rating-medium .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-rating-medium .next-rating-text{margin-left:12px;margin-left:var(--rating-medium-text-margin-left,12px)}.next-rating-large{font-size:14px;font-size:var(--rating-large-font-size,14px)}.next-rating-large .next-icon .next-icon-remote,.next-rating-large .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-rating-large .next-rating-text{margin-left:16px;margin-left:var(--rating-large-text-margin-left,16px)}.next-search-simple[dir=rtl].next-large .next-search-icon{margin-left:12px;margin-right:0}.next-search-simple[dir=rtl].next-medium .next-search-icon{margin-left:8px;margin-right:0}.next-search-simple[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #e3e4e6;border-left:1px solid var(--search-simple-normal-split-color,#e3e4e6);border-right:none}.next-search-simple[dir=rtl].next-dark .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-color,#577899)}.next-search-simple[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-right:1px solid #577899;border-right:1px solid var(--search-simple-dark-split-color,#577899)}.next-search-simple[dir=rtl].next-dark:hover .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-hover-color,#577899)}.next-search-simple[dir=rtl].next-dark .next-search-icon{color:#888;color:var(--search-simple-dark-icon-text-color,#888)}.next-search-simple[dir=rtl].next-dark .next-search-icon:hover{color:#555;color:var(--search-simple-dark-icon-hover-text-color,#555)}.next-search-normal[dir=rtl] .next-search-left{border-left:none;border-top-right-radius:2px;border-top-right-radius:var(--search-normal-corner,2px);border-bottom-right-radius:2px;border-bottom-right-radius:var(--search-normal-corner,2px);border-top-left-radius:0;border-bottom-left-radius:0}.next-search-normal[dir=rtl] .next-search-btn.next-btn{border-radius:2px 0 0 2px!important;border-radius:var(--search-normal-corner,2px) 0 0 var(--search-normal-corner,2px)!important}.next-search-normal[dir=rtl] .next-input{border-radius:0 2px 2px 0;border-radius:0 var(--search-normal-corner,2px) var(--search-normal-corner,2px) 0}.next-search-normal[dir=rtl].next-primary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-top-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-right-radius:1px;border-bottom-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal[dir=rtl].next-primary .next-search-left .next-search-left-addon{border-left:1px solid #c0c6cc;border-left:1px solid var(--search-normal-primary-split-color,#c0c6cc);border-right:none}.next-search-normal[dir=rtl].next-secondary .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-top-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-right-radius:1px;border-bottom-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal[dir=rtl].next-secondary .next-search-left .next-search-left-addon{border-left:1px solid #c0c6cc;border-left:1px solid var(--search-normal-secondary-split-color,#c0c6cc);border-right:none}.next-search-normal[dir=rtl].next-normal .next-input{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:1px;border-top-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-right-radius:1px;border-bottom-right-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal[dir=rtl].next-normal .next-search-left .next-search-left-addon{border-left:1px solid #e3e4e6;border-left:1px solid var(--search-normal-normal-split-color,#e3e4e6);border-right:none}.next-search-normal[dir=rtl].next-dark .next-search-left .next-search-left-addon{border-left:1px solid #0064c8;border-left:1px solid var(--search-normal-dark-color,#0064c8);border-right:none}.next-search{width:100%;display:inline-block}.next-search,.next-search *,.next-search :after,.next-search :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-search .next-input,.next-search .next-select{border:none;-webkit-box-shadow:none;box-shadow:none}.next-search .next-select .next-input,.next-search .next-select .next-input .next-input-text-field{height:auto}.next-search .next-search-left{border-style:solid;-webkit-transition:all .1s linear;transition:all .1s linear}.next-search .next-search-left-addon .next-input,.next-search .next-search-left-addon .next-select-trigger-search{min-height:100%;border-bottom-right-radius:0;border-top-right-radius:0}.next-search .next-search-left-addon .next-select-values{line-height:1}.next-search .next-search-left-addon.next-input-group-addon .next-select{margin:0}.next-search .next-search-left-addon+.next-search-input .next-input{border-bottom-left-radius:0;border-top-left-radius:0}.next-search .next-search-input{width:100%}.next-search .next-search-btn{-webkit-box-shadow:none;box-shadow:none}.next-search .next-search-symbol-icon:before{content:"\ea20";content:var(--search-search-icon-content,"")}.next-search-normal{width:600px}.next-search-normal .next-search-left{border-top-left-radius:2px;border-top-left-radius:var(--search-normal-corner,2px);border-bottom-left-radius:2px;border-bottom-left-radius:var(--search-normal-corner,2px)}.next-search-normal .next-input{border-radius:2px 0 0 2px;border-radius:var(--search-normal-corner,2px) 0 0 var(--search-normal-corner,2px)}.next-search-normal .next-btn{border-radius:0 2px 2px 0;border-radius:0 var(--search-normal-corner,2px) var(--search-normal-corner,2px) 0}.next-search-normal.next-primary .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-primary-color,#c0c6cc)}.next-search-normal.next-primary .next-search-left .next-search-left-addon{border-right:1px solid #c0c6cc;border-right:1px solid var(--search-normal-primary-split-color,#c0c6cc)}.next-search-normal.next-primary:hover .next-btn,.next-search-normal.next-primary:hover .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-primary-hover-color,#c0c6cc)}.next-search-normal.next-primary .next-search-btn{background:#c0c6cc;background:var(--search-normal-primary-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-primary-color,#c0c6cc);color:#333;color:var(--search-normal-primary-btn-text-color,#333)}.next-search-normal.next-primary .next-search-btn:hover{background:#c0c6cc;background:var(--search-normal-primary-btn-hover-bg-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-primary-hover-color,#c0c6cc);color:#333;color:var(--search-normal-primary-btn-hover-text-color,#333)}.next-search-normal.next-primary .next-search-btn .next-icon{color:#333;color:var(--search-normal-primary-btn-text-color,#333)}.next-search-normal.next-primary .next-search-btn .next-icon:hover{color:#333;color:var(--search-normal-primary-btn-hover-text-color,#333)}.next-search-normal.next-primary.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-primary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-primary-shadow,none)}.next-search-normal.next-primary.next-large .next-search-btn,.next-search-normal.next-primary.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-primary-border-width,1px);height:36px;height:var(--search-normal-primary-l-height,36px)}.next-search-normal.next-primary.next-large .next-search-input{height:34px;height:calc(var(--search-normal-primary-l-height, 36px) - var(--search-normal-primary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-primary.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-primary-l-height, 36px) - var(--search-normal-primary-border-width, 1px)*2) \0 }.next-search-normal.next-primary.next-large .next-search-input input,.next-search-normal.next-primary.next-large .next-select{height:34px;height:calc(var(--search-normal-primary-l-height, 36px) - var(--search-normal-primary-border-width, 1px)*2)}.next-search-normal.next-primary.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-primary-l-btn-text-size,14px)}.next-search-normal.next-primary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-primary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-primary-btn-text-padding-left,0)}.next-search-normal.next-primary.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-primary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-primary-shadow,none)}.next-search-normal.next-primary.next-medium .next-search-btn,.next-search-normal.next-primary.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-primary-border-width,1px);height:32px;height:var(--search-normal-primary-m-height,32px)}.next-search-normal.next-primary.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-primary-m-height, 32px) - var(--search-normal-primary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-primary.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-primary-m-height, 32px) - var(--search-normal-primary-border-width, 1px)*2) \0 }.next-search-normal.next-primary.next-medium .next-search-input input,.next-search-normal.next-primary.next-medium .next-select{height:30px;height:calc(var(--search-normal-primary-m-height, 32px) - var(--search-normal-primary-border-width, 1px)*2)}.next-search-normal.next-primary.next-medium .next-search-btn{font-size:12px;font-size:var(--search-normal-primary-m-btn-text-size,12px)}.next-search-normal.next-primary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-primary.next-medium .next-search-btn .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-normal.next-primary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-primary-btn-text-padding-left,0)}.next-search-normal.next-primary .next-input{border-top-left-radius:1px;border-top-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px));border-bottom-left-radius:1px;border-bottom-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-primary-border-width, 1px))}.next-search-normal.next-secondary .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-secondary-color,#c0c6cc)}.next-search-normal.next-secondary .next-search-left .next-search-left-addon{border-right:1px solid #c0c6cc;border-right:1px solid var(--search-normal-secondary-split-color,#c0c6cc)}.next-search-normal.next-secondary:hover .next-btn,.next-search-normal.next-secondary:hover .next-search-left{border-color:#c0c6cc;border-color:var(--search-normal-secondary-hover-color,#c0c6cc)}.next-search-normal.next-secondary .next-search-btn{background:#c0c6cc;background:var(--search-normal-secondary-btn-bg-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-secondary-btn-bg-color,#c0c6cc);color:#333;color:var(--search-normal-secondary-btn-text-color,#333)}.next-search-normal.next-secondary .next-search-btn:hover{background:#c0c6cc;background:var(--search-normal-secondary-btn-hover-bg-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--search-normal-secondary-hover-color,#c0c6cc);color:#333;color:var(--search-normal-secondary-btn-hover-text-color,#333)}.next-search-normal.next-secondary .next-search-btn .next-icon{color:#333;color:var(--search-normal-secondary-btn-text-color,#333)}.next-search-normal.next-secondary .next-search-btn .next-icon:hover{color:#333;color:var(--search-normal-secondary-btn-hover-text-color,#333)}.next-search-normal.next-secondary.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-secondary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-secondary-shadow,none)}.next-search-normal.next-secondary.next-large .next-search-btn,.next-search-normal.next-secondary.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-secondary-border-width,1px);height:36px;height:var(--search-normal-secondary-l-height,36px)}.next-search-normal.next-secondary.next-large .next-search-input{height:34px;height:calc(var(--search-normal-secondary-l-height, 36px) - var(--search-normal-secondary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-secondary.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-secondary-l-height, 36px) - var(--search-normal-secondary-border-width, 1px)*2) \0 }.next-search-normal.next-secondary.next-large .next-search-input input,.next-search-normal.next-secondary.next-large .next-select{height:34px;height:calc(var(--search-normal-secondary-l-height, 36px) - var(--search-normal-secondary-border-width, 1px)*2)}.next-search-normal.next-secondary.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-secondary-l-btn-text-size,14px)}.next-search-normal.next-secondary.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-secondary.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-secondary-btn-text-padding-left,0)}.next-search-normal.next-secondary.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-secondary-shadow,none);box-shadow:none;box-shadow:var(--search-normal-secondary-shadow,none)}.next-search-normal.next-secondary.next-medium .next-search-btn,.next-search-normal.next-secondary.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-secondary-border-width,1px);height:32px;height:var(--search-normal-secondary-m-height,32px)}.next-search-normal.next-secondary.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-secondary-m-height, 32px) - var(--search-normal-secondary-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-secondary.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-secondary-m-height, 32px) - var(--search-normal-secondary-border-width, 1px)*2) \0 }.next-search-normal.next-secondary.next-medium .next-search-input input,.next-search-normal.next-secondary.next-medium .next-select{height:30px;height:calc(var(--search-normal-secondary-m-height, 32px) - var(--search-normal-secondary-border-width, 1px)*2)}.next-search-normal.next-secondary.next-medium .next-search-btn{font-size:12px;font-size:var(--search-normal-secondary-m-btn-text-size,12px)}.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-secondary.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-secondary.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-secondary-btn-text-padding-left,0)}.next-search-normal.next-secondary .next-input{border-top-left-radius:1px;border-top-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-secondary-border-width, 1px));border-bottom-left-radius:1px;border-bottom-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-secondary-border-width, 1px))}.next-search-normal.next-normal .next-search-left{border-color:#e3e4e6;border-color:var(--search-normal-normal-color,#e3e4e6)}.next-search-normal.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #e3e4e6;border-right:1px solid var(--search-normal-normal-split-color,#e3e4e6)}.next-search-normal.next-normal:hover .next-btn,.next-search-normal.next-normal:hover .next-search-left{border-color:#d1d5d9;border-color:var(--search-normal-normal-hover-color,#d1d5d9)}.next-search-normal.next-normal .next-search-btn{background:#f8f8f9;background:var(--search-normal-normal-btn-bg-color,#f8f8f9);border-color:#e3e4e6;border-color:var(--search-normal-normal-color,#e3e4e6);color:#333;color:var(--search-normal-normal-btn-text-color,#333)}.next-search-normal.next-normal .next-search-btn:hover{background:#f8f8f9;background:var(--search-normal-normal-btn-hover-bg-color,#f8f8f9);border-color:#d1d5d9;border-color:var(--search-normal-normal-hover-color,#d1d5d9);color:#333;color:var(--search-normal-normal-btn-hover-text-color,#333)}.next-search-normal.next-normal .next-search-btn .next-icon{color:#333;color:var(--search-normal-normal-btn-text-color,#333)}.next-search-normal.next-normal .next-search-btn .next-icon:hover{color:#333;color:var(--search-normal-normal-btn-hover-text-color,#333)}.next-search-normal.next-normal.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-normal-shadow,none);box-shadow:none;box-shadow:var(--search-normal-normal-shadow,none)}.next-search-normal.next-normal.next-large .next-search-btn,.next-search-normal.next-normal.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-normal-border-width,1px);height:36px;height:var(--search-normal-normal-l-height,36px)}.next-search-normal.next-normal.next-large .next-search-input{height:34px;height:calc(var(--search-normal-normal-l-height, 36px) - var(--search-normal-normal-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-normal.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-normal-l-height, 36px) - var(--search-normal-normal-border-width, 1px)*2) \0 }.next-search-normal.next-normal.next-large .next-search-input input,.next-search-normal.next-normal.next-large .next-select{height:34px;height:calc(var(--search-normal-normal-l-height, 36px) - var(--search-normal-normal-border-width, 1px)*2)}.next-search-normal.next-normal.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-normal-l-btn-text-size,14px)}.next-search-normal.next-normal.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-normal.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-normal-btn-text-padding-left,0)}.next-search-normal.next-normal.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-normal-shadow,none);box-shadow:none;box-shadow:var(--search-normal-normal-shadow,none)}.next-search-normal.next-normal.next-medium .next-search-btn,.next-search-normal.next-normal.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-normal-border-width,1px);height:32px;height:var(--search-normal-normal-m-height,32px)}.next-search-normal.next-normal.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-normal-m-height, 32px) - var(--search-normal-normal-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-normal.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-normal-m-height, 32px) - var(--search-normal-normal-border-width, 1px)*2) \0 }.next-search-normal.next-normal.next-medium .next-search-input input,.next-search-normal.next-normal.next-medium .next-select{height:30px;height:calc(var(--search-normal-normal-m-height, 32px) - var(--search-normal-normal-border-width, 1px)*2)}.next-search-normal.next-normal.next-medium .next-search-btn{font-size:14px;font-size:var(--search-normal-normal-m-btn-text-size,14px)}.next-search-normal.next-normal.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-normal.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-normal.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-normal-btn-text-padding-left,0)}.next-search-normal.next-normal .next-input{border-top-left-radius:1px;border-top-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-normal-border-width, 1px));border-bottom-left-radius:1px;border-bottom-left-radius:calc(var(--search-normal-corner, 2px) - var(--search-normal-normal-border-width, 1px))}.next-search-normal.next-dark .next-search-left{border-color:#0064c8;border-color:var(--search-normal-dark-color,#0064c8)}.next-search-normal.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #0064c8;border-right:1px solid var(--search-normal-dark-color,#0064c8)}.next-search-normal.next-dark:hover .next-btn,.next-search-normal.next-dark:hover .next-search-left{border-color:#0050a0;border-color:var(--search-normal-dark-hover-color,#0050a0)}.next-search-normal.next-dark .next-search-btn{background:#0064c8;background:var(--search-normal-dark-color,#0064c8);border-color:#0064c8;border-color:var(--search-normal-dark-color,#0064c8);color:#fff;color:var(--search-normal-dark-btn-text-color,#fff)}.next-search-normal.next-dark .next-search-btn:hover{background:#0050a0;background:var(--search-normal-dark-btn-hover-bg-color,#0050a0);border-color:#0050a0;border-color:var(--search-normal-dark-hover-color,#0050a0);color:#fff;color:var(--search-normal-dark-btn-hover-text-color,#fff)}.next-search-normal.next-dark .next-search-btn .next-icon{color:#fff;color:var(--search-normal-dark-btn-text-color,#fff)}.next-search-normal.next-dark .next-search-btn .next-icon:hover{color:#fff;color:var(--search-normal-dark-btn-hover-text-color,#fff)}.next-search-normal.next-dark .next-select-inner,.next-search-normal.next-dark input{color:#fff;color:var(--search-normal-dark-text-color,#fff)}.next-search-normal.next-dark .next-input,.next-search-normal.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-normal.next-dark.next-large{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-dark-shadow,none);box-shadow:none;box-shadow:var(--search-normal-dark-shadow,none)}.next-search-normal.next-dark.next-large .next-search-btn,.next-search-normal.next-dark.next-large .next-search-left{border-width:1px;border-width:var(--search-normal-dark-border-width,1px);height:36px;height:var(--search-normal-dark-l-height,36px)}.next-search-normal.next-dark.next-large .next-search-input{height:34px;height:calc(var(--search-normal-dark-l-height, 36px) - var(--search-normal-dark-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-dark.next-large .next-search-input input{line-height:34px \0;line-height:calc(var(--search-normal-dark-l-height, 36px) - var(--search-normal-dark-border-width, 1px)*2) \0 }.next-search-normal.next-dark.next-large .next-search-input input,.next-search-normal.next-dark.next-large .next-select{height:34px;height:calc(var(--search-normal-dark-l-height, 36px) - var(--search-normal-dark-border-width, 1px)*2)}.next-search-normal.next-dark.next-large .next-search-btn{font-size:14px;font-size:var(--search-normal-dark-l-btn-text-size,14px)}.next-search-normal.next-dark.next-large .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-large .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-dark.next-large .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-dark-btn-text-padding-left,0)}.next-search-normal.next-dark.next-medium{-webkit-box-shadow:none;-webkit-box-shadow:var(--search-normal-dark-shadow,none);box-shadow:none;box-shadow:var(--search-normal-dark-shadow,none)}.next-search-normal.next-dark.next-medium .next-search-btn,.next-search-normal.next-dark.next-medium .next-search-left{border-width:1px;border-width:var(--search-normal-dark-border-width,1px);height:32px;height:var(--search-normal-dark-m-height,32px)}.next-search-normal.next-dark.next-medium .next-search-input{height:30px;height:calc(var(--search-normal-dark-m-height, 32px) - var(--search-normal-dark-border-width, 1px)*2);overflow-y:hidden}.next-search-normal.next-dark.next-medium .next-search-input input{line-height:30px \0;line-height:calc(var(--search-normal-dark-m-height, 32px) - var(--search-normal-dark-border-width, 1px)*2) \0 }.next-search-normal.next-dark.next-medium .next-search-input input,.next-search-normal.next-dark.next-medium .next-select{height:30px;height:calc(var(--search-normal-dark-m-height, 32px) - var(--search-normal-dark-border-width, 1px)*2)}.next-search-normal.next-dark.next-medium .next-search-btn{font-size:14px;font-size:var(--search-normal-dark-m-btn-text-size,14px)}.next-search-normal.next-dark.next-medium .next-search-btn .next-icon .next-icon-remote,.next-search-normal.next-dark.next-medium .next-search-btn .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-normal.next-dark.next-medium .next-search-btn .next-search-btn-text{display:inline-block;padding-left:0;padding-left:var(--search-normal-dark-btn-text-padding-left,0)}.next-search-normal:not([dir=rtl]) .next-search-left{border-right:none}.next-search-simple{width:300px;-webkit-box-shadow:none;-webkit-box-shadow:var(--search-simple-normal-shadow,none);box-shadow:none;box-shadow:var(--search-simple-normal-shadow,none);border-radius:2px;border-radius:var(--search-simple-corner,2px)}.next-search-simple .next-search-icon{cursor:pointer;-webkit-transition:all .1s linear;transition:all .1s linear}.next-search-simple .next-input,.next-search-simple .next-search-left{border-radius:2px;border-radius:var(--search-simple-corner,2px)}.next-search-simple.next-large .next-search-icon{margin-right:12px}.next-search-simple.next-medium .next-search-icon{margin-right:8px}.next-search-simple.next-normal .next-search-left{border-color:#e3e4e6;border-color:var(--search-simple-normal-color,#e3e4e6)}.next-search-simple.next-normal .next-search-left .next-search-left-addon{border-right:1px solid #e3e4e6;border-right:1px solid var(--search-simple-normal-split-color,#e3e4e6)}.next-search-simple.next-normal:hover .next-search-left{border-color:#d1d5d9;border-color:var(--search-simple-normal-hover-color,#d1d5d9)}.next-search-simple.next-normal .next-search-icon{color:#888;color:var(--search-simple-normal-icon-text-color,#888)}.next-search-simple.next-normal .next-search-icon:hover{color:#555;color:var(--search-simple-normal-icon-hover-text-color,#555)}.next-search-simple.next-normal .next-search-left{border-width:1px;border-width:var(--search-simple-normal-border-width,1px)}.next-search-simple.next-normal.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-large .next-search-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-simple.next-normal.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-normal.next-medium .next-search-icon:before{width:12px;font-size:12px;line-height:inherit}.next-search-simple.next-dark .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-color,#577899)}.next-search-simple.next-dark .next-search-left .next-search-left-addon{border-right:1px solid #577899;border-right:1px solid var(--search-simple-dark-split-color,#577899)}.next-search-simple.next-dark:hover .next-search-left{border-color:#577899;border-color:var(--search-simple-dark-hover-color,#577899)}.next-search-simple.next-dark .next-search-icon{color:#888;color:var(--search-simple-dark-icon-text-color,#888)}.next-search-simple.next-dark .next-search-icon:hover{color:#555;color:var(--search-simple-dark-icon-hover-text-color,#555)}.next-search-simple.next-dark .next-select-inner,.next-search-simple.next-dark input{color:#fff;color:var(--search-simple-dark-text-color,#fff)}.next-search-simple.next-dark .next-input,.next-search-simple.next-dark .next-select{background:hsla(0,0%,100%,0)}.next-search-simple.next-dark .next-search-left{border-width:1px;border-width:var(--search-simple-dark-border-width,1px)}.next-search-simple.next-dark.next-large .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-large .next-search-icon:before,.next-search-simple.next-dark.next-medium .next-search-icon .next-icon-remote,.next-search-simple.next-dark.next-medium .next-search-icon:before{width:16px;font-size:16px;line-height:inherit}.next-search-simple .next-select.next-large{height:34px;height:calc(var(--form-element-large-height, 36px) - 2px)}.next-search-simple .next-select.next-medium{height:30px;height:calc(var(--form-element-medium-height, 32px) - 2px)}.next-slick{position:relative;display:block;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.next-slick,.next-slick *,.next-slick :after,.next-slick :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-slick-initialized .next-slick-slide{display:block}.next-slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0;-webkit-transform:translateZ(0);transform:translateZ(0)}.next-slick-list:focus{outline:none}.next-slick-list.dragging{cursor:pointer;cursor:hand}.next-slick-track{position:relative;top:0;left:0;display:block;-webkit-transform:translateZ(0);transform:translateZ(0)}.next-slick-slide{float:left;height:100%;min-height:1px;outline:0;-webkit-transition:all .1s linear;transition:all .1s linear}.next-slick[dir=rtl] .next-slick-slide{float:right}.next-slick-slide img{display:block}.next-slick-arrow{display:block;position:absolute;cursor:pointer;text-align:center;-webkit-transition:all .1s linear;transition:all .1s linear}.next-slick-arrow.inner{color:#fff;color:var(--slick-arrow-icon-color-normal,#fff);background:#000;background:var(--slick-arrow-bg-color-normal,#000);opacity:.2;opacity:var(--slick-arrow-bg-opacity-normal,.2);padding:0;border:none}.next-slick-arrow.inner:focus,.next-slick-arrow.inner:hover{color:#fff;color:var(--slick-arrow-icon-color-hover,#fff);background:#000;background:var(--slick-arrow-bg-color-hover,#000);opacity:.4;opacity:var(--slick-arrow-bg-opacity-hover,.4)}.next-slick-arrow.inner.disabled{color:#c1c1c1;color:var(--slick-arrow-icon-color-disabled,#c1c1c1);background:#000;background:var(--slick-arrow-bg-color-disabled,#000);opacity:.05;opacity:var(--slick-arrow-bg-opacity-disabled,.05)}.next-slick-arrow.outer{color:#555;color:var(--slick-arrow-icon-color-normal-outer,#555);background:transparent;background:var(--slick-arrow-bg-color-normal-outer,transparent);opacity:.32;opacity:var(--slick-arrow-bg-opacity-normal-outer,.32);padding:0;border:none;border-radius:0;border-radius:var(--slick-arrow-corner-radius-outer,0)}.next-slick-arrow.outer:focus,.next-slick-arrow.outer:hover{color:#111;color:var(--slick-arrow-icon-color-hover-outer,#111);background:transparent;background:var(--slick-arrow-bg-color-hover-outer,transparent);opacity:.32;opacity:var(--slick-arrow-bg-opacity-hover-outer,.32)}.next-slick-arrow.outer.disabled{color:#c1c1c1;color:var(--slick-arrow-icon-color-disabled-outer,#c1c1c1);background:transparent;background:var(--slick-arrow-bg-color-disabled-outer,transparent);opacity:.32;opacity:var(--slick-arrow-bg-opacity-disabled-outer,.32)}.next-slick-arrow.disabled{cursor:not-allowed}.next-slick-dots{display:block;position:absolute;margin:0;padding:0}.next-slick-dots-item{position:relative;display:inline-block;cursor:pointer}.next-slick-dots-item button{cursor:pointer;border:0 solid #fff;border-width:var(--slick-dots-border-width,0);outline:none;padding:0;height:8px;height:var(--slick-dots-height,8px);width:8px;width:var(--slick-dots-width,8px);border-radius:50%;border-radius:var(--slick-dots-border-radius,50%);background:rgba(0,0,0,.32)}.next-slick-dots-item button:hover{background-color:rgba(0,0,0,.32);border-color:#fff}.next-slick-dots-item button:focus,.next-slick-dots-item button:hover{background:hsla(0,0%,100%,.5)}.next-slick-dots-item.active button{background:#0064c8;border-color:#fff;-webkit-animation:zoom .3s cubic-bezier(.86,0,.07,1);animation:zoom .3s cubic-bezier(.86,0,.07,1)}.next-slick-dots.hoz{width:100%;bottom:12px;bottom:var(--slick-dots-position-bottom,12px);left:0;text-align:center}.next-slick-dots.hoz .next-slick-dots-item{margin:0 4px;margin:0 var(--slick-dots-margin-lr,4px)}.next-slick-dots.ver{width:16px;width:calc(var(--slick-dots-width, 8px) + 8px);top:0;right:20px;right:var(--slick-dots-position-right,20px);bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.next-slick-dots.ver .next-slick-dots-item{margin:0;margin:var(--slick-dots-margin-tb,0) 0}.next-slick.next-slick-hoz.next-slick-outer{padding:0 24px;padding:0 var(--slick-track-padding-lr,24px)}.next-slick.next-slick-hoz .next-slick-arrow.medium{width:28px;width:var(--slick-arrow-width-m,28px);height:56px;height:var(--slick-arrow-height-m,56px);line-height:56px;line-height:var(--slick-arrow-height-m,56px)}.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner{top:calc(50% - 28px);top:calc(50% - var(--slick-arrow-height-m, 56px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer{top:calc(50% - 28px);top:calc(50% - var(--slick-arrow-height-m, 56px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-prev{left:-4px;left:calc(0px - var(--slick-arrow-position-lr-m, 4px))}.next-slick.next-slick-hoz .next-slick-arrow.medium.outer.next-slick-next{right:-4px;right:calc(0px - var(--slick-arrow-position-lr-m, 4px))}.next-slick.next-slick-hoz .next-slick-arrow.large{width:48px;width:var(--slick-arrow-width-l,48px);height:96px;height:var(--slick-arrow-height-l,96px);line-height:96px;line-height:var(--slick-arrow-height-l,96px)}.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-hoz .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-hoz .next-slick-arrow.large.inner{top:calc(50% - 48px);top:calc(50% - var(--slick-arrow-height-l, 96px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-prev{left:0}.next-slick.next-slick-hoz .next-slick-arrow.large.inner.next-slick-next{right:0}.next-slick.next-slick-hoz .next-slick-arrow.large.outer{top:calc(50% - 48px);top:calc(50% - var(--slick-arrow-height-l, 96px)/2)}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-prev{left:-8px;left:calc(0px - var(--slick-arrow-position-lr-l, 8px))}.next-slick.next-slick-hoz .next-slick-arrow.large.outer.next-slick-next{right:-8px;right:calc(0px - var(--slick-arrow-position-lr-l, 8px))}.next-slick.next-slick-ver.next-slick-outer{padding:24px 0;padding:var(--slick-ver-track-padding-tb,24px) 0}.next-slick.next-slick-ver .next-slick-slide{display:block;height:auto}.next-slick.next-slick-ver .next-slick-arrow.medium{width:56px;width:var(--slick-ver-arrow-width-m,56px);height:28px;height:var(--slick-ver-arrow-height-m,28px);line-height:28px;line-height:var(--slick-ver-arrow-height-m,28px)}.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.medium .next-icon:before{width:20px;font-size:20px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.medium.inner{left:calc(50% - 28px);left:calc(50% - var(--slick-ver-arrow-width-m, 56px)/2)}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.medium.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.medium.outer{left:calc(50% - 28px);left:calc(50% - var(--slick-ver-arrow-width-m, 56px)/2)}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-prev{top:-4px;top:calc(0px - var(--slick-ver-arrow-position-tb-m, 4px))}.next-slick.next-slick-ver .next-slick-arrow.medium.outer.next-slick-next{bottom:-4px;bottom:calc(0px - var(--slick-ver-arrow-position-tb-m, 4px))}.next-slick.next-slick-ver .next-slick-arrow.large{width:96px;width:var(--slick-ver-arrow-width-l,96px);height:48px;height:var(--slick-ver-arrow-height-l,48px);line-height:48px;line-height:var(--slick-ver-arrow-height-l,48px)}.next-slick.next-slick-ver .next-slick-arrow.large .next-icon .next-icon-remote,.next-slick.next-slick-ver .next-slick-arrow.large .next-icon:before{width:32px;font-size:32px;line-height:inherit}.next-slick.next-slick-ver .next-slick-arrow.large.inner{left:calc(50% - 48px);left:calc(50% - var(--slick-ver-arrow-width-l, 96px)/2)}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-prev{top:0}.next-slick.next-slick-ver .next-slick-arrow.large.inner.next-slick-next{bottom:0}.next-slick.next-slick-ver .next-slick-arrow.large.outer{left:calc(50% - 48px);left:calc(50% - var(--slick-ver-arrow-width-l, 96px)/2)}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-prev{top:-16px;top:calc(0px - var(--slick-ver-arrow-position-tb-l, 16px))}.next-slick.next-slick-ver .next-slick-arrow.large.outer.next-slick-next{bottom:-16px;bottom:calc(0px - var(--slick-ver-arrow-position-tb-l, 16px))}.next-split-btn{display:inline-block;position:relative}.next-split-btn-spacing-tb{padding:0;padding:var(--popup-spacing-tb,0) 0}.next-split-btn-trigger .next-icon{-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.next-split-btn-trigger.next-expand .next-split-btn-symbol-fold{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.next-split-btn-trigger.next-btn-normal:not(:disabled):not(.disabled) .next-icon{color:#888;color:var(--split-btn-trigger-normal-icon-color,#888)}.next-split-btn-trigger.next-small{padding-left:4px;padding-right:4px}.next-split-btn-trigger.next-medium{padding-left:8px;padding-right:8px}.next-split-btn-symbol-fold:before{content:"\ea1f";content:var(--split-btn-fold-icon-content,"")}.next-split-btn-symbol-unfold:before{content:"";content:var(--split-btn-unfold-icon-content,"")}.next-step,.next-step *,.next-step:after,.next-step :after,.next-step:before,.next-step :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-step{width:100%;position:relative;border:none}.next-step-item{position:relative;vertical-align:middle;outline:0;height:100%}.next-step-item-body{outline:0}.next-step-item-node{-webkit-transition:all .1s linear;transition:all .1s linear}.next-step-item-node.clicked{-webkit-transform:scale3d(.8,.8,.8);transform:scale3d(.8,.8,.8)}.next-step-horizontal{overflow:hidden}.next-step-horizontal>.next-step-item{display:inline-block;text-align:left}.next-step-vertical>.next-step-item{display:block;text-align:center}.next-step-arrow{display:-webkit-box;display:-ms-flexbox;display:flex}.next-step-arrow .next-step-item{-webkit-box-flex:1;-ms-flex:1;flex:1;height:32px;height:var(--step-arrow-item-height,32px);line-height:32px;line-height:var(--step-arrow-item-height,32px);margin-left:16px;margin-left:calc(var(--step-arrow-item-height, 32px)/2);margin-right:4px;margin-right:calc(var(--step-arrow-item-height, 32px)/8)}.next-step-arrow .next-step-item:before{content:"";position:absolute;left:-16px;left:calc(0px - var(--step-arrow-item-height, 32px)/2);top:0;z-index:1;border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow .next-step-item:after{content:"";position:absolute;right:-16px;right:calc(0px - var(--step-arrow-item-height, 32px)/2);top:0;z-index:1;border-top:16px solid transparent;border-top:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-bottom:16px solid transparent;border-bottom:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-left:16px solid transparent;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow .next-step-item .next-step-item-container{min-width:100px;height:32px;height:var(--step-arrow-item-height,32px);cursor:pointer}.next-step-arrow .next-step-item .next-step-item-container .next-step-item-title{height:32px;height:var(--step-arrow-item-height,32px);line-height:32px;line-height:var(--step-arrow-item-height,32px);font-weight:400;font-weight:var(--step-arrow-item-title-weight,normal);font-size:14px;font-size:var(--step-arrow-item-title-size,14px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.next-step-arrow>.next-step-item-wait{background:#f7f9fa;background:var(--step-arrow-item-wait-background,#f7f9fa)}.next-step-arrow>.next-step-item-wait .next-step-item-tail-overlay{background:#000}.next-step-arrow>.next-step-item-wait .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-node-circle,.next-step-arrow>.next-step-item-wait>.next-step-item-container .next-step-item-node-dot{background:#f7f9fa;background:var(--step-arrow-item-wait-background,#f7f9fa);border-color:#000}.next-step-arrow>.next-step-item-wait .next-step-item-content,.next-step-arrow>.next-step-item-wait .next-step-item-title{color:#888;color:var(--step-arrow-item-title-wait-color,#888);word-break:break-word}.next-step-arrow>.next-step-item-wait .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow>.next-step-item-wait .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow>.next-step-item-wait .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow>.next-step-item-wait .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow>.next-step-item-wait .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow>.next-step-item-wait .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow>.next-step-item-wait .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow>.next-step-item-wait:before{border:16px solid #f7f9fa;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow>.next-step-item-wait:after{border-left-color:#f7f9fa;border-left-color:var(--step-arrow-item-wait-background,#f7f9fa)}.next-step-arrow>.next-step-item-process{background:#0064c8;background:var(--step-arrow-item-process-background,#0064c8)}.next-step-arrow>.next-step-item-process .next-step-item-tail-overlay{background:#000}.next-step-arrow>.next-step-item-process .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-node-circle,.next-step-arrow>.next-step-item-process>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-arrow-item-process-background,#0064c8);border-color:#000}.next-step-arrow>.next-step-item-process .next-step-item-content,.next-step-arrow>.next-step-item-process .next-step-item-title{color:#fff;color:var(--step-arrow-item-title-process-color,#fff);word-break:break-word}.next-step-arrow>.next-step-item-process .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow>.next-step-item-process .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow>.next-step-item-process .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow>.next-step-item-process .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow>.next-step-item-process .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow>.next-step-item-process .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow>.next-step-item-process .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow>.next-step-item-process:before{border:16px solid #0064c8;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow>.next-step-item-process:after{border-left-color:#0064c8;border-left-color:var(--step-arrow-item-process-background,#0064c8)}.next-step-arrow>.next-step-item-finish{background:#0064c8;background:var(--step-arrow-item-finish-background,#0064c8)}.next-step-arrow>.next-step-item-finish .next-step-item-tail-overlay{background:#000}.next-step-arrow>.next-step-item-finish .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-node-circle,.next-step-arrow>.next-step-item-finish>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-arrow-item-finish-background,#0064c8);border-color:#000}.next-step-arrow>.next-step-item-finish .next-step-item-content,.next-step-arrow>.next-step-item-finish .next-step-item-title{color:#fff;color:var(--step-arrow-item-title-finish-color,#fff);word-break:break-word}.next-step-arrow>.next-step-item-finish .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow>.next-step-item-finish .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow>.next-step-item-finish .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow>.next-step-item-finish .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow>.next-step-item-finish .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow>.next-step-item-finish .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow>.next-step-item-finish .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow>.next-step-item-finish:before{border:16px solid #0064c8;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow>.next-step-item-finish:after{border-left-color:#0064c8;border-left-color:var(--step-arrow-item-finish-background,#0064c8)}.next-step-arrow .next-step-item-disabled{cursor:not-allowed;background:#f8f8f9;background:var(--step-arrow-item-disabled-background,#f8f8f9)}.next-step-arrow .next-step-item-disabled .next-step-item-tail-overlay{background:#000}.next-step-arrow .next-step-item-disabled .next-step-item-tail-underlay{background:#c1c1c1;background:var(--color-text1-1,#c1c1c1)}.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-progress{width:32px;height:32px}.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-node{color:#000}.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-node-circle,.next-step-arrow .next-step-item-disabled>.next-step-item-container .next-step-item-node-dot{background:#f8f8f9;background:var(--step-arrow-item-disabled-background,#f8f8f9);border-color:#000}.next-step-arrow .next-step-item-disabled .next-step-item-content,.next-step-arrow .next-step-item-disabled .next-step-item-title{color:#c1c1c1;color:var(--step-arrow-item-title-disabled-color,#c1c1c1);word-break:break-word}.next-step-arrow .next-step-item-disabled .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-arrow .next-step-item-disabled .next-step-item-node-placeholder{width:32px;height:32px;position:relative}.next-step-arrow .next-step-item-disabled .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-arrow .next-step-item-disabled .next-step-item-node-circle{display:block;width:32px;height:32px;font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:30px;line-height:calc(32px - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-arrow .next-step-item-disabled .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-arrow .next-step-item-disabled .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-arrow .next-step-item-disabled .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-arrow .next-step-item-disabled:before{border:16px solid #f8f8f9;border-left:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow .next-step-item-disabled:after{border-left-color:#f8f8f9;border-left-color:var(--step-arrow-item-disabled-background,#f8f8f9)}.next-step-arrow .next-step-item-disabled .next-step-item-container{cursor:not-allowed}.next-step-arrow .next-step-item-read-only,.next-step-arrow .next-step-item-read-only .next-step-item-container{cursor:default}.next-step-arrow .next-step-item-first{margin-left:0}.next-step-arrow .next-step-item-first:before{border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow .next-step-item-last{margin-right:0}.next-step-arrow .next-step-item-last:after{border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-circle .next-step-item-container{display:inline-block;vertical-align:middle;position:relative;padding:0 12px;padding:0 var(--step-circle-item-node-padding,12px)}.next-step-circle .next-step-item-container .next-step-item-progress .next-progress-circle-text{color:#0064c8;color:var(--step-circle-item-node-process-percent-color,#0064c8);font-size:12px;font-size:var(--step-circle-item-node-process-percent-size,12px)}.next-step-circle .next-step-item-container .next-step-item-progress .next-progress-circle-underlay{stroke:#c0c6cc;stroke:var(--step-circle-item-node-wait-border-color,#c0c6cc);stroke-width:3px;stroke-width:calc(var(--step-circle-item-node-border-width, 1px)*3)}.next-step-circle .next-step-item-container .next-step-item-progress .next-progress-circle-overlay-normal{stroke:#0064c8;stroke:var(--step-circle-item-node-finish-border-color,#0064c8);stroke-width:3px;stroke-width:calc(var(--step-circle-item-node-border-width, 1px)*3)}.next-step-circle .next-step-item-container .next-step-item-node-placeholder{display:inline-block}.next-step-circle>.next-step-item-wait .next-step-item-tail-overlay{background:#c0c6cc;background:var(--step-circle-item-tail-wait-color,#c0c6cc)}.next-step-circle>.next-step-item-wait .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-node{color:#333;color:var(--step-circle-item-node-wait-color,#333)}.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-node-circle,.next-step-circle>.next-step-item-wait>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-circle-item-node-wait-background,#fff);border-color:#c0c6cc;border-color:var(--step-circle-item-node-wait-border-color,#c0c6cc)}.next-step-circle>.next-step-item-wait .next-step-item-content,.next-step-circle>.next-step-item-wait .next-step-item-title{color:#333;color:var(--step-circle-item-title-wait-color,#333);word-break:break-word}.next-step-circle>.next-step-item-wait .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle>.next-step-item-wait .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle>.next-step-item-wait .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle>.next-step-item-wait .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle>.next-step-item-wait .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle>.next-step-item-wait .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle>.next-step-item-wait .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle>.next-step-item-process .next-step-item-tail-overlay{background:#c0c6cc;background:var(--step-circle-item-tail-process-color,#c0c6cc)}.next-step-circle>.next-step-item-process .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-node{color:#fff;color:var(--step-circle-item-node-process-color,#fff)}.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-node-circle,.next-step-circle>.next-step-item-process>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-circle-item-node-process-background,#0064c8);border-color:#0064c8;border-color:var(--step-circle-item-node-process-border-color,#0064c8)}.next-step-circle>.next-step-item-process .next-step-item-content,.next-step-circle>.next-step-item-process .next-step-item-title{color:#333;color:var(--step-circle-item-title-process-color,#333);word-break:break-word}.next-step-circle>.next-step-item-process .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle>.next-step-item-process .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle>.next-step-item-process .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle>.next-step-item-process .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle>.next-step-item-process .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle>.next-step-item-process .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle>.next-step-item-process .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle>.next-step-item-finish .next-step-item-tail-overlay{background:#0064c8;background:var(--step-circle-item-tail-finish-color,#0064c8)}.next-step-circle>.next-step-item-finish .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-node{color:#0064c8;color:var(--step-circle-item-node-finish-color,#0064c8)}.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-node-circle,.next-step-circle>.next-step-item-finish>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-circle-item-node-finish-background,#fff);border-color:#0064c8;border-color:var(--step-circle-item-node-finish-border-color,#0064c8)}.next-step-circle>.next-step-item-finish .next-step-item-content,.next-step-circle>.next-step-item-finish .next-step-item-title{color:#333;color:var(--step-circle-item-title-finish-color,#333);word-break:break-word}.next-step-circle>.next-step-item-finish .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle>.next-step-item-finish .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle>.next-step-item-finish .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle>.next-step-item-finish .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle>.next-step-item-finish .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle>.next-step-item-finish .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle>.next-step-item-finish .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle .next-step-item-disabled .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-circle-item-tail-disabled-color,#e3e4e6)}.next-step-circle .next-step-item-disabled .next-step-item-tail-underlay{background:#fff;background:var(--step-circle-item-tail-bg-color,#fff)}.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-progress{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px)}.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-node{color:#b3b3b3;color:var(--step-circle-item-node-disabled-color,#b3b3b3)}.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-node-circle,.next-step-circle .next-step-item-disabled>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-circle-item-node-disabled-background,#fff);border-color:#e3e4e6;border-color:var(--step-circle-item-node-disabled-border-color,#e3e4e6)}.next-step-circle .next-step-item-disabled .next-step-item-content,.next-step-circle .next-step-item-disabled .next-step-item-title{color:#b3b3b3;color:var(--step-circle-item-title-disabled-color,#b3b3b3);word-break:break-word}.next-step-circle .next-step-item-disabled .next-step-item-content{font-size:12px;font-size:var(--step-circle-item-content-font-size,12px)}.next-step-circle .next-step-item-disabled .next-step-item-node-placeholder{width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);position:relative}.next-step-circle .next-step-item-disabled .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-circle .next-step-item-disabled .next-step-item-node-circle{display:block;width:28px;width:var(--step-circle-item-node-process-size,28px);height:28px;height:var(--step-circle-item-node-process-size,28px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:26px;line-height:calc(var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-circle .next-step-item-disabled .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-circle .next-step-item-disabled .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-circle .next-step-item-disabled .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-circle .next-step-item-disabled .next-step-item-node,.next-step-circle .next-step-item-disabled .next-step-item-node-placeholder{cursor:not-allowed}.next-step-circle .next-step-item-read-only .next-step-item-node,.next-step-circle .next-step-item-read-only .next-step-item-node-placeholder{cursor:default}.next-step-circle .next-step-item-last .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal{text-align:center;white-space:nowrap}.next-step-circle.next-step-horizontal>.next-step-item .next-step-item-content,.next-step-circle.next-step-horizontal>.next-step-item .next-step-item-title{white-space:normal}.next-step-circle.next-step-horizontal>.next-step-item-wait .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-wait>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal>.next-step-item-process .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-process>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal>.next-step-item-finish .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-finish>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal>.next-step-item-disabled .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 52px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2);vertical-align:middle}.next-step-circle.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-circle-item-tail-size,1px);position:relative}.next-step-circle.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-circle-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-circle.next-step-horizontal>.next-step-item-disabled>.next-step-item-body{width:96px;width:var(--step-circle-item-body-width,96px);left:-22px;left:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);text-align:center;position:absolute}.next-step-circle.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{font-size:14px;font-size:var(--step-circle-item-title-size,14px);line-height:18px;line-height:calc(var(--step-circle-item-title-size, 14px) + 4px);margin-top:8px;margin-top:var(--step-circle-item-title-margin-top,8px);font-weight:600;font-weight:var(--step-circle-item-title-weight,600)}.next-step-circle.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-circle-item-content-margin-top,8px)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item{vertical-align:unset}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item:last-child .next-step-item-tail{display:none}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body{position:relative;display:inline-block;top:0;left:0;max-width:96px;max-width:var(--step-circle-item-body-width,96px);overflow:hidden;vertical-align:top;text-align:left}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body .next-step-item-title{display:inline-block;padding-right:12px;padding-right:var(--step-circle-item-node-padding,12px);margin-top:7px;margin-top:calc(var(--step-circle-item-node-process-size, 28px)/2 - var(--step-circle-item-title-size, 14px)/2)}.next-step-circle.next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-tail{width:calc(100% - 148px);width:calc(100% - var(--step-circle-item-node-process-size, 28px) - var(--step-circle-item-node-padding, 12px)*2 - var(--step-circle-item-body-width, 96px));position:absolute;right:0;margin-top:-1px;margin-top:calc(0px - var(--step-circle-vertical-item-tail-size, 1px))}.next-step-circle.next-step-vertical{font-size:0;display:table-cell;vertical-align:middle;position:relative}.next-step-circle.next-step-vertical .next-step-item-container{padding:0}.next-step-circle.next-step-vertical>.next-step-item:last-child .next-step-item-tail{display:block;visibility:hidden}.next-step-circle.next-step-vertical>.next-step-item-wait .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-wait>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-circle.next-step-vertical>.next-step-item-process .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-process>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-circle.next-step-vertical>.next-step-item-finish .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-finish>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-circle.next-step-vertical>.next-step-item-disabled .next-step-item-tail{width:1px;width:var(--step-circle-vertical-item-tail-size,1px);height:0;margin:12px auto;margin:var(--step-circle-item-node-padding,12px) auto}.next-step-circle.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px);position:relative}.next-step-circle.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-circle-vertical-item-tail-size,1px)}.next-step-circle.next-step-vertical>.next-step-item-disabled>.next-step-item-body{position:absolute;top:0;left:14px;left:calc(var(--step-circle-item-node-process-size, 28px)/2);margin-left:12px;margin-left:var(--step-circle-item-node-padding,12px)}.next-step-circle.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{margin-top:8px;margin-top:var(--step-circle-vertical-item-title-margin-top,8px);text-align:left;font-weight:600;font-weight:var(--step-circle-item-title-weight,600);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-circle-vertical-item-content-margin-top,4px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-circle-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-circle-item-content-font-size, 12px) + 4px)}.next-step-dot .next-step-item-container{display:inline-block;vertical-align:middle;position:relative;padding:0 8px;padding:0 var(--step-dot-item-dot-padding,8px);margin-top:-1px;margin-bottom:-1px}.next-step-dot .next-step-item-container .next-step-item-node-placeholder{display:inline-block}.next-step-dot .next-step-item-container .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot .next-step-item-container .next-step-item-node .next-icon .next-icon-remote,.next-step-dot .next-step-item-container .next-step-item-node .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-step-dot>.next-step-item-wait .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-dot-item-tail-wait-color,#e3e4e6)}.next-step-dot>.next-step-item-wait .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-node{color:#888;color:var(--step-dot-item-node-wait-color,#888)}.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-node-circle,.next-step-dot>.next-step-item-wait>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-dot-item-node-wait-background,#fff);border-color:#e3e4e6;border-color:var(--step-dot-item-node-wait-border-color,#e3e4e6)}.next-step-dot>.next-step-item-wait .next-step-item-content,.next-step-dot>.next-step-item-wait .next-step-item-title{color:#888;color:var(--step-dot-item-title-wait-color,#888);word-break:break-word}.next-step-dot>.next-step-item-wait .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot>.next-step-item-wait .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot>.next-step-item-wait .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot>.next-step-item-wait .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot>.next-step-item-wait .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot>.next-step-item-wait .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot>.next-step-item-wait .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot>.next-step-item-wait .next-step-item-content,.next-step-dot>.next-step-item-wait .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot>.next-step-item-wait .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot>.next-step-item-process .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-dot-item-tail-process-color,#e3e4e6)}.next-step-dot>.next-step-item-process .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-node{color:#0064c8;color:var(--step-dot-item-node-process-color,#0064c8)}.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-node-circle,.next-step-dot>.next-step-item-process>.next-step-item-container .next-step-item-node-dot{background:#0064c8;background:var(--step-dot-item-node-process-background,#0064c8);border-color:#0064c8;border-color:var(--step-dot-item-node-process-border-color,#0064c8)}.next-step-dot>.next-step-item-process .next-step-item-content,.next-step-dot>.next-step-item-process .next-step-item-title{color:#b3b3b3;color:var(--step-dot-item-title-process-color,#b3b3b3);word-break:break-word}.next-step-dot>.next-step-item-process .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot>.next-step-item-process .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot>.next-step-item-process .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot>.next-step-item-process .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot>.next-step-item-process .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot>.next-step-item-process .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot>.next-step-item-process .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot>.next-step-item-process .next-step-item-content,.next-step-dot>.next-step-item-process .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot>.next-step-item-process .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot>.next-step-item-finish .next-step-item-tail-overlay{background:#0064c8;background:var(--step-dot-item-tail-finish-color,#0064c8)}.next-step-dot>.next-step-item-finish .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-node{color:#0064c8;color:var(--step-dot-item-node-finish-color,#0064c8)}.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-node-circle,.next-step-dot>.next-step-item-finish>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-dot-item-node-finish-background,#fff);border-color:#0064c8;border-color:var(--step-dot-item-node-finish-border-color,#0064c8)}.next-step-dot>.next-step-item-finish .next-step-item-content,.next-step-dot>.next-step-item-finish .next-step-item-title{color:#b3b3b3;color:var(--step-dot-item-title-finish-color,#b3b3b3);word-break:break-word}.next-step-dot>.next-step-item-finish .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot>.next-step-item-finish .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot>.next-step-item-finish .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot>.next-step-item-finish .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot>.next-step-item-finish .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot>.next-step-item-finish .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot>.next-step-item-finish .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot>.next-step-item-finish .next-step-item-content,.next-step-dot>.next-step-item-finish .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot>.next-step-item-finish .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot .next-step-item-disabled .next-step-item-tail-overlay{background:#e3e4e6;background:var(--step-dot-item-tail-disabled-color,#e3e4e6)}.next-step-dot .next-step-item-disabled .next-step-item-tail-underlay{background:#f8f8f9;background:var(--step-dot-item-tail-bg-color,#f8f8f9)}.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-progress{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px)}.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-node{color:#e3e4e6;color:var(--step-dot-item-node-disabled-color,#e3e4e6)}.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-node-circle,.next-step-dot .next-step-item-disabled>.next-step-item-container .next-step-item-node-dot{background:#fff;background:var(--step-dot-item-node-disabled-background,#fff);border-color:#c0c6cc;border-color:var(--step-dot-item-node-disabled-border-color,#c0c6cc)}.next-step-dot .next-step-item-disabled .next-step-item-content,.next-step-dot .next-step-item-disabled .next-step-item-title{color:#c1c1c1;color:var(--step-dot-item-title-disabled-color,#c1c1c1);word-break:break-word}.next-step-dot .next-step-item-disabled .next-step-item-content{font-size:var(--step-circle-item-content-font-size,12px)}.next-step-dot .next-step-item-disabled .next-step-item-node-placeholder{width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);position:relative}.next-step-dot .next-step-item-disabled .next-step-item-node{position:relative;display:inline-block;text-align:center;cursor:pointer}.next-step-dot .next-step-item-disabled .next-step-item-node-circle{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);font-size:12px;font-size:var(--step-circle-item-node-font-size,12px);font-weight:400;font-weight:var(--font-weight-2,normal);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-circle-item-node-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-circle-item-node-border-width,1px) solid;border-radius:50%;border-radius:var(--step-circle-item-node-corner,50%);-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-step-dot .next-step-item-disabled .next-step-item-node-circle .next-icon{-webkit-animation:zoomIn .3s linear;animation:zoomIn .3s linear}.next-step-dot .next-step-item-disabled .next-step-item-node-circle .next-icon .next-icon-remote,.next-step-dot .next-step-item-disabled .next-step-item-node-circle .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-step-dot .next-step-item-disabled .next-step-item-content,.next-step-dot .next-step-item-disabled .next-step-item-node-dot{font-size:12px;font-size:var(--step-dot-item-content-font-size,12px)}.next-step-dot .next-step-item-disabled .next-step-item-node-dot{display:block;width:12px;width:var(--step-dot-item-dot-process-size,12px);height:12px;height:var(--step-dot-item-dot-process-size,12px);line-height:10px;line-height:calc(var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-border-width, 1px)*2);text-align:center;border:1px solid;border:var(--step-dot-item-dot-border-width,1px) solid;border-radius:50%;border-radius:var(--step-dot-item-dot-corner,50%);-webkit-transition:background-color .3s ease,border-color .3s ease;transition:background-color .3s ease,border-color .3s ease}.next-step-dot .next-step-item-disabled .next-step-item-node,.next-step-dot .next-step-item-disabled .next-step-item-node-placeholder{cursor:not-allowed}.next-step-dot .next-step-item-read-only .next-step-item-node,.next-step-dot .next-step-item-read-only .next-step-item-node-placeholder{cursor:default}.next-step-dot .next-step-item-last .next-step-item-tail{display:none}.next-step-dot.next-step-horizontal{text-align:center;white-space:nowrap}.next-step-dot.next-step-horizontal>.next-step-item .next-step-item-content,.next-step-dot.next-step-horizontal>.next-step-item .next-step-item-title{white-space:normal}.next-step-dot.next-step-horizontal .next-step-item-node .next-icon{vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-wait .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-wait>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-horizontal>.next-step-item-process .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-process>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-horizontal>.next-step-item-finish .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-finish>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-horizontal>.next-step-item-disabled .next-step-item-tail{display:inline-block;clear:both;width:calc(100% - 28px);width:calc(100% - var(--step-dot-item-dot-process-size, 12px) - var(--step-dot-item-dot-padding, 8px)*2);vertical-align:middle}.next-step-dot.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{display:block;height:1px;height:var(--step-dot-item-tail-size,1px);position:relative}.next-step-dot.next-step-horizontal>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:1px;height:var(--step-dot-item-tail-size,1px);-webkit-transition:all .1s linear;transition:all .1s linear;width:100%}.next-step-dot.next-step-horizontal>.next-step-item-disabled>.next-step-item-body{width:96px;width:var(--step-dot-item-body-width,96px);left:-34px;left:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);text-align:center;position:absolute}.next-step-dot.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{font-size:12px;font-size:var(--step-dot-item-title-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-title-size, 12px) + 4px);margin-top:8px;margin-top:var(--step-dot-item-title-margin-top,8px);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold)}.next-step-dot.next-step-horizontal>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:4px;margin-top:var(--step-dot-item-content-margin-top,4px)}.next-step-dot.next-step-vertical{padding:0 0 0 4px;font-size:0;display:table-cell;position:relative}.next-step-dot.next-step-vertical .next-step-item-container{padding:0}.next-step-dot.next-step-vertical>.next-step-item:last-child .next-step-item-tail{display:block;visibility:hidden}.next-step-dot.next-step-vertical>.next-step-item-wait .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-wait .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-wait>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-dot.next-step-vertical>.next-step-item-process .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-process .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-process>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-dot.next-step-vertical>.next-step-item-finish .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-finish .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-finish>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-dot.next-step-vertical>.next-step-item-disabled .next-step-item-tail{width:1px;width:var(--step-dot-vertical-item-tail-size,1px);height:0;margin:8px auto;margin:var(--step-dot-item-dot-padding,8px) auto}.next-step-dot.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-underlay{height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px);position:relative}.next-step-dot.next-step-vertical>.next-step-item-disabled .next-step-item-tail .next-step-item-tail-overlay{position:absolute;top:0;height:100%;width:1px;width:var(--step-dot-vertical-item-tail-size,1px)}.next-step-dot.next-step-vertical>.next-step-item-disabled>.next-step-item-body{position:absolute;top:0;left:6px;left:calc(var(--step-dot-item-dot-process-size, 12px)/2);margin-left:8px;margin-left:var(--step-dot-item-dot-padding,8px)}.next-step-dot.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{margin-top:0;margin-top:var(--step-dot-vertical-item-title-margin-top,0);font-weight:700;font-weight:var(--step-dot-item-title-weight,bold);text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot.next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{margin-top:8px;margin-top:var(--step-dot-vertical-item-content-margin-top,8px);min-height:8px;text-align:left;font-size:12px;font-size:var(--step-dot-item-content-font-size,12px);line-height:16px;line-height:calc(var(--step-dot-item-content-font-size, 12px) + 4px)}.next-step-horizontal[dir=rtl]>.next-step-item{text-align:right}.next-step-arrow[dir=rtl] .next-step-item{height:32px;height:var(--step-arrow-item-height,32px);line-height:32px;line-height:var(--step-arrow-item-height,32px);margin-left:4px;margin-left:calc(var(--step-arrow-item-height, 32px)/8);margin-right:16px;margin-right:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl] .next-step-item:before{right:-16px;right:calc(0px - var(--step-arrow-item-height, 32px)/2);left:auto;border:16px solid transparent;border:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow[dir=rtl] .next-step-item:after{left:-32px;left:calc(0px - var(--step-arrow-item-height, 32px)/2*2);right:auto;border-top:16px solid transparent;border-top:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-bottom:16px solid transparent;border-bottom:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-right:16px solid transparent;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent}.next-step-arrow[dir=rtl]>.next-step-item-wait{background:#f7f9fa;background:var(--step-arrow-item-wait-background,#f7f9fa)}.next-step-arrow[dir=rtl]>.next-step-item-wait .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl]>.next-step-item-wait:before{border:16px solid #f7f9fa;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl]>.next-step-item-wait:after{border-right-color:#f7f9fa;border-right-color:var(--step-arrow-item-wait-background,#f7f9fa);border-left-color:transparent}.next-step-arrow[dir=rtl]>.next-step-item-process{background:#0064c8;background:var(--step-arrow-item-process-background,#0064c8)}.next-step-arrow[dir=rtl]>.next-step-item-process .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl]>.next-step-item-process:before{border:16px solid #0064c8;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl]>.next-step-item-process:after{border-right-color:#0064c8;border-right-color:var(--step-arrow-item-process-background,#0064c8);border-left-color:transparent}.next-step-arrow[dir=rtl]>.next-step-item-finish{background:#0064c8;background:var(--step-arrow-item-finish-background,#0064c8)}.next-step-arrow[dir=rtl]>.next-step-item-finish .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl]>.next-step-item-finish:before{border:16px solid #0064c8;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl]>.next-step-item-finish:after{border-right-color:#0064c8;border-right-color:var(--step-arrow-item-finish-background,#0064c8);border-left-color:transparent}.next-step-arrow[dir=rtl] .next-step-item-disabled{background:#f8f8f9;background:var(--step-arrow-item-disabled-background,#f8f8f9)}.next-step-arrow[dir=rtl] .next-step-item-disabled .next-step-item-node-dot{right:50%;left:auto}.next-step-arrow[dir=rtl] .next-step-item-disabled:before{border:16px solid #f8f8f9;border-right:calc(var(--step-arrow-item-height, 32px)/2) solid transparent;border-style:solid;border-width:calc(var(--step-arrow-item-height, 32px)/2)}.next-step-arrow[dir=rtl] .next-step-item-disabled:after{border-right-color:#f8f8f9;border-right-color:var(--step-arrow-item-disabled-background,#f8f8f9);border-left-color:transparent}.next-step-arrow[dir=rtl] .next-step-item-first{margin-right:0}.next-step-arrow[dir=rtl] .next-step-item-last{margin-left:0}.next-step-circle[dir=rtl] .next-step-item-disabled .next-step-item-node-dot,.next-step-circle[dir=rtl]>.next-step-item-finish .next-step-item-node-dot,.next-step-circle[dir=rtl]>.next-step-item-process .next-step-item-node-dot,.next-step-circle[dir=rtl]>.next-step-item-wait .next-step-item-node-dot{right:50%;left:auto}.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-disabled>.next-step-item-body,.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-finish>.next-step-item-body,.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-process>.next-step-item-body,.next-step-circle[dir=rtl].next-step-horizontal>.next-step-item-wait>.next-step-item-body{right:-22px;right:calc(0px - var(--step-circle-item-body-width, 96px)/2 + var(--step-circle-item-node-process-size, 28px)/2 + var(--step-circle-item-node-padding, 12px)*2/2);left:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-wait .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-process .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-finish .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body{left:auto;right:0;text-align:right}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-body .next-step-item-title{padding-left:12px;padding-left:var(--step-circle-item-node-padding,12px);padding-right:0}.next-step-circle[dir=rtl].next-step-horizontal.next-step-label-horizontal>.next-step-item-disabled .next-step-item-tail{left:0;right:auto}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body{right:14px;right:calc(var(--step-circle-item-node-process-size, 28px)/2);left:auto;margin-right:12px;margin-right:var(--step-circle-item-node-padding,12px);margin-left:0}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-circle[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl] .next-step-item-disabled .next-step-item-node-dot,.next-step-dot[dir=rtl]>.next-step-item-finish .next-step-item-node-dot,.next-step-dot[dir=rtl]>.next-step-item-process .next-step-item-node-dot,.next-step-dot[dir=rtl]>.next-step-item-wait .next-step-item-node-dot{right:50%;left:auto}.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-disabled>.next-step-item-body,.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-finish>.next-step-item-body,.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-process>.next-step-item-body,.next-step-dot[dir=rtl].next-step-horizontal>.next-step-item-wait>.next-step-item-body{right:-34px;right:calc(0px - var(--step-dot-item-body-width, 96px)/2 + var(--step-dot-item-dot-process-size, 12px)/2 + var(--step-dot-item-dot-padding, 8px)*2/2);left:auto}.next-step-dot[dir=rtl].next-step-vertical{padding:0 4px 0 0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-wait>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-process>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-finish>.next-step-item-body>.next-step-item-content{text-align:right}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body{right:6px;right:calc(var(--step-dot-item-dot-process-size, 12px)/2);left:auto;margin-right:8px;margin-right:var(--step-dot-item-dot-padding,8px);margin-left:0}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-title{text-align:right;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size:var(--font-size-body-1,12px);line-height:1.28571}.next-step-dot[dir=rtl].next-step-vertical>.next-step-item-disabled>.next-step-item-body>.next-step-item-content{text-align:right}.next-switch:after[dir=rtl]{content:" ";-webkit-transition:all .1s linear;transition:all .1s linear;-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}.next-switch-medium[dir=rtl]:after,.next-switch-small[dir=rtl]:after{right:100%;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.next-switch-on[dir=rtl]>.next-switch-children{color:#fff;color:var(--switch-normal-on-color-font,#fff)}.next-switch-on[disabled][dir=rtl]:after{left:0;right:100%;-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none)}.next-switch-off[dir=rtl]:after{right:0;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-box-shadow:0 0 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--switch-rtl-on-shadow,0 0 4px 0 rgba(0,0,0,.16));box-shadow:0 0 4px 0 rgba(0,0,0,.16);box-shadow:var(--switch-rtl-on-shadow,0 0 4px 0 rgba(0,0,0,.16))}.next-switch-off.next-switch-small[dir=rtl]>.next-switch-children,.next-switch-off[dir=rtl]>.next-switch-children{right:auto}.next-switch{outline:none;text-align:left;cursor:pointer;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-transition:background .1s cubic-bezier(.4,0,.2,1),border-color .1s cubic-bezier(.4,0,.2,1);transition:background .1s cubic-bezier(.4,0,.2,1),border-color .1s cubic-bezier(.4,0,.2,1)}.next-switch,.next-switch *,.next-switch :after,.next-switch :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-switch-btn{-webkit-transition:all .15s cubic-bezier(.4,0,.2,1);transition:all .15s cubic-bezier(.4,0,.2,1);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}.next-switch:after{content:""}.next-switch-loading{pointer-events:none}.next-switch-loading .next-icon-loading{color:#0064c8;color:var(--color-brand1-6,#0064c8);text-align:center;-webkit-transform:translate(-1px,-1px);-webkit-transform:translate(calc(0px - var(--switch-border-width-trigger, 1px)),calc(0px - var(--switch-border-width-trigger, 1px)));-ms-transform:translate(-1px,-1px);-ms-transform:translate(calc(0px - var(--switch-border-width-trigger, 1px)),calc(0px - var(--switch-border-width-trigger, 1px)));transform:translate(-1px,-1px);transform:translate(calc(0px - var(--switch-border-width-trigger, 1px)),calc(0px - var(--switch-border-width-trigger, 1px)))}.next-switch-loading .next-icon-loading.next-switch-inner-icon:before{vertical-align:top}.next-switch-medium{position:relative;display:inline-block;border:2px solid transparent;border:var(--switch-border-width-container,2px) solid transparent;width:48px;width:var(--switch-size-m-width,48px);height:24px;height:calc(var(--switch-size-m-trigger, 20px) + var(--switch-border-width-container, 2px)*2);border-radius:12px;border-radius:var(--switch-size-m-radius-container,12px)}.next-switch-medium:not([disabled]):active .next-switch-btn{width:26px;width:calc(var(--switch-size-m-trigger, 20px)*1.3)}.next-switch-medium.next-switch-on:not([disabled]):active .next-switch-btn{left:calc(100% - 26px);left:calc(100% - var(--switch-size-m-trigger, 20px)*1.3)}.next-switch-medium.next-switch-auto-width{min-width:48px;min-width:var(--switch-size-m-width,48px);width:auto;overflow:initial}.next-switch-medium:after{content:""}.next-switch-medium>.next-switch-btn{border:1px solid transparent;border:var(--switch-border-width-trigger,1px) solid transparent;position:absolute;left:calc(100% - 20px);left:calc(100% - var(--switch-size-m-trigger, 20px));width:20px;width:var(--switch-size-m-trigger,20px);height:20px;height:var(--switch-size-m-trigger,20px);border-radius:50%;border-radius:var(--switch-size-m-radius-trigger,50%);-webkit-box-sizing:border-box;box-sizing:border-box}.next-switch-medium>.next-switch-children{font-size:12px;font-size:var(--font-size-body-1,12px);height:20px;height:var(--switch-size-m-trigger,20px);line-height:20px;line-height:var(--switch-size-m-trigger,20px)}.next-switch-medium.next-switch.next-switch-on>.next-switch-children{margin:0 28px 0 8px;margin:0 calc(var(--switch-size-m-trigger, 20px) + var(--switch-size-m-trigger-padding-r, 8px)) 0 var(--switch-size-m-trigger-padding-l,8px)}.next-switch-medium.next-switch.next-switch-off>.next-switch-children{margin:0 8px 0 28px;margin:0 var(--switch-size-m-trigger-padding-r,8px) 0 calc(var(--switch-size-m-trigger, 20px) + var(--switch-size-m-trigger-padding-l, 8px))}.next-switch-medium.next-switch-loading .next-icon-loading{line-height:20px;line-height:var(--switch-size-m-trigger,20px);height:20px;height:var(--switch-size-m-trigger,20px);width:20px;width:var(--switch-size-m-trigger,20px)}.next-switch-medium.next-switch-loading .next-icon-loading .next-icon-remote,.next-switch-medium.next-switch-loading .next-icon-loading:before{width:16px;width:var(--switch-size-m-inner-icon,16px);font-size:16px;font-size:var(--switch-size-m-inner-icon,16px);line-height:inherit}.next-switch-small{position:relative;display:inline-block;border:2px solid transparent;border:var(--switch-border-width-container,2px) solid transparent;width:40px;width:var(--switch-size-s-width,40px);height:20px;height:calc(var(--switch-size-s-trigger, 16px) + var(--switch-border-width-container, 2px)*2);border-radius:12px;border-radius:var(--switch-size-s-radius-container,12px)}.next-switch-small:not([disabled]):active .next-switch-btn{width:20.8px;width:calc(var(--switch-size-s-trigger, 16px)*1.3)}.next-switch-small.next-switch-on:not([disabled]):active .next-switch-btn{left:calc(100% - 20.8px);left:calc(100% - var(--switch-size-s-trigger, 16px)*1.3)}.next-switch-small.next-switch-auto-width{min-width:40px;min-width:var(--switch-size-s-width,40px);width:auto;overflow:initial}.next-switch-small:after{content:""}.next-switch-small>.next-switch-btn{border:1px solid transparent;border:var(--switch-border-width-trigger,1px) solid transparent;position:absolute;left:calc(100% - 16px);left:calc(100% - var(--switch-size-s-trigger, 16px));width:16px;width:var(--switch-size-s-trigger,16px);height:16px;height:var(--switch-size-s-trigger,16px);border-radius:50%;border-radius:var(--switch-size-s-radius-trigger,50%);-webkit-box-sizing:border-box;box-sizing:border-box}.next-switch-small>.next-switch-children{font-size:12px;font-size:var(--font-size-body-1,12px);height:16px;height:var(--switch-size-s-trigger,16px);line-height:16px;line-height:var(--switch-size-s-trigger,16px)}.next-switch-small.next-switch.next-switch-on>.next-switch-children{margin:0 24px 0 8px;margin:0 calc(var(--switch-size-s-trigger, 16px) + var(--switch-size-s-trigger-padding-r, 8px)) 0 var(--switch-size-s-trigger-padding-l,8px)}.next-switch-small.next-switch.next-switch-off>.next-switch-children{margin:0 8px 0 24px;margin:0 var(--switch-size-s-trigger-padding-r,8px) 0 calc(var(--switch-size-s-trigger, 16px) + var(--switch-size-s-trigger-padding-l, 8px))}.next-switch-small.next-switch-loading .next-icon-loading{line-height:16px;line-height:var(--switch-size-s-trigger,16px);height:16px;height:var(--switch-size-s-trigger,16px);width:16px;width:var(--switch-size-s-trigger,16px)}.next-switch-small.next-switch-loading .next-icon-loading .next-icon-remote,.next-switch-small.next-switch-loading .next-icon-loading:before{width:12px;width:var(--switch-size-s-inner-icon,12px);font-size:12px;font-size:var(--switch-size-s-inner-icon,12px);line-height:inherit}.next-switch-on{background-color:#00a700;background-color:var(--switch-normal-on-bg-color,#00a700)}.next-switch-on .next-switch-btn{-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none);background-color:#fff;background-color:var(--switch-normal-on-trigger-bg-color,#fff);border-color:transparent;border-color:var(--switch-handle-on-border-color,transparent)}.next-switch-on>.next-switch-children{color:#fff;color:var(--switch-normal-on-color-font,#fff)}.next-switch-on.hover,.next-switch-on:focus,.next-switch-on:hover{background-color:#00a700;background-color:var(--switch-hover-on-bg-color,#00a700)}.next-switch-on.hover .next-switch-btn,.next-switch-on:focus .next-switch-btn,.next-switch-on:hover .next-switch-btn{background-color:#fff;background-color:var(--switch-hover-on-trigger-bg-color,#fff)}.next-switch-on[disabled]{background-color:#d1d5d9;background-color:var(--switch-disabled-on-bg-color,#d1d5d9);cursor:not-allowed}.next-switch-on[disabled] .next-switch-btn{right:0;-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none);background-color:#fff;background-color:var(--switch-disabled-on-trigger-bg-color,#fff);border-color:transparent;border-color:var(--switch-handle-disabled-border-color,transparent)}.next-switch-on[disabled]>.next-switch-children{color:#b3b3b3;color:var(--switch-disabled-on-color-font,#b3b3b3)}.next-switch-off{background-color:#666;background-color:var(--switch-normal-off-bg-color,#666);border-color:transparent;border-color:var(--switch-normal-off-border-color,transparent)}.next-switch-off.hover,.next-switch-off:focus,.next-switch-off:hover{background-color:#577899;background-color:var(--switch-hover-off-bg-color,#577899);border-color:transparent;border-color:var(--switch-hover-off-border-color,transparent)}.next-switch-off .next-switch-btn{left:0;-webkit-box-shadow:none;-webkit-box-shadow:var(--switch-on-shadow,none);box-shadow:none;box-shadow:var(--switch-on-shadow,none);background-color:#fff;background-color:var(--switch-normal-off-trigger-bg-color,#fff);border-color:transparent;border-color:var(--switch-handle-off-border-color,transparent)}.next-switch-off.hover .next-switch-btn,.next-switch-off:focus .next-switch-btn,.next-switch-off:hover .next-switch-btn{background-color:#fff;background-color:var(--switch-hover-off-trigger-bg-color,#fff)}.next-switch-off>.next-switch-children{color:#f8f8f9;color:var(--switch-normal-off-color-font,#f8f8f9)}.next-switch-off[disabled]{background-color:#d1d5d9;background-color:var(--switch-disabled-off-bg-color,#d1d5d9);cursor:not-allowed}.next-switch-off[disabled] .next-switch-btn{-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--switch-off-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--switch-off-shadow,0 2px 4px 0 rgba(0,0,0,.16));background-color:#f8f8f9;background-color:var(--switch-disabled-off-trigger-bg-color,#f8f8f9);border-color:transparent;border-color:var(--switch-handle-disabled-border-color,transparent)}.next-switch-off[disabled]>.next-switch-children{color:#555;color:var(--switch-disabled-off-color-font,#555)}.next-tabs{width:100%}.next-tabs,.next-tabs *,.next-tabs :after,.next-tabs :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tabs-bar{outline:none}.next-tabs-bar-popup{overflow-y:auto;max-height:480px}.next-tabs-nav-container{position:relative}.next-tabs-nav-container:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-tabs-nav-wrap{overflow:hidden}.next-tabs-nav-scroll{overflow:hidden;white-space:nowrap}.next-tabs-scrollable .next-tabs-nav-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.next-tabs-scrollable .next-tabs-nav-scroll::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;-webkit-appearance:none;opacity:0!important}.next-tabs-nav{display:inline-block;position:relative;-webkit-transition:all .3s ease;transition:all .3s ease;list-style:none;padding:0;margin:0}.next-tabs-nav-appear,.next-tabs-nav-enter{-webkit-animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-tabs-nav-leave{-webkit-animation:fadeOutLeft .2s cubic-bezier(.78,.14,.15,.86);animation:fadeOutLeft .2s cubic-bezier(.78,.14,.15,.86);-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-tabs-nav.next-disable-animation .next-tabs-tab:before{-webkit-transition:none;transition:none}.next-tabs-tab{display:inline-block;position:relative;-webkit-transition:all .1s linear;transition:all .1s linear}.next-tabs-tab-inner{position:relative;cursor:pointer;text-decoration:none}.next-tabs-tab:before{content:"";position:absolute;-webkit-transition:all .3s ease;transition:all .3s ease}.next-tabs-tab.active{font-weight:600;font-weight:var(--tab-item-font-weight-selected,600)}.next-tabs-tab .next-tabs-tab-close{color:#555;color:var(--tab-close-icon-color,#555)}.next-tabs-tab .next-tabs-tab-close:hover{color:#111;color:var(--tab-close-icon-color-hover,#111)}.next-tabs-tab .next-tabs-tab-close:focus{outline:none}.next-tabs-tab.active .next-tabs-tab-close{color:#0064c8;color:var(--tab-close-icon-color-selected,#0064c8)}.next-tabs-tab.disabled .next-tabs-tab-close{color:#c0c6cc;color:var(--tab-close-icon-color-disabled,#c0c6cc)}.next-tabs-tab:focus{outline:none}.next-tabs-tabpane{visibility:hidden;opacity:0}.next-tabs-tabpane.active{visibility:visible;opacity:1;height:auto}.next-tabs-tabpane.hidden{overflow:hidden;height:0!important;margin:0!important;padding:0!important;border:0!important}.next-tabs-btn-down,.next-tabs-btn-next,.next-tabs-btn-prev{position:absolute;top:0;cursor:pointer;padding:0;border:0;outline:none;height:100%;background:transparent;border-color:transparent}.next-tabs-btn-down,.next-tabs-btn-down.visited,.next-tabs-btn-down:link,.next-tabs-btn-down:visited,.next-tabs-btn-next,.next-tabs-btn-next.visited,.next-tabs-btn-next:link,.next-tabs-btn-next:visited,.next-tabs-btn-prev,.next-tabs-btn-prev.visited,.next-tabs-btn-prev:link,.next-tabs-btn-prev:visited{color:#333;color:var(--tab-nav-arrow-color-normal,#333)}.next-tabs-btn-down.active,.next-tabs-btn-down.hover,.next-tabs-btn-down:active,.next-tabs-btn-down:focus,.next-tabs-btn-down:hover,.next-tabs-btn-next.active,.next-tabs-btn-next.hover,.next-tabs-btn-next:active,.next-tabs-btn-next:focus,.next-tabs-btn-next:hover,.next-tabs-btn-prev.active,.next-tabs-btn-prev.hover,.next-tabs-btn-prev:active,.next-tabs-btn-prev:focus,.next-tabs-btn-prev:hover{color:#0064c8;color:var(--tab-nav-arrow-color-hover,#0064c8);background:transparent;border-color:transparent;text-decoration:none}.next-tabs-btn-down.disabled,.next-tabs-btn-next.disabled,.next-tabs-btn-prev.disabled{cursor:not-allowed;color:#555;color:var(--tab-nav-arrow-color-disabled,#555)}.next-tabs-btn-next{right:12px;right:var(--tab-nav-arrow-right-positon-right,12px)}.next-tabs-btn-prev{right:32px;right:var(--tab-nav-arrow-left-positon-right,32px)}.next-tabs-btn-down{right:8px;right:var(--tab-nav-arrow-down-positon-right,8px)}.next-tabs .next-tab-icon-dropdown:before{content:"\ea1f";content:var(--tab-icon-dropdown-content,"")}.next-tabs .next-tab-icon-prev:before{content:"\ea2c";content:var(--tab-icon-prev-content,"")}.next-tabs .next-tab-icon-next:before{content:"\ea29";content:var(--tab-icon-next-content,"")}.next-tabs-content{overflow:hidden}.next-tabs-vertical>.next-tabs-bar .next-tabs-nav{width:100%}.next-tabs-vertical>.next-tabs-bar .next-tabs-tab{display:block}.next-tabs.next-medium .next-tabs-nav-container-scrolling{padding-right:60px;padding-right:var(--tab-nav-scroll-padding-right-m,60px)}.next-tabs.next-medium .next-tabs-tab-inner{font-size:14px;font-size:var(--tab-item-text-size-m,14px);padding:12px 16px;padding:var(--tab-item-padding-tb-size-m,12px) var(--tab-item-padding-lr-size-m,16px)}.next-tabs.next-medium .next-tabs-tab-inner .next-icon{line-height:1}.next-tabs.next-medium .next-tabs-tab-inner .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-tab-inner .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tabs.next-medium .next-tabs-tab-inner .next-tabs-tab-close{margin-left:8px;margin-left:var(--tab-nav-close-icon-padding-l-size-m,8px)}.next-tabs.next-medium .next-tabs-btn-down .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-btn-down .next-icon:before,.next-tabs.next-medium .next-tabs-btn-next .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-btn-next .next-icon:before,.next-tabs.next-medium .next-tabs-btn-prev .next-icon .next-icon-remote,.next-tabs.next-medium .next-tabs-btn-prev .next-icon:before,.next-tabs.next-medium .next-tabs-tab-inner .next-tabs-tab-close .next-icon-remote,.next-tabs.next-medium .next-tabs-tab-inner .next-tabs-tab-close:before{width:12px;font-size:12px;line-height:inherit}.next-tabs.next-small .next-tabs-nav-container-scrolling{padding-right:56px;padding-right:var(--tab-nav-scroll-padding-right-s,56px)}.next-tabs.next-small .next-tabs-tab-inner{font-size:12px;font-size:var(--tab-item-text-size-s,12px);padding:8px 16px;padding:var(--tab-item-padding-tb-size-s,8px) var(--tab-item-padding-lr-size-s,16px)}.next-tabs.next-small .next-tabs-tab-inner .next-icon{line-height:1}.next-tabs.next-small .next-tabs-tab-inner .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-tab-inner .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close{margin-left:8px;margin-left:var(--tab-nav-close-icon-padding-l-size-s,8px)}.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close .next-icon-remote,.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close:before{width:8px;font-size:8px;line-height:inherit}@media (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);margin-left:-4px;margin-right:-4px}.next-tabs.next-small .next-tabs-tab-inner .next-tabs-tab-close:before{width:16px;font-size:16px}}.next-tabs.next-small .next-tabs-btn-down .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-btn-down .next-icon:before,.next-tabs.next-small .next-tabs-btn-next .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-btn-next .next-icon:before,.next-tabs.next-small .next-tabs-btn-prev .next-icon .next-icon-remote,.next-tabs.next-small .next-tabs-btn-prev .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tabs-pure>.next-tabs-bar{border-bottom:1px solid #e3e4e6;border-bottom:var(--line-solid,solid) var(--tab-pure-divider-line-width,1px) var(--tab-pure-divider-border-color,#e3e4e6);background-color:transparent;background-color:var(--tab-pure-bg-color,transparent)}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container{margin-bottom:-1px;margin-bottom:calc(0px - var(--tab-pure-divider-line-width, 1px));-webkit-box-shadow:none;-webkit-box-shadow:var(--tab-pure-divider-shadow,none);box-shadow:none;box-shadow:var(--tab-pure-divider-shadow,none)}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab{color:#333;color:var(--tab-pure-text-color-normal,#333);background-color:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab:hover{cursor:pointer;color:#0064c8;color:var(--tab-pure-text-color-hover,#0064c8);background-color:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-pure-text-color-selected,#0064c8);background-color:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c0c6cc;color:var(--tab-pure-text-color-disabled,#c0c6cc);background:transparent}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab:before{border-radius:0;width:0;border-bottom:2px solid #0064c8;border-bottom:var(--tab-pure-ink-bar-width,2px) solid var(--tab-pure-ink-bar-color,#0064c8);left:50%;bottom:0}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-container .next-tabs-tab.active:before{width:100%;left:0}.next-tabs-wrapped>.next-tabs-bar{background:transparent;background:var(--tab-wrapped-bar-bg-color,transparent)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab{color:#333;color:var(--tab-wrapped-text-color,#333);background-color:#fff;background-color:var(--tab-wrapped-bg-color,#fff)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab:hover{cursor:pointer;color:#333;color:var(--tab-wrapped-text-color-hover,#333);background-color:#f8f8f9;background-color:var(--tab-wrapped-bg-color-hover,#f8f8f9)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-wrapped-text-color-selected,#0064c8);background-color:#fff;background-color:var(--tab-wrapped-bg-color-selected,#fff)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c1c1c1;color:var(--tab-wrapped-text-color-disabled,#c1c1c1);background:#f8f8f9;background:var(--tab-wrapped-bg-color-disabled,#f8f8f9)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab .next-tabs-tab-close{color:#555;color:var(--tab-close-icon-color,#555)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab .next-tabs-tab-close:hover{color:#111;color:var(--tab-close-icon-color-hover,#111)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab .next-tabs-tab-close:focus{outline:none}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.active .next-tabs-tab-close{color:#0064c8;color:var(--tab-close-icon-color-selected,#0064c8)}.next-tabs-wrapped>.next-tabs-bar .next-tabs-tab.disabled .next-tabs-tab-close{color:#c0c6cc;color:var(--tab-close-icon-color-disabled,#c0c6cc)}.next-tabs-wrapped:after,.next-tabs-wrapped:before{content:"";display:table}.next-tabs-wrapped:after{clear:both}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar,.next-tabs-wrapped>.next-tabs-content{position:relative}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab{margin-right:-1px;margin-right:var(--tab-wrapped-tab-margin-right,-1px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:var(--tab-wrapped-tab-corner-radius,0) var(--tab-wrapped-tab-corner-radius,0) 0 0;border-width:1px;border-width:var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab.active{border-color:#e3e4e6 #e3e4e6 #fff;border-color:var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-bg-color-selected,#fff)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);width:0;border-top:2px solid #0064c8;border-top:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);left:50%;top:-1px;top:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab.active:before{width:100%;left:0;left:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-tab.active{border-width:1px;border-width:var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-top>.next-tabs-bar:before{content:"";position:absolute;top:100%;width:100%;height:0;border-bottom:1px solid #e3e4e6;border-bottom:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6);-webkit-transform:translateY(-1px);-webkit-transform:translateY(calc(0px - var(--tab-wrapped-content-border-line-width, 1px)));-ms-transform:translateY(-1px);-ms-transform:translateY(calc(0px - var(--tab-wrapped-content-border-line-width, 1px)));transform:translateY(-1px);transform:translateY(calc(0px - var(--tab-wrapped-content-border-line-width, 1px)));display:block}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar{position:relative}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab{margin-right:-1px;margin-right:var(--tab-wrapped-tab-margin-right,-1px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:0 0 var(--tab-wrapped-tab-corner-radius,0) var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab.active{border-color:#fff #e3e4e6 #e3e4e6;border-color:var(--tab-wrapped-bg-color-selected,#fff) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);width:0;border-bottom:2px solid #0064c8;border-bottom:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);left:50%;bottom:-1px;bottom:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-tab.active:before{width:100%;left:0;left:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-bottom>.next-tabs-content{top:1px;top:var(--tab-wrapped-border-line-width,1px);border-bottom:1px solid #e3e4e6;border-bottom:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar{float:left}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab{float:none;margin-bottom:4px;margin-bottom:var(--tab-wrapped-tab-margin-bottom,4px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:var(--tab-wrapped-tab-corner-radius,0) 0 0 var(--tab-wrapped-tab-corner-radius,0);border-width:1px;border-width:var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab.active{border-color:#e3e4e6 #fff #e3e4e6 #e3e4e6;border-color:var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-bg-color-selected,#fff) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);height:0;border-left:2px solid #0064c8;border-left:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);top:50%;left:-1px;left:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab.active:before{height:100%;top:0;top:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-left>.next-tabs-bar .next-tabs-tab.active{border-width:1px;border-width:var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-left>.next-tabs-content{right:1px;right:var(--tab-wrapped-border-line-width,1px);border-left:1px solid #e3e4e6;border-left:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar{float:right}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab{float:none;margin-bottom:4px;margin-bottom:var(--tab-wrapped-tab-margin-bottom,4px);border:1px solid #e3e4e6;border:var(--tab-wrapped-border-line-style,solid) var(--tab-wrapped-border-line-width,1px) var(--tab-wrapped-border-line-color,#e3e4e6);border-radius:0 0 0 0;border-radius:0 var(--tab-wrapped-tab-corner-radius,0) var(--tab-wrapped-tab-corner-radius,0) 0;border-width:1px;border-width:var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-side-width,1px) var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab:hover{border-color:#e3e4e6;border-color:var(--tab-wrapped-border-line-color-hover,#e3e4e6)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab.active{border-color:#e3e4e6 #e3e4e6 #e3e4e6 #fff;border-color:var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-border-line-color,#e3e4e6) var(--tab-wrapped-bg-color-selected,#fff)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab:before{border-radius:0;border-radius:var(--tab-wrapped-tab-corner-radius,0);height:0;border-right:2px solid #0064c8;border-right:var(--tab-wrapped-ink-bar-width,2px) solid var(--tab-wrapped-ink-bar-color,#0064c8);top:50%;right:-1px;right:calc(0px - var(--tab-wrapped-border-line-width, 1px))}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab.active:before{height:100%;top:0;top:var(--tab-wrapped-tab-corner-radius,0)}.next-tabs-wrapped.next-tabs-right>.next-tabs-bar .next-tabs-tab.active{border-width:1px;border-width:var(--tab-wrapped-border-line-width,1px)}.next-tabs-wrapped.next-tabs-right>.next-tabs-content{right:-1px;right:calc(0px - var(--tab-wrapped-border-line-width, 1px));border-right:1px solid #e3e4e6;border-right:var(--tab-wrapped-content-border-line-width,1px) var(--tab-wrapped-content-border-line-style,solid) var(--tab-wrapped-border-line-color,#e3e4e6)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab{-webkit-transition:background-color .1s linear;transition:background-color .1s linear;border:1px solid #c0c6cc;border:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc);border-right-color:transparent;margin-right:-1px;margin-right:calc(0px - var(--tab-capsule-tab-border-line-width, 1px));color:#333;color:var(--tab-capsule-text-color,#333);background-color:#fff;background-color:var(--tab-capsule-bg-color,#fff)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:first-child{border-radius:2px 0 0 2px;border-radius:var(--tab-capsule-corner-radius,2px) 0 0 var(--tab-capsule-corner-radius,2px)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-radius:0 2px 2px 0;border-radius:0 var(--tab-capsule-corner-radius,2px) var(--tab-capsule-corner-radius,2px) 0}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active,.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-right:1px solid #c0c6cc;border-right:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active{border-color:#c0c6cc;border-color:var(--tab-capsule-tab-border-line-color-active,#c0c6cc)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.disabled{border-color:#e3e4e6;border-color:var(--tab-capsule-tab-border-line-color-disabled,#e3e4e6)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab:hover{z-index:2;border-right:1px solid #c0c6cc;border-right:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc);border-color:#c0c6cc;border-color:var(--tab-capsule-tab-border-line-color-hover,#c0c6cc);cursor:pointer;color:#333;color:var(--tab-capsule-text-color-hover,#333);background-color:#f7f9fa;background-color:var(--tab-capsule-bg-color-hover,#f7f9fa)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-capsule-text-color-selected,#0064c8);background-color:#eff3f8;background-color:var(--tab-capsule-bg-color-selected,#eff3f8)}.next-tabs-capsule>.next-tabs-bar .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c1c1c1;color:var(--tab-capsule-text-color-disabled,#c1c1c1);background:#f8f8f9;background:var(--tab-capsule-bg-color-disabled,#f8f8f9)}.next-tabs-text>.next-tabs-bar .next-tabs-tab{color:#555;color:var(--tab-text-text-color-normal,#555);background-color:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab:hover{cursor:pointer;color:#0064c8;color:var(--tab-text-text-color-hover,#0064c8);background-color:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab.active{z-index:1;color:#0064c8;color:var(--tab-text-text-color-selected,#0064c8);background-color:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab.disabled{pointer-events:none;cursor:default;color:#c1c1c1;color:var(--tab-text-text-color-disabled,#c1c1c1);background:transparent}.next-tabs-text>.next-tabs-bar .next-tabs-tab:not(:last-child):after{content:"";position:absolute;right:0;top:calc(50% - 6px);top:calc(50% - var(--tab-text-item-sep-height, 12px)/2);width:1px;width:var(--tab-text-item-sep-width,1px);height:12px;height:var(--tab-text-item-sep-height,12px);background-color:#c0c6cc;background-color:var(--tab-text-item-sep-color,#c0c6cc)}.next-tabs-pure>.next-tabs-bar{position:relative}.next-tabs-pure>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-capsule>.next-tabs-bar{position:relative}.next-tabs-capsule>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs-text>.next-tabs-bar{position:relative}.next-tabs-text>.next-tabs-bar .next-tabs-nav-extra{position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-tabs[dir=rtl].next-medium .next-tabs-nav-container-scrolling{padding-left:60px;padding-left:var(--tab-nav-scroll-padding-right-m,60px);padding-right:0}.next-tabs[dir=rtl].next-medium .next-tabs-tab-close{padding-right:8px;padding-right:var(--tab-nav-close-icon-padding-l-size-m,8px);padding-left:0}.next-tabs[dir=rtl].next-small .next-tabs-nav-container-scrolling{padding-left:56px;padding-left:var(--tab-nav-scroll-padding-right-s,56px);padding-right:0}.next-tabs[dir=rtl].next-small .next-tabs-tab-close{padding-right:8px;padding-right:var(--tab-nav-close-icon-padding-l-size-s,8px);padding-left:0}.next-tabs[dir=rtl].next-tabs-wrapped.next-tabs-bottom>.next-tabs-bar .next-tabs-nav-extra,.next-tabs[dir=rtl].next-tabs-wrapped.next-tabs-top>.next-tabs-bar .next-tabs-nav-extra,.next-tabs[dir=rtl]>.next-tabs-bar .next-tabs-nav-extra{right:auto;left:0}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab{border-top:1px solid #c0c6cc;border-bottom:1px solid #c0c6cc;border-right:1px solid #c0c6cc;border:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc);border-left:0}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab:first-child{border-left:0;border-radius:0 2px 2px 0;border-radius:0 var(--tab-capsule-corner-radius,2px) var(--tab-capsule-corner-radius,2px) 0}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-radius:2px 0 0 2px;border-radius:var(--tab-capsule-corner-radius,2px) 0 0 var(--tab-capsule-corner-radius,2px)}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active,.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab:last-child{border-left:1px solid #c0c6cc;border-left:var(--tab-capsule-tab-border-line-width,1px) var(--tab-capsule-tab-border-line-style,solid) var(--tab-capsule-tab-border-line-color,#c0c6cc)}.next-tabs[dir=rtl].next-tabs-capsule>.next-tabs-bar .next-tabs-tab.active{margin-left:-1px;margin-left:calc(0px - var(--tab-capsule-tab-border-line-width, 1px));margin-right:auto;border-color:#c0c6cc;border-color:var(--tab-capsule-tab-border-line-color-active,#c0c6cc)}.next-tabs[dir=rtl] .next-tabs-btn-next{left:12px;left:var(--tab-nav-arrow-right-positon-right,12px);right:auto}.next-tabs[dir=rtl] .next-tabs-btn-prev{left:32px;left:var(--tab-nav-arrow-left-positon-right,32px);right:auto}.next-tabs[dir=rtl] .next-tabs-btn-down{left:8px;left:var(--tab-nav-arrow-down-positon-right,8px);right:auto}.next-tabs-text[dir=rtl]>.next-tabs-bar .next-tabs-tab:not(:last-child):after{content:"";position:absolute;left:0;right:auto}@-webkit-keyframes fadeInRightForTag{0%{opacity:0;-webkit-transform:rotate(45deg) translateX(20px);transform:rotate(45deg) translateX(20px)}to{opacity:1;-webkit-transform:rotate(45deg) translateX(0);transform:rotate(45deg) translateX(0)}}@keyframes fadeInRightForTag{0%{opacity:0;-webkit-transform:rotate(45deg) translateX(20px);transform:rotate(45deg) translateX(20px)}to{opacity:1;-webkit-transform:rotate(45deg) translateX(0);transform:rotate(45deg) translateX(0)}}.next-tag>.next-tag-body{overflow:hidden;text-overflow:ellipsis}.next-tag-checkable.next-tag-level-secondary{color:#111;color:var(--tag-normal-text-color,#111);border-color:transparent;background-color:transparent}.next-tag-checkable.next-tag-level-secondary:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-secondary:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-normal-text-color-hover,#0064c8)}.next-tag-default.next-tag-level-primary{color:#555;color:var(--tag-fill-text-color,#555);border-color:#c0c6cc;border-color:var(--tag-fill-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-fill-bg-color,#fff)}.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]).hover,.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]):hover{color:#333;color:var(--tag-fill-text-color-hover,#333);border-color:#c0c6cc;border-color:var(--tag-fill-border-color-hover,#c0c6cc);background-color:#fff;background-color:var(--tag-fill-bg-color-hover,#fff)}.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-default.next-tag-level-primary:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color-hover,#333)}.disabled.next-tag-default.next-tag-level-primary,.next-tag-default.next-tag-level-primary[disabled]{color:#b3b3b3;color:var(--tag-fill-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-fill-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-fill-bg-color-disabled,#fff)}.disabled.next-tag-default.next-tag-level-primary>.next-tag-close-btn,.next-tag-default.next-tag-level-primary[disabled]>.next-tag-close-btn{color:#b3b3b3;color:var(--tag-fill-tail-color-disabled,#b3b3b3)}.next-tag-default.next-tag-level-primary>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color,#333)}.next-tag-closable.next-tag-level-primary{color:#333;color:var(--tag-closable-primary-fill-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-closable-primary-fill-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-closable-primary-fill-bg-color,#fff)}.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]).hover,.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-closable-primary-fill-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-closable-primary-fill-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-closable-primary-fill-bg-color-hover,#f7f9fa)}.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-closable.next-tag-level-primary:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color-hover,#333)}.disabled.next-tag-closable.next-tag-level-primary,.next-tag-closable.next-tag-level-primary[disabled]{color:#b3b3b3;color:var(--tag-closable-primary-fill-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-closable-primary-fill-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-closable-primary-fill-bg-color-disabled,#fff)}.disabled.next-tag-closable.next-tag-level-primary>.next-tag-close-btn,.next-tag-closable.next-tag-level-primary[disabled]>.next-tag-close-btn{color:#b3b3b3;color:var(--tag-fill-tail-color-disabled,#b3b3b3)}.next-tag-closable.next-tag-level-primary>.next-tag-close-btn{color:#333;color:var(--tag-fill-tail-color,#333)}.next-tag-checkable.next-tag-level-primary{color:#333;color:var(--tag-checkable-fill-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-checkable-fill-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-checkable-fill-bg-color,#fff)}.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-checkable-fill-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-checkable-fill-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-checkable-fill-bg-color-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#111;color:var(--tag-checkable-fill-tail-color-hover,#111)}.disabled.next-tag-checkable.next-tag-level-primary,.next-tag-checkable.next-tag-level-primary[disabled]{color:#b3b3b3;color:var(--tag-checkable-fill-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-checkable-fill-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-checkable-fill-bg-color-disabled,#fff)}.disabled.next-tag-checkable.next-tag-level-primary>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary[disabled]>.next-tag-close-btn{color:#c1c1c1;color:var(--tag-checkable-fill-tail-color-disabled,#c1c1c1)}.next-tag-checkable.next-tag-level-primary>.next-tag-close-btn{color:#555;color:var(--tag-checkable-fill-tail-color,#555)}.next-tag-checkable.next-tag-level-primary.checked{color:#0064c8;color:var(--tag-checkable-primary-text-color,#0064c8);border-color:#0064c8;border-color:var(--tag-checkable-primary-border-color,#0064c8);background-color:#fff;background-color:var(--tag-checkable-primary-bg-color,#fff)}.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-checkable-primary-text-color-hover,#0064c8);border-color:#0064c8;border-color:var(--tag-checkable-primary-border-color-hover,#0064c8);background-color:#f7f9fa;background-color:var(--tag-checkable-primary-bg-color-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary.checked:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#fff;color:var(--tag-checkable-primary-tail-color-hover,#fff)}.disabled.next-tag-checkable.next-tag-level-primary.checked,.next-tag-checkable.next-tag-level-primary.checked[disabled]{color:#b3b3b3;color:var(--tag-checkable-primary-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-checkable-primary-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-checkable-primary-bg-color-disabled,#fff)}.disabled.next-tag-checkable.next-tag-level-primary.checked>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary.checked>.next-tag-close-btn,.next-tag-checkable.next-tag-level-primary.checked[disabled]>.next-tag-close-btn{color:#fff;color:var(--tag-checkable-primary-tail-color,#fff)}.next-tag-default.next-tag-level-normal{color:#333;color:var(--tag-bordered-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-bordered-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-bordered-bg,#fff)}.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]).hover,.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]):hover{color:#333;color:var(--tag-bordered-text-color-hover,#333);border-color:#c0c6cc;border-color:var(--tag-bordered-border-color-hover,#c0c6cc);background-color:#fff;background-color:var(--tag-bordered-bg-hover,#fff)}.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-default.next-tag-level-normal:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#111;color:var(--tag-bordered-tail-color-hover,#111)}.disabled.next-tag-default.next-tag-level-normal,.next-tag-default.next-tag-level-normal[disabled]{color:#b3b3b3;color:var(--tag-bordered-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-bordered-border-color-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-bordered-bg-disabled,#fff)}.disabled.next-tag-default.next-tag-level-normal>.next-tag-close-btn,.next-tag-default.next-tag-level-normal[disabled]>.next-tag-close-btn{color:#c1c1c1;color:var(--tag-bordered-tail-color-disabled,#c1c1c1)}.next-tag-default.next-tag-level-normal>.next-tag-close-btn{color:#555;color:var(--tag-bordered-tail-color,#555)}.next-tag-closable.next-tag-level-normal{color:#333;color:var(--tag-closable-bordered-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-closable-bordered-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-closable-bordered-bg,#fff)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-closable-bordered-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-closable-bordered-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-closable-bordered-bg-hover,#f7f9fa)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover>.next-tag-close-btn,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover>.next-tag-close-btn{color:#333;color:var(--tag-closable-bordered-tail-color-hover,#333)}.disabled.next-tag-closable.next-tag-level-normal,.next-tag-closable.next-tag-level-normal[disabled]{color:#b3b3b3;color:var(--tag-closable-bordered-text-color-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-closable-bordered-border-color-disabled,#d1d5d9);background-color:transparent;background-color:var(--tag-closable-bordered-bg-disabled,transparent)}.disabled.next-tag-closable.next-tag-level-normal>.next-tag-close-btn,.next-tag-closable.next-tag-level-normal[disabled]>.next-tag-close-btn{color:#c1c1c1;color:var(--tag-closable-bordered-tail-color-disabled,#c1c1c1)}.next-tag-closable.next-tag-level-normal>.next-tag-close-btn{color:#333;color:var(--tag-closable-bordered-tail-color,#333)}.next-tag-checkable.next-tag-level-normal.checked{color:#0064c8;color:var(--tag-secondary-text-color,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color,#0064c8);background-color:transparent;background-color:var(--tag-secondary-bg,transparent)}.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-secondary-text-color-hover,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color-hover,#0064c8);background-color:#f7f9fa;background-color:var(--tag-secondary-bg-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-secondary.checked{color:#0064c8;color:var(--tag-secondary-text-color,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color,#0064c8);background-color:transparent;background-color:var(--tag-secondary-bg,transparent)}.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-secondary-text-color-hover,#0064c8);border-color:#0064c8;border-color:var(--tag-secondary-border-color-hover,#0064c8);background-color:#f7f9fa;background-color:var(--tag-secondary-bg-hover,#f7f9fa)}.next-tag-checkable.next-tag-level-secondary.checked:before{position:absolute;content:"";-webkit-font-smoothing:antialiased;background-color:#0064c8;background-color:var(--tag-checkable-secondary-bg-selected,#0064c8);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.next-tag-checkable.next-tag-level-secondary.checked:after{position:absolute;font-family:NextIcon;-webkit-font-smoothing:antialiased;content:"\e632";content:var(--icon-content-select,"");-webkit-transform:scale(.6);-ms-transform:scale(.6);transform:scale(.6);color:#fff;color:var(--tag-checkable-secondary-icon-color-selected,#fff)}.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]).hover:before,.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]):hover:before{background-color:#002850;background-color:var(--tag-checkable-secondary-bg-selected-hover,#002850)}.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]).hover:after,.next-tag-checkable.next-tag-level-secondary.checked:not(.disabled):not([disabled]):hover:after{color:#fff;color:var(--tag-checkable-secondary-icon-color-selected-hover,#fff)}.next-tag-checkable.next-tag-level-secondary.checked:disabled:before,.next-tag-checkable.next-tag-level-secondary.checked[disabled]:before{background-color:#e3e4e6;background-color:var(--tag-checkable-secondary-bg-selected-disabled,#e3e4e6)}.next-tag-checkable.next-tag-level-secondary.checked:disabled:after,.next-tag-checkable.next-tag-level-secondary.checked[disabled]:after{color:#fff;color:var(--tag-checkable-secondary-icon-color-selected-disabled,#fff)}.next-tag-checkable.next-tag-level-normal{color:#333;color:var(--tag-checkable-normal-text-color,#333);border-color:#c0c6cc;border-color:var(--tag-checkable-normal-border-color,#c0c6cc);background-color:#fff;background-color:var(--tag-checkable-normal-bg,#fff)}.next-tag-checkable.next-tag-level-normal:not(.disabled):not([disabled]).hover,.next-tag-checkable.next-tag-level-normal:not(.disabled):not([disabled]):hover{color:#0064c8;color:var(--tag-checkable-normal-text-color-hover,#0064c8);border-color:#c0c6cc;border-color:var(--tag-checkable-normal-border-color-hover,#c0c6cc);background-color:#f7f9fa;background-color:var(--tag-checkable-normal-bg-hover,#f7f9fa)}.disabled.next-tag-checkable.next-tag-level-normal,.next-tag-checkable.next-tag-level-normal[disabled]{color:#b3b3b3;color:var(--tag-checkable-normal-text-selected-disabled,#b3b3b3);border-color:#d1d5d9;border-color:var(--tag-checkable-normal-border-selected-disabled,#d1d5d9);background-color:#fff;background-color:var(--tag-checkable-normal-bg-selected-disabled,#fff)}.next-tag-checkable.next-tag-level-normal.checked:before{position:absolute;content:"";-webkit-font-smoothing:antialiased;background-color:#fff;background-color:var(--tag-checkable-normal-bg-selected,#fff);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.next-tag-checkable.next-tag-level-normal.checked:after{position:absolute;font-family:NextIcon;-webkit-font-smoothing:antialiased;content:"\e632";content:var(--icon-content-select,"");-webkit-transform:scale(.6);-ms-transform:scale(.6);transform:scale(.6);color:transparent;color:var(--tag-checkable-normal-icon-color-selected,transparent)}.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]).hover:before,.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]):hover:before{background-color:transparent;background-color:var(--tag-checkable-normal-bg-selected-hover,transparent)}.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]).hover:after,.next-tag-checkable.next-tag-level-normal.checked:not(.disabled):not([disabled]):hover:after{color:transparent;color:var(--tag-checkable-normal-icon-color-selected-hover,transparent)}.next-tag-checkable.next-tag-level-normal.checked:disabled:before,.next-tag-checkable.next-tag-level-normal.checked[disabled]:before{background-color:#e3e4e6;background-color:var(--tag-checkable-normal-tick-bg-selected-disabled,#e3e4e6)}.next-tag-checkable.next-tag-level-normal.checked:disabled:after,.next-tag-checkable.next-tag-level-normal.checked[disabled]:after{color:#fff;color:var(--tag-checkable-normal-icon-color-selected-disabled,#fff)}.next-tag-closable.next-tag-level-normal:before{position:absolute;content:"";-webkit-font-smoothing:antialiased;background-color:#577899;background-color:var(--tag-closable-normal-bg,#577899);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.next-tag-closable.next-tag-level-normal:after{position:absolute;font-family:NextIcon;-webkit-font-smoothing:antialiased;content:"\e626";content:var(--icon-content-close,"");-webkit-transform:scale(.6);-ms-transform:scale(.6);transform:scale(.6);color:#fff;color:var(--tag-closable-normal-icon-color,#fff)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover:before,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover:before{background-color:#f7f9fa;background-color:var(--tag-closable-normal-bg-hover,#f7f9fa)}.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]).hover:after,.next-tag-closable.next-tag-level-normal:not(.disabled):not([disabled]):hover:after{color:#333;color:var(--tag-closable-normal-icon-color-hover,#333)}.next-tag-closable.next-tag-level-normal:disabled:before,.next-tag-closable.next-tag-level-normal[disabled]:before{background-color:#e3e4e6;background-color:var(--tag-closable-normal-bg-disabled,#e3e4e6)}.next-tag-closable.next-tag-level-normal:disabled:after,.next-tag-closable.next-tag-level-normal[disabled]:after{color:#fff;color:var(--tag-closable-normal-icon-color-disabled,#fff)}.next-tag-group .next-tag-large,.next-tag-group .next-tag-medium{margin-right:8px;margin-bottom:8px}.next-tag-group .next-tag-small{margin-right:4px;margin-bottom:4px}.next-tag{display:inline-block;max-width:100%;vertical-align:middle;border-width:1px;border-width:var(--tag-border-width,1px);border-radius:12px;border-radius:var(--tag-corner-radius,12px);-webkit-box-shadow:none;-webkit-box-shadow:var(--tag-shadow,none);box-shadow:none;box-shadow:var(--tag-shadow,none);border-style:solid;overflow:hidden;white-space:nowrap;-webkit-transition:all .1s linear;transition:all .1s linear;font-size:0;outline:0}.next-tag,.next-tag *,.next-tag :after,.next-tag :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tag>.next-tag-body{position:relative;display:inline-block;height:100%;text-align:center;vertical-align:middle;max-width:100%;cursor:default}.next-tag>.next-tag-body>a{text-decoration:none;color:inherit}.next-tag>.next-tag-body>a:before{content:" ";position:absolute;display:block;top:0;left:0;right:0;bottom:0}.next-tag>.next-tag-body .next-icon{line-height:1;vertical-align:baseline}.next-tag>.next-tag-body .next-icon:before{font-size:inherit}.next-tag.next-tag-body-pointer{cursor:pointer}.next-tag.disabled,.next-tag[disabled]{cursor:not-allowed;pointer-events:none}.next-tag-blue{background-color:#4494f9;border-color:#4494f9;color:#fff}.next-tag-blue-inverse{background-color:rgba(68,148,249,.25);border-color:#4494f9;color:#4494f9}.next-tag-green{background-color:#46bc15;border-color:#46bc15;color:#fff}.next-tag-green-inverse{background-color:rgba(70,188,21,.25);border-color:#46bc15;color:#46bc15}.next-tag-orange{background-color:#ff9300;border-color:#ff9300;color:#fff}.next-tag-orange-inverse{background-color:rgba(255,147,0,.25);border-color:#ff9300;color:#ff9300}.next-tag-red{background-color:#ff3000;border-color:#ff3000;color:#fff}.next-tag-red-inverse{background-color:rgba(255,48,0,.25);border-color:#ff3000;color:#ff3000}.next-tag-turquoise{background-color:#01c1b2;border-color:#01c1b2;color:#fff}.next-tag-turquoise-inverse{background-color:rgba(1,193,178,.25);border-color:#01c1b2;color:#01c1b2}.next-tag-yellow{background-color:#fccc12;border-color:#fccc12;color:#fff}.next-tag-yellow-inverse{background-color:rgba(252,204,18,.25);border-color:#fccc12;color:#fccc12}.next-tag-large{height:28px;height:var(--tag-size-l-height,28px);padding:0;line-height:26px;line-height:calc(var(--tag-size-l-height, 28px) - var(--tag-border-width, 1px)*2);font-size:0}.next-tag-large>.next-tag-body{font-size:14px;font-size:var(--tag-size-l-text-size,14px);padding:0 16px;padding:0 var(--tag-size-l-padding-lr,16px);min-width:48px;min-width:var(--tag-size-l-content-min-width,48px)}.next-tag-large.next-tag-closable>.next-tag-body{padding:0 0 0 16px;padding:0 0 0 var(--tag-size-l-padding-lr,16px);max-width:calc(100% - 44px);max-width:calc(100% - var(--tag-size-l-spacing, 16px) - var(--tag-size-l-icon-font, 12px) - var(--tag-size-l-padding-lr, 16px))}.next-tag-large[dir=rtl].next-tag-closable>.next-tag-body{padding:0 16px 0 0;padding:0 var(--tag-size-l-padding-lr,16px) 0 0}.next-tag-large.next-tag-closable>.next-tag-close-btn{margin-left:16px;margin-left:var(--tag-size-l-spacing,16px);padding-right:16px;padding-right:var(--tag-size-l-padding-lr,16px)}.next-tag-large.next-tag-closable>.next-tag-close-btn .next-icon .next-icon-remote,.next-tag-large.next-tag-closable>.next-tag-close-btn .next-icon:before{width:12px;width:var(--tag-size-l-icon-font,12px);font-size:12px;font-size:var(--tag-size-l-icon-font,12px);line-height:inherit}.next-tag-large[dir=rtl]>.next-tag-close-btn{margin-right:16px;margin-right:var(--tag-size-l-spacing,16px);margin-left:0;padding-right:0;padding-left:16px;padding-left:var(--tag-size-l-padding-lr,16px)}.next-tag-medium{height:24px;height:var(--tag-size-m-height,24px);padding:0;line-height:22px;line-height:calc(var(--tag-size-m-height, 24px) - var(--tag-border-width, 1px)*2);font-size:0}.next-tag-medium>.next-tag-body{font-size:12px;font-size:var(--tag-size-m-text-size,12px);padding:0 8px;padding:0 var(--tag-size-m-padding-lr,8px);min-width:40px;min-width:var(--tag-size-m-content-min-width,40px)}.next-tag-medium.next-tag-closable>.next-tag-body{padding:0 0 0 8px;padding:0 0 0 var(--tag-size-m-padding-lr,8px);max-width:calc(100% - 32px);max-width:calc(100% - var(--tag-size-m-spacing, 12px) - var(--tag-size-m-icon-font, 12px) - var(--tag-size-m-padding-lr, 8px))}.next-tag-medium[dir=rtl].next-tag-closable>.next-tag-body{padding:0 8px 0 0;padding:0 var(--tag-size-m-padding-lr,8px) 0 0}.next-tag-medium.next-tag-closable>.next-tag-close-btn{margin-left:12px;margin-left:var(--tag-size-m-spacing,12px);padding-right:8px;padding-right:var(--tag-size-m-padding-lr,8px)}.next-tag-medium.next-tag-closable>.next-tag-close-btn .next-icon .next-icon-remote,.next-tag-medium.next-tag-closable>.next-tag-close-btn .next-icon:before{width:12px;width:var(--tag-size-m-icon-font,12px);font-size:12px;font-size:var(--tag-size-m-icon-font,12px);line-height:inherit}.next-tag-medium[dir=rtl]>.next-tag-close-btn{margin-right:12px;margin-right:var(--tag-size-m-spacing,12px);margin-left:0;padding-right:0;padding-left:8px;padding-left:var(--tag-size-m-padding-lr,8px)}.next-tag-small{height:20px;height:var(--tag-size-s-height,20px);padding:0;line-height:18px;line-height:calc(var(--tag-size-s-height, 20px) - var(--tag-border-width, 1px)*2);font-size:0}.next-tag-small>.next-tag-body{font-size:12px;font-size:var(--tag-size-s-text-size,12px);padding:0 8px;padding:0 var(--tag-size-s-padding-lr,8px);min-width:28px;min-width:var(--tag-size-s-content-min-width,28px)}.next-tag-small.next-tag-closable>.next-tag-body{padding:0 0 0 8px;padding:0 0 0 var(--tag-size-s-padding-lr,8px);max-width:calc(100% - 28px);max-width:calc(100% - var(--tag-size-s-spacing, 8px) - var(--tag-size-s-icon-font, 12px) - var(--tag-size-s-padding-lr, 8px))}.next-tag-small[dir=rtl].next-tag-closable>.next-tag-body{padding:0 8px 0 0;padding:0 var(--tag-size-s-padding-lr,8px) 0 0}.next-tag-small.next-tag-closable>.next-tag-close-btn{margin-left:8px;margin-left:var(--tag-size-s-spacing,8px);padding-right:8px;padding-right:var(--tag-size-s-padding-lr,8px)}.next-tag-small.next-tag-closable>.next-tag-close-btn .next-icon .next-icon-remote,.next-tag-small.next-tag-closable>.next-tag-close-btn .next-icon:before{width:12px;width:var(--tag-size-s-icon-font,12px);font-size:12px;font-size:var(--tag-size-s-icon-font,12px);line-height:inherit}.next-tag-small[dir=rtl]>.next-tag-close-btn{margin-right:8px;margin-right:var(--tag-size-s-spacing,8px);margin-left:0;padding-right:0;padding-left:8px;padding-left:var(--tag-size-s-padding-lr,8px)}.next-tag-default{cursor:default}.next-tag-closable{position:relative}.next-tag-closable>.next-tag-close-btn{display:inline-block;vertical-align:middle;height:100%;text-align:center;cursor:pointer}.next-tag-checkable{cursor:pointer;position:relative;border-radius:12px;border-radius:var(--tag-corner-radius,12px)}.next-tag-checkable.checked:before{-webkit-animation:fadeInRightForTag .4s cubic-bezier(.78,.14,.15,.86);animation:fadeInRightForTag .4s cubic-bezier(.78,.14,.15,.86)}.next-tag-checkable.checked:after{-webkit-animation:zoomIn .4s cubic-bezier(.78,.14,.15,.86);animation:zoomIn .4s cubic-bezier(.78,.14,.15,.86)}.next-tag-checkable.next-tag-small:not(.next-tag-level-primary):before{right:0;right:calc(0px - var(--tag-size-s-tick-icon-bg-size, 0px)/2);bottom:0;bottom:calc(0px - var(--tag-size-s-tick-icon-bg-size, 0px)/2);width:0;width:var(--tag-size-s-tick-icon-bg-size,0);height:0;height:var(--tag-size-s-tick-icon-bg-size,0)}.next-tag-checkable.next-tag-small:not(.next-tag-level-primary):after{font-size:8px;line-height:8px;right:0;bottom:0}.next-tag-checkable.next-tag-medium:not(.next-tag-level-primary):before{right:0;right:calc(0px - var(--tag-size-m-tick-icon-bg-size, 0px)/2);bottom:0;bottom:calc(0px - var(--tag-size-m-tick-icon-bg-size, 0px)/2);width:0;width:var(--tag-size-m-tick-icon-bg-size,0);height:0;height:var(--tag-size-m-tick-icon-bg-size,0)}.next-tag-checkable.next-tag-medium:not(.next-tag-level-primary):after{font-size:12px;line-height:12px;right:0;bottom:0}.next-tag-checkable.next-tag-large:not(.next-tag-level-primary):before{right:-18px;right:calc(0px - var(--tag-size-l-tick-icon-bg-size, 36px)/2);bottom:-18px;bottom:calc(0px - var(--tag-size-l-tick-icon-bg-size, 36px)/2);width:36px;width:var(--tag-size-l-tick-icon-bg-size,36px);height:36px;height:var(--tag-size-l-tick-icon-bg-size,36px)}.next-tag-checkable.next-tag-large:not(.next-tag-level-primary):after{font-size:16px;line-height:16px;right:0;bottom:0}.next-tag-checkable.next-tag-level-secondary.disabled,.next-tag-checkable.next-tag-level-secondary[disabled]{color:#c1c1c1;color:var(--tag-text-color-disabled,#c1c1c1);border-color:#e3e4e6;border-color:var(--tag-border-color-disabled,#e3e4e6);background-color:#fff;background-color:var(--tag-fill-bg-color-disabled,#fff)}.next-tag-zoom-appear,.next-tag-zoom-enter{-webkit-animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);animation:fadeInLeft .4s cubic-bezier(.78,.14,.15,.86);-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-tag-zoom-leave{-webkit-animation:zoomOut .3s ease-in;animation:zoomOut .3s ease-in;-webkit-animation-fill-mode:both;animation-fill-mode:both}.next-timeline,.next-timeline *,.next-timeline:after,.next-timeline :after,.next-timeline:before,.next-timeline :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-timeline ul{margin:0;padding:0;list-style:none}.next-timeline p{margin:0}.next-timeline-hide{display:none}.next-timeline[dir=rtl] .next-timeline-item-folder{padding-left:0;padding-right:24px;padding-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline[dir=rtl] .next-timeline-item-dot-tail{left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2);border-left:none;border-right:1px dotted #c0c6cc;border-right:var(--timeline-item-tail-size,1px) dotted var(--timeline-item-tail-color,#c0c6cc)}.next-timeline[dir=rtl] .next-timeline-item-has-left-content.next-timeline-item-folder{margin-left:0;margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px)}.next-timeline[dir=rtl] .next-timeline-item-done{position:relative}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-done-dot-size,8px);height:8px;height:var(--timeline-item-done-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-done-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-done-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-icon{background:#c0c6cc;background:var(--timeline-item-done-background,#c0c6cc)}.next-timeline[dir=rtl] .next-timeline-item-done .next-timeline-item-icon{color:#fff;color:var(--timeline-item-done-color,#fff)}.next-timeline[dir=rtl] .next-timeline-item-process{position:relative}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-process-dot-size,8px);height:8px;height:var(--timeline-item-process-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-process-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-process-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-icon{background:#0064c8;background:var(--timeline-item-process-background,#0064c8)}.next-timeline[dir=rtl] .next-timeline-item-process .next-timeline-item-icon{color:#fff;color:var(--timeline-item-process-color,#fff)}.next-timeline[dir=rtl] .next-timeline-item-success{position:relative}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-success-dot-size,8px);height:8px;height:var(--timeline-item-success-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-success-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-success-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-icon{background:#00a700;background:var(--timeline-item-success-background,#00a700)}.next-timeline[dir=rtl] .next-timeline-item-success .next-timeline-item-icon{color:#fff;color:var(--timeline-item-success-color,#fff)}.next-timeline[dir=rtl] .next-timeline-item-error{position:relative}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline{position:absolute;left:auto;right:0;top:0;height:100%}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:right}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-right:-16px;margin-right:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);margin-left:0;line-height:1}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-error-dot-size,8px);height:8px;height:var(--timeline-item-error-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-error-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-error-dot-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:auto;right:4px;right:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content{display:inline-block;margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:left;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px);padding-right:0}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-right:80px;margin-right:var(--timeline-item-left-content-width,80px);margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-content{margin-right:104px;margin-right:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));margin-left:0}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-dot,.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-icon{background:#c80000;background:var(--timeline-item-error-background,#c80000)}.next-timeline[dir=rtl] .next-timeline-item-error .next-timeline-item-icon{color:#fff;color:var(--timeline-item-error-color,#fff)}.next-timeline{margin:0;padding:0;list-style:none}.next-timeline>li{outline:0}.next-timeline-item-folder{padding-left:24px;padding-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));padding-top:4px;padding-top:var(--timeline-item-folder-margin-top,4px);padding-bottom:4px;padding-bottom:var(--timeline-item-folder-margin-bottom,4px);font-size:12px;font-size:var(--timeline-item-folder-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-folder-font-size, 12px) + 4px);position:relative}.next-timeline-item-dot-tail{position:absolute;top:0;left:4px;left:calc(var(--timeline-item-node-size, 8px)/2);height:100%;border:0;border-left:var(--timeline-item-tail-size,1px) dotted var(--timeline-item-tail-color,#c0c6cc)}.next-timeline-item-dot-tail-solid{border-style:solid}.next-timeline-item-has-left-content.next-timeline-item-folder{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-done{position:relative}.next-timeline-item-done .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-done-dot-size,8px);height:8px;height:var(--timeline-item-done-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-done-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-done-dot-size, 8px)/2)}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-done .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-done .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-done .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-done .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-done .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-done.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-done .next-timeline-item-dot,.next-timeline-item-done .next-timeline-item-icon{background:#c0c6cc;background:var(--timeline-item-done-background,#c0c6cc)}.next-timeline-item-done .next-timeline-item-icon{color:#fff;color:var(--timeline-item-done-color,#fff)}.next-timeline-item-process{position:relative}.next-timeline-item-process .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-process-dot-size,8px);height:8px;height:var(--timeline-item-process-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-process-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-process-dot-size, 8px)/2)}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-process .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-process .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-process .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-process .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-process .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-process.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-process .next-timeline-item-dot,.next-timeline-item-process .next-timeline-item-icon{background:#0064c8;background:var(--timeline-item-process-background,#0064c8)}.next-timeline-item-process .next-timeline-item-icon{color:#fff;color:var(--timeline-item-process-color,#fff)}.next-timeline-item-success{position:relative}.next-timeline-item-success .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-success-dot-size,8px);height:8px;height:var(--timeline-item-success-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-success-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-success-dot-size, 8px)/2)}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-success .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-success .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-success .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-success .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-success .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-success.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-success .next-timeline-item-dot,.next-timeline-item-success .next-timeline-item-icon{background:#00a700;background:var(--timeline-item-success-background,#00a700)}.next-timeline-item-success .next-timeline-item-icon{color:#fff;color:var(--timeline-item-success-color,#fff)}.next-timeline-item-error{position:relative}.next-timeline-item-error .next-timeline-item-timeline{position:absolute;left:0;top:0;height:100%}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node{position:relative;width:8px;width:var(--timeline-item-node-size,8px);height:24px;height:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);padding:8px 0;padding:var(--timeline-item-node-padding,8px) 0;text-align:center;float:left}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-node.next-timeline-item-node-custom{width:40px;width:var(--timeline-item-custom-node-size,40px);height:auto;font-size:12px;font-size:var(--timeline-item-custom-node-font-size,12px);word-break:break-all;margin-left:-16px;margin-left:calc(0px - var(--timeline-item-custom-node-size, 40px)/2 + var(--timeline-item-node-size, 8px)/2);line-height:1}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-dot{display:block;position:absolute;width:8px;width:var(--timeline-item-error-dot-size,8px);height:8px;height:var(--timeline-item-error-dot-size,8px);border-radius:100%;top:50%;margin-top:-4px;margin-top:calc(0px - var(--timeline-item-error-dot-size, 8px)/2);left:50%;margin-left:-4px;margin-left:calc(0px - var(--timeline-item-error-dot-size, 8px)/2)}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon{display:block;position:absolute;width:20px;height:20px;line-height:20px;border-radius:100%;top:50%;left:50%;margin-top:-10px;margin-left:-10px}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon .next-icon-remote,.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-icon .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail{position:absolute;width:auto;height:calc(100% - 24px);height:calc(100% - var(--timeline-item-node-size, 8px) - var(--timeline-item-node-padding, 8px)*2);top:24px;top:calc(var(--timeline-item-node-size, 8px) + var(--timeline-item-node-padding, 8px)*2);left:4px;left:calc(var(--timeline-item-node-size, 8px)/2)}.next-timeline-item-error .next-timeline-item-timeline .next-timeline-item-tail i{display:inline-block;vertical-align:top;height:100%;width:1px;width:var(--timeline-item-tail-size,1px);position:relative;background:#c0c6cc;background:var(--timeline-item-tail-color,#c0c6cc);-webkit-transition:all .1s linear;transition:all .1s linear}.next-timeline-item-error .next-timeline-item-content{display:inline-block;margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-error .next-timeline-item-content .next-timeline-item-title{font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);margin:4px 0 0;margin-top:var(--timeline-item-title-margin-top,4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline-item-error .next-timeline-item-content .next-timeline-item-body{margin:8px 0 0;margin-top:var(--timeline-item-body-margin-top,8px);font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline-item-error .next-timeline-item-content .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content{position:absolute;width:80px;width:var(--timeline-item-left-content-width,80px);display:inline-block;font-size:12px;font-size:var(--timeline-item-left-body-font-size,12px);color:#888;color:var(--timeline-item-left-body-color,#888);line-height:16px;line-height:calc(var(--timeline-item-left-body-font-size, 12px) + 4px);margin-top:4px;margin-top:var(--timeline-item-title-margin-top,4px);text-align:right;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-left-content p{word-break:break-word}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-timeline{margin-left:80px;margin-left:var(--timeline-item-left-content-width,80px)}.next-timeline-item-error.next-timeline-item-has-left-content>.next-timeline-item-content{margin-left:104px;margin-left:calc(var(--timeline-item-left-content-width, 80px) + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline-item-error .next-timeline-item-dot,.next-timeline-item-error .next-timeline-item-icon{background:#c80000;background:var(--timeline-item-error-background,#c80000)}.next-timeline-item-error .next-timeline-item-icon{color:#fff;color:var(--timeline-item-error-color,#fff)}.next-timeline.next-alternate .next-timeline-item-left .next-timeline-item-left-content,.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-left-content{width:50%;padding-right:16px;padding-right:var(--timeline-item-content-margin-left,16px)}.next-timeline.next-alternate .next-timeline-item-left .next-timeline-item-timeline,.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-timeline{margin-left:50%}.next-timeline.next-alternate .next-timeline-item-left .next-timeline-item-content,.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-content{margin-left:calc(50% + 24px);margin-left:calc(50% + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline.next-alternate .next-timeline-item-folder{margin-left:50%}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-title{margin:4px 0 0;font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:right}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-body{margin:8px 0 0;font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:right}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:right}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-left-content{display:inline-block;position:relative}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-left-content .next-timeline-item-title{margin-top:0}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-content{margin-left:24px;margin-left:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));position:absolute}.next-timeline.next-alternate .next-timeline-item-right .next-timeline-item-content .next-timeline-item-body{margin-top:4px;color:#888;color:var(--timeline-item-left-body-color,#888)}.next-timeline[dir=rtl].next-alternate .next-timeline-item-left .next-timeline-item-left-content,.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-left-content{width:50%;padding-left:16px;padding-left:var(--timeline-item-content-margin-left,16px)}.next-timeline[dir=rtl].next-alternate .next-timeline-item-left .next-timeline-item-timeline,.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-timeline{margin-right:50%}.next-timeline[dir=rtl].next-alternate .next-timeline-item-left .next-timeline-item-content,.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-content{width:50%;margin-right:calc(50% + 24px);margin-right:calc(50% + var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px))}.next-timeline[dir=rtl].next-alternate .next-timeline-item-folder{margin-right:50%}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-title{margin:0;font-size:12px;font-size:var(--timeline-item-title-font-size,12px);font-weight:600;font-weight:var(--timeline-item-title-font-weight,600);line-height:16px;line-height:calc(var(--timeline-item-title-font-size, 12px) + 4px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;color:var(--timeline-item-title-color,#333);text-align:left}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-body{margin:0;font-size:12px;font-size:var(--timeline-item-body-font-size,12px);line-height:16px;line-height:calc(var(--timeline-item-body-font-size, 12px) + 4px);color:#333;color:var(--timeline-item-body-color,#333);text-align:left}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-time{margin:4px 0 0;margin-top:var(--timeline-item-time-margin-top,4px);margin-bottom:8px;margin-bottom:var(--timeline-item-time-margin-bottom,8px);font-size:12px;font-size:var(--timeline-item-time-font-size,12px);color:#666;color:var(--timeline-item-time-color,#666);text-align:left}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-left-content{display:inline-block;position:relative}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-content{margin-right:24px;margin-right:calc(var(--timeline-item-content-margin-left, 16px) + var(--timeline-item-node-size, 8px));position:absolute}.next-timeline[dir=rtl].next-alternate .next-timeline-item-right .next-timeline-item-content .next-timeline-item-body{text-align:right}.next-timeline-item-last .next-timeline-item-tail{display:none}.next-timeline-item-has-left-content{min-height:48px}.next-timeline-item-folder.next-timeline-item-has-left-content{min-height:auto}.next-transfer{display:inline-block}.next-transfer,.next-transfer *,.next-transfer :after,.next-transfer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-transfer-panel{display:inline-block;border:1px solid #c0c6cc;border:var(--transfer-panel-border-width,1px) var(--line-solid,solid) var(--transfer-panel-border-color,#c0c6cc);border-radius:2px;border-radius:var(--transfer-panel-border-corner,2px);background-color:#fff;background-color:var(--transfer-panel-background-color,#fff);vertical-align:middle}.next-transfer-panel-header{padding:8px 16px;padding:var(--transfer-panel-header-padding-top-bottom,8px) var(--transfer-panel-header-padding-left-right,16px);border-bottom:1px solid #c0c6cc;border-bottom:var(--transfer-panel-border-width,1px) var(--line-solid,solid) var(--transfer-panel-border-color,#c0c6cc);background-color:#fff;background-color:var(--transfer-panel-header-background-color,#fff);color:#333;color:var(--transfer-panel-header-text-color,#333);font-size:12px;font-size:var(--transfer-panel-header-text-size,12px)}.next-transfer-panel-search{padding:0 8px;padding:0 var(--transfer-panel-search-margin-left-right,8px);margin-top:8px;margin-top:var(--transfer-panel-search-margin-top,8px);margin-bottom:8px;margin-bottom:var(--transfer-panel-search-margin-bottom,8px);width:100%}.next-transfer .next-transfer-panel-list{width:180px;width:var(--transfer-panel-list-width,180px);height:160px;height:var(--transfer-panel-list-height,160px);padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;overflow-y:auto}.next-transfer-panel-not-found-container{display:table;width:100%;height:100%}.next-transfer-panel-not-found{display:table-cell;vertical-align:middle;text-align:center;color:#888;color:var(--color-text1-2,#888);font-size:14px;font-size:var(--font-size-body-2,14px)}.next-transfer-panel-item.next-focused{-webkit-transition:background-color .1s linear;transition:background-color .1s linear}.next-transfer-panel-item:not(.next-disabled).next-simple:hover{color:#0064c8;color:var(--transfer-simple-panel-item-hover-text-color,#0064c8)}.next-transfer-panel-item.next-insert-before:before{position:absolute;top:0;left:0;content:"";width:100%;border-top:1px solid #0064c8;border-top:var(--line-1,1px) solid var(--color-brand1-6,#0064c8)}.next-transfer-panel-item.next-insert-after:after{position:absolute;left:0;bottom:0;content:"";width:100%;border-bottom:1px solid #0064c8;border-bottom:var(--line-1,1px) solid var(--color-brand1-6,#0064c8)}.next-transfer-panel-footer{position:relative;padding:8px 16px;padding:var(--transfer-panel-footer-padding-top-bottom,8px) var(--transfer-panel-footer-padding-left-right,16px);border-top:1px solid #c0c6cc;border-top:var(--transfer-panel-border-width,1px) var(--line-solid,solid) var(--transfer-panel-border-color,#c0c6cc);background-color:#fff;background-color:var(--transfer-panel-footer-background-color,#fff);font-size:0;-webkit-box-shadow:none;-webkit-box-shadow:var(--transfer-panel-footer-shadow,none);box-shadow:none;box-shadow:var(--transfer-panel-footer-shadow,none)}.next-transfer-panel-count{margin-left:4px;font-size:12px;font-size:var(--font-size-body-1,12px);vertical-align:middle;color:#333;color:var(--transfer-panel-footer-text-color,#333)}.next-transfer-panel-move-all{font-size:12px;font-size:var(--font-size-body-1,12px);color:#333;color:var(--transfer-simple-panel-footer-text-color,#333);cursor:pointer}.next-transfer-panel-move-all.next-disabled{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);cursor:not-allowed}.next-transfer-operations{display:inline-block;vertical-align:middle;margin:0 8px;margin:0 var(--transfer-operation-margin-left-right,8px)}.next-transfer-move.next-icon{color:#333;color:var(--transfer-simple-move-icon-color,#333)}.next-transfer-move.next-icon:before{content:"\e989";content:var(--transfer-simple-move-icon,"")}.next-transfer-operation.next-btn{display:block}.next-transfer-operation.next-btn+.next-transfer-operation.next-btn{margin-top:4px;margin-top:var(--transfer-operation-margin-gutter,4px)}.next-transfer-operation.next-btn .next-icon .next-icon-remote,.next-transfer-operation.next-btn .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tree,.next-tree *,.next-tree :after,.next-tree :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tree,.next-tree-child-tree{margin:0;padding:0;list-style:none}.next-tree-node{white-space:nowrap}.next-tree-node-inner{font-size:0;outline:none}.next-tree-node-label-wrapper{display:inline-block;margin:0 4px;margin:0 var(--tree-node-title-margin,4px);vertical-align:middle}.next-tree-node-label{height:20px;line-height:20px;padding:0 4px;padding:0 var(--tree-node-title-padding,4px);border-radius:2px;border-radius:var(--tree-node-title-border-radius,2px);font-size:12px;font-size:var(--tree-node-title-font-size,12px)}.next-tree-node-label .next-icon{font-size:14px;font-size:calc(var(--tree-node-title-font-size, 12px) + 2px)}.next-tree-node-label .next-icon:before{font-size:12px;font-size:var(--tree-node-title-font-size,12px);width:12px;width:var(--tree-node-title-font-size,12px);margin-right:.5em}.next-tree-node-input.next-input{margin:0 4px;margin:0 var(--tree-node-title-margin,4px)}.next-tree-node-indent-unit{display:inline-block;width:24px;vertical-align:middle;position:relative}.next-tree-node-indent-unit.next-line:before{content:"";position:absolute;display:inline-block;border-left:1px solid #e3e4e6;border-left:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6);height:28px;height:calc(var(--tree-node-padding, 4px) + var(--line-2, 2px)*2 + 20px);left:7.5px;left:calc(var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2)}.next-tree-switcher{position:relative;display:inline-block;vertical-align:middle;margin-right:4px;margin-right:var(--tree-switch-margint-right,4px)}.next-tree .next-tree-unfold-icon:before{content:"";content:var(--tree-unfold-icon-content,"")}.next-tree-switcher.next-noline{width:12px;width:var(--tree-switch-arrow-size,12px);height:12px;height:var(--tree-switch-arrow-size,12px);line-height:12px;line-height:var(--tree-switch-arrow-size,12px);cursor:pointer}.next-tree-switcher.next-noline .next-tree-switcher-icon{-webkit-transition:-webkit-transform .1s linear;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;color:#c0c6cc;color:var(--tree-switch-arrow-color,#c0c6cc)}.next-tree-switcher.next-noline .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-noline .next-tree-switcher-icon:before{width:12px;width:var(--tree-switch-arrow-size,12px);font-size:12px;font-size:var(--tree-switch-arrow-size,12px);line-height:inherit}.next-tree-switcher.next-noline .next-tree-fold-icon:before{content:"\e783";content:var(--tree-fold-icon-content,"")}.next-tree-switcher.next-noline.next-close .next-tree-switcher-icon{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.next-tree-switcher.next-noline.next-close .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-noline.next-close .next-tree-switcher-icon:before{width:12px;width:var(--tree-switch-arrow-size,12px);font-size:12px;font-size:var(--tree-switch-arrow-size,12px);line-height:inherit}.next-tree-switcher.next-noline:not(.next-disabled):hover .next-tree-switcher-icon{color:#0064c8;color:var(--tree-switch-hover-arrow-color,#0064c8)}.next-tree-switcher.next-noline.next-disabled{cursor:not-allowed}.next-tree-switcher.next-noline.next-disabled .next-tree-switcher-icon{color:#555;color:var(--tree-node-disabled-color,#555)}.next-tree-switcher.next-noop-noline{width:12px;width:var(--tree-switch-arrow-size,12px);height:12px;height:var(--tree-switch-arrow-size,12px)}.next-tree-switcher.next-line{width:16px;width:var(--tree-switch-size,16px);height:16px;height:var(--tree-switch-size,16px);line-height:14px;line-height:calc(var(--tree-switch-size, 16px) - var(--tree-switch-border-width, 1px)*2);border:1px solid #003c78;border:var(--tree-switch-border-width,1px) var(--line-solid,solid) var(--tree-switch-border-color,#003c78);border-radius:2px;border-radius:var(--tree-switch-corner,2px);background-color:#fff;background-color:var(--tree-switch-bg-color,#fff);cursor:pointer}.next-tree-switcher.next-line .next-tree-switcher-icon{margin-left:1px;margin-left:calc(var(--tree-switch-size, 16px)/2 - 6px - var(--tree-switch-border-width, 1px)*2/2);color:#555;color:var(--tree-switch-icon-color,#555)}.next-tree-switcher.next-line .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-line .next-tree-switcher-icon:before{width:12px;font-size:12px;line-height:inherit}.next-tree-switcher.next-line .next-tree-switcher-fold-icon:before{content:"\e655";content:var(--tree-switcher-fold-icon-content,"")}.next-tree-switcher.next-line .next-tree-switcher-unfold-icon:before{content:"\e601";content:var(--tree-switcher-unfold-icon-content,"")}.next-tree-switcher.next-line:not(.next-disabled):hover{border-color:#555;border-color:var(--tree-switch-hover-border-color,#555);background-color:#fff;background-color:var(--tree-switch-hover-bg-color,#fff)}.next-tree-switcher.next-line:not(.next-disabled):hover .next-tree-switcher-icon{color:#555;color:var(--tree-switch-hover-icon-color,#555)}.next-tree-switcher.next-line.next-disabled{border-color:#e3e4e6;border-color:var(--color-line1-1,#e3e4e6);background-color:#fff;cursor:not-allowed}.next-tree-switcher.next-line.next-disabled .next-tree-switcher-icon{color:#555;color:var(--tree-node-disabled-color,#555)}.next-tree-switcher.next-noop-line{width:16px;width:var(--tree-switch-size,16px);height:16px;height:var(--tree-switch-size,16px)}.next-tree-switcher.next-noop-line-noroot{height:0;border-left:1px solid #e3e4e6;border-left:var(--tree-switch-border-width,1px) var(--line-solid,solid) var(--tree-line-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6)}.next-tree-switcher.next-noop-line-noroot .next-tree-right-angle{bottom:-1px;bottom:calc(0px - var(--tree-line-width, 1px))}.next-tree-switcher.next-loading.next-loading-noline{width:12px;width:var(--tree-switch-arrow-size,12px);height:12px;height:var(--tree-switch-arrow-size,12px);line-height:12px;line-height:var(--tree-switch-arrow-size,12px)}.next-tree-switcher.next-loading.next-loading-line{width:16px;width:var(--tree-switch-size,16px);height:16px;height:var(--tree-switch-size,16px);line-height:14px;line-height:calc(var(--tree-switch-size, 16px) - var(--tree-switch-border-width, 1px)*2);border:1px solid transparent;border:var(--tree-switch-border-width,1px) var(--line-solid,solid) transparent}.next-tree-switcher.next-loading .next-tree-switcher-icon{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-tree-switcher.next-loading .next-tree-switcher-icon .next-icon-remote,.next-tree-switcher.next-loading .next-tree-switcher-icon:before{width:12px;width:var(--tree-switch-arrow-size,12px);font-size:12px;font-size:var(--tree-switch-arrow-size,12px);line-height:inherit}.next-tree-right-angle{position:absolute;bottom:6.5px;bottom:calc(var(--tree-switch-size, 16px)/2 - var(--tree-switch-border-width, 1px)*2/2 - var(--tree-line-width, 1px)/2);left:-17.5px;left:calc(-24px + var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2 - var(--tree-switch-border-width, 1px));display:block;width:16.5px;width:calc(24px - var(--tree-switch-size, 16px)/2 + var(--tree-line-width, 1px)/2);height:22px;height:calc(20px + var(--tree-node-padding, 4px) - var(--tree-line-width, 1px)*2);border-left:1px solid #e3e4e6;border-left:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6)}.next-tree.next-label-block .next-tree-node-inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;outline:none}.next-tree.next-label-block .next-tree-node-label-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.next-tree.next-node-indent .next-tree-node .next-tree-node{margin-left:24px}.next-tree.next-node-indent .next-tree-node-inner{padding-top:2px;padding-top:calc(var(--tree-node-padding, 4px)/2);padding-bottom:2px;padding-bottom:calc(var(--tree-node-padding, 4px)/2)}.next-tree.next-node-indent .next-tree-node-inner:focus .next-tree-node-label{color:#333;color:var(--tree-node-hover-color,#333);background-color:#f7f9fa;background-color:var(--tree-node-hover-bg-color,#f7f9fa)}.next-tree.next-node-indent .next-tree-node-label-wrapper{border-top:2px solid transparent;border-top:var(--line-2,2px) solid transparent;border-bottom:2px solid transparent;border-bottom:var(--line-2,2px) solid transparent}.next-tree.next-node-indent .next-tree-node-label{-webkit-transition:color .1s linear,background-color .1s linear;transition:color .1s linear,background-color .1s linear;cursor:default;color:#333;color:var(--tree-node-normal-color,#333);background-color:#fff;background-color:var(--tree-node-normal-background,#fff)}.next-tree.next-node-indent .next-tree-node-label-selectable{cursor:pointer}.next-tree.next-node-indent .next-tree-node-label:hover{color:#333;color:var(--tree-node-hover-color,#333);background-color:#f7f9fa;background-color:var(--tree-node-hover-bg-color,#f7f9fa)}.next-tree.next-node-indent .next-tree-node-inner.next-selected .next-tree-node-label{color:#0064c8;color:var(--tree-node-selected-color,#0064c8);background-color:transparent;background-color:var(--tree-node-selected-background,transparent)}.next-tree.next-node-indent .next-tree-node-inner.next-disabled .next-tree-node-label,.next-tree.next-node-indent .next-tree-node-inner.next-disabled .next-tree-node-label:hover{color:#555;color:var(--tree-node-disabled-color,#555);background-color:transparent;background-color:var(--tree-node-disabled-background,transparent);cursor:not-allowed}.next-tree.next-node-indent .next-tree-node-inner.next-drag-over .next-tree-node-label{background-color:#0064c8;background-color:var(--color-brand1-6,#0064c8);color:#fff;opacity:.8}.next-tree.next-node-indent .next-tree-node-inner.next-drag-over-gap-top .next-tree-node-label-wrapper{border-top-color:#0064c8;border-top-color:var(--color-brand1-6,#0064c8)}.next-tree.next-node-indent .next-tree-node-inner.next-drag-over-gap-bottom .next-tree-node-label-wrapper{border-bottom-color:#0064c8;border-bottom-color:var(--color-brand1-6,#0064c8)}.next-tree.next-node-block .next-tree-node-inner{padding-top:4px;padding-top:var(--tree-node-padding,4px);padding-bottom:4px;padding-bottom:var(--tree-node-padding,4px);-webkit-transition:color .1s linear,background-color .1s linear;transition:color .1s linear,background-color .1s linear;cursor:pointer;color:#333;color:var(--tree-node-normal-color,#333);background-color:#fff;background-color:var(--tree-node-normal-background,#fff)}.next-tree.next-node-block .next-tree-node-inner:focus,.next-tree.next-node-block .next-tree-node-inner:hover{color:#333;color:var(--tree-node-hover-color,#333);background-color:#f7f9fa;background-color:var(--tree-node-hover-bg-color,#f7f9fa)}.next-tree.next-node-block .next-tree-node-inner.next-selected{color:#0064c8;color:var(--tree-node-selected-color,#0064c8);background-color:transparent;background-color:var(--tree-node-selected-background,transparent)}.next-tree.next-node-block .next-tree-node-inner.next-disabled,.next-tree.next-node-block .next-tree-node-inner.next-disabled:hover{color:#555;color:var(--tree-node-disabled-color,#555);background-color:transparent;background-color:var(--tree-node-disabled-background,transparent);cursor:not-allowed}.next-tree.next-show-line .next-tree-node .next-tree-node:not(:last-child){margin-left:7.5px;margin-left:calc(var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2);border-left:1px solid #e3e4e6;border-left:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6);padding-left:15.5px;padding-left:calc(24px - var(--tree-line-width, 1px) - var(--tree-switch-size, 16px)/2 + var(--tree-line-width, 1px)/2)}.next-tree-node.next-filtered>.next-tree-node-inner .next-tree-node-label,.next-tree-node.next-filtered>.next-tree-node-inner .next-tree-node-label:hover{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-tree[dir=rtl] .next-tree-switcher{margin-left:4px;margin-left:var(--tree-switch-margint-right,4px);margin-right:0}.next-tree[dir=rtl] .next-tree-switcher.next-noop-line-noroot{border-left:none;border-right:1px solid #e3e4e6;border-right:var(--tree-switch-border-width,1px) var(--line-solid,solid) var(--tree-line-color,#e3e4e6)}.next-tree[dir=rtl] .next-tree-right-angle{left:auto;right:-17.5px;right:calc(-24px + var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2 - var(--tree-switch-border-width, 1px))}.next-tree[dir=rtl].next-show-line .next-tree-node .next-tree-node:not(:last-child),.next-tree[dir=rtl] .next-tree-right-angle{border-left:none;border-right:1px solid #e3e4e6;border-right:var(--tree-line-width,1px) var(--tree-line-style,solid) var(--tree-line-color,#e3e4e6)}.next-tree[dir=rtl].next-show-line .next-tree-node .next-tree-node:not(:last-child){margin-left:0;margin-right:7.5px;margin-right:calc(var(--tree-switch-size, 16px)/2 - var(--tree-line-width, 1px)/2);padding-left:0;padding-right:15.5px;padding-right:calc(24px - var(--tree-line-width, 1px) - var(--tree-switch-size, 16px)/2 + var(--tree-line-width, 1px)/2)}.next-tree[dir=rtl].next-node-indent .next-tree-node .next-tree-node{margin-left:0;margin-right:24px}.next-tree-select,.next-tree-select *,.next-tree-select :after,.next-tree-select :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-tree-select-dropdown{background:#fff;background:var(--tree-select-background,#fff);border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));max-height:260px;overflow:auto}.next-tree-select-dropdown>.next-tree,.next-tree-select-dropdown>.next-tree-select-not-found,.next-tree-select-dropdown>.next-virtual-tree-container{padding:8px 20px;padding:var(--tree-select-padding-vertical,8px) var(--tree-select-padding-horizontal,20px)}.next-tree-select-not-found{font-size:12px;font-size:var(--font-size-body-1,12px);color:#888;color:var(--color-text1-2,#888)}.next-upload-list[dir=rtl].next-upload-list-text .next-upload-list-item{padding:4px 16px;padding:4px var(--upload-text-list-padding-left-right,16px);padding-left:36px;padding-left:calc(var(--upload-text-list-close-icon-right, 12px)*2 + 12px)}.next-upload-list[dir=rtl].next-upload-list-text .next-icon{left:12px;left:var(--upload-text-list-close-icon-right,12px);right:auto}.next-upload-list[dir=rtl].next-upload-list-image .next-icon-close{float:left;margin-left:4px;margin-left:var(--upload-image-list-close-icon-right,4px);margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-thumbnail{float:right;margin-left:8px;margin-right:0}.next-upload-list[dir=rtl].next-upload-list-image .next-upload-list-item-progress{margin-right:56px;margin-right:calc(var(--upload-image-list-item-picture-size, 48px) + 8px);margin-left:20px;margin-left:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2)}.next-upload,.next-upload *,.next-upload :after,.next-upload :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-upload-inner{outline:0;display:inline-block}.next-upload-inner.next-hidden{display:none}.next-upload-list{overflow:hidden}.next-upload-list,.next-upload-list *,.next-upload-list :after,.next-upload-list :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-upload-list-item{position:relative}.next-upload-list-item.next-hidden{display:none}.next-upload-list-item-name{text-decoration:none}.next-upload.next-disabled{border-color:#e3e4e6!important;border-color:var(--color-line1-1,#e3e4e6)!important;color:#c1c1c1!important;color:var(--color-text1-1,#c1c1c1)!important}.next-upload.next-disabled .next-icon-close{cursor:not-allowed!important}.next-upload.next-disabled .next-upload-inner *{color:#c1c1c1!important;color:var(--color-text1-1,#c1c1c1)!important;border-color:#e3e4e6!important;border-color:var(--color-line1-1,#e3e4e6)!important;cursor:not-allowed!important}.next-upload-list-text .next-upload-list-item{background-color:transparent;background-color:var(--upload-text-list-bg-color,transparent);padding:4px 16px;padding:4px var(--upload-text-list-padding-left-right,16px);padding-right:36px;padding-right:calc(var(--upload-text-list-close-icon-right, 12px)*2 + 12px);height:44px;height:var(--upload-text-list-height,44px);line-height:36px;line-height:calc(var(--upload-text-list-height, 44px) - 8px);font-size:12px;font-size:var(--upload-text-list-font-size,12px);overflow:hidden;-webkit-transition:all .1s linear;transition:all .1s linear;border-radius:0;border-radius:var(--upload-text-list-corner,0)}.next-upload-list-text .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-text .next-upload-list-item-op{position:absolute;top:0;right:12px;right:var(--upload-text-list-close-icon-right,12px)}.next-upload-list-text .next-upload-list-item .next-icon-close{color:#333;color:var(--upload-text-list-close-icon-color,#333);cursor:pointer;text-align:center;-webkit-transition:all .1s linear;transition:all .1s linear;line-height:44px;line-height:var(--upload-text-list-height,44px)}.next-upload-list-text .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-text .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-text .next-upload-list-item:hover{background-color:transparent;background-color:var(--upload-text-list-bg-color-hover,transparent)}.next-upload-list-text .next-upload-list-item:hover .next-icon{color:#0064c8;color:var(--upload-text-list-close-icon-color-hover,#0064c8)}.next-upload-list-text .next-upload-list-item-name-wrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:4px}.next-upload-list-text .next-upload-list-item-name{color:#333;color:var(--upload-text-list-name-font-color,#333);-webkit-transition:all .1s linear;transition:all .1s linear}.next-upload-list-text .next-upload-list-item-size{color:#666;color:var(--upload-text-list-size-font-color,#666);margin-left:8px}.next-upload-list-text .next-upload-list-item-uploading{line-height:18px;line-height:calc(var(--upload-text-list-height, 44px)/2 - 4px)}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress{line-height:0;padding-top:7px;padding-top:calc(var(--upload-text-list-height, 44px)/2/2 - 2px - var(--upload-text-list-progressbar-height, 4px)/2);padding-bottom:7px;padding-bottom:calc(var(--upload-text-list-height, 44px)/2/2 - 2px - var(--upload-text-list-progressbar-height, 4px)/2)}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:4px;height:var(--upload-text-list-progressbar-height,4px)}.next-upload-list-text .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:4px;height:var(--upload-text-list-progressbar-height,4px);margin-top:-2px;margin-top:calc(0px - var(--upload-text-list-progressbar-height, 4px)/2)}.next-upload-list-text .next-upload-list-item-done{line-height:36px;line-height:calc(var(--upload-text-list-height, 44px) - 8px)}.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-name{color:#0064c8;color:var(--upload-text-list-name-font-color-hover,#0064c8)}.next-upload-list-text .next-upload-list-item-done:hover .next-upload-list-item-size{color:#0064c8;color:var(--upload-text-list-size-font-color-hover,#0064c8)}.next-upload-list-text .next-upload-list-item-error{background-color:transparent!important;background-color:var(--upload-text-list-bg-color-error,transparent)!important}.next-upload-list-text .next-upload-list-item-error.next-upload-list-item-error-with-msg{line-height:18px;line-height:calc(var(--upload-text-list-height, 44px)/2 - 4px)}.next-upload-list-text .next-upload-list-item-error-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#c80000;color:var(--upload-text-list-error-text-color,#c80000)}.next-upload-list-image .next-upload-list-item{-webkit-box-sizing:content-box;box-sizing:content-box;border:1px solid transparent;border:var(--upload-image-list-item-border-width,1px) solid var(--upload-image-list-item-border-color,transparent);background-color:#f8f8f9;background-color:var(--upload-image-list-item-bg-color,#f8f8f9);padding:8px;padding:var(--upload-image-list-item-padding,8px);height:48px;height:var(--upload-image-list-item-picture-size,48px);line-height:48px;line-height:var(--upload-image-list-item-picture-size,48px);font-size:12px;font-size:var(--upload-image-list-item-font-size,12px);-webkit-transition:all .1s linear;transition:all .1s linear;overflow:hidden;border-radius:0;border-radius:var(--upload-card-list-corner,0)}.next-upload-list-image .next-upload-list-item:not(:last-child){margin-bottom:4px}.next-upload-list-image .next-upload-list-item:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-upload-list-image .next-upload-list-item-op{float:right;margin-right:4px}.next-upload-list-image .next-upload-list-item .next-icon-close{cursor:pointer;color:#333;color:var(--upload-image-list-close-icon-color,#333);text-align:center}.next-upload-list-image .next-upload-list-item .next-icon-close .next-icon-remote,.next-upload-list-image .next-upload-list-item .next-icon-close:before{width:12px;font-size:12px;line-height:inherit}.next-upload-list-image .next-upload-list-item:hover{border-color:transparent;border-color:var(--upload-image-list-item-border-color-hover,transparent)}.next-upload-list-image .next-upload-list-item:hover .next-icon-close{color:#333;color:var(--upload-image-list-close-icon-color-hover,#333)}.next-upload-list-image .next-upload-list-item-name{display:block;color:#333;color:var(--upload-text-list-name-font-color,#333);margin-left:56px;margin-left:calc(var(--upload-image-list-item-picture-size, 48px) + var(--upload-image-list-item-padding, 8px));margin-right:20px;margin-right:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-transition:all .1s linear;transition:all .1s linear}.next-upload-list-image .next-upload-list-item-size{color:#666;color:var(--upload-text-list-size-font-color,#666);margin-left:8px}.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-name{color:#0064c8;color:var(--upload-text-list-name-font-color-hover,#0064c8)}.next-upload-list-image .next-upload-list-item-done:hover .next-upload-list-item-size{color:#0064c8;color:var(--upload-text-list-size-font-color-hover,#0064c8)}.next-upload-list-image .next-upload-list-item-thumbnail{float:left;width:48px;width:var(--upload-image-list-item-picture-size,48px);height:48px;height:var(--upload-image-list-item-picture-size,48px);color:#c1c1c1;color:var(--upload-image-list-item-thumbnail-font-color,#c1c1c1);border:1px solid #e3e4e6;border:var(--upload-image-list-item-picture-border-width,1px) solid var(--upload-image-list-item-picture-border-color,#e3e4e6);border-radius:0;border-radius:var(--upload-image-list-item-picture-corner,0);background-color:#f8f8f9;background-color:var(--upload-image-list-item-picture-background-color,#f8f8f9);margin-right:8px;vertical-align:middle;text-align:center;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.next-upload-list-image .next-upload-list-item-thumbnail img{width:100%;height:100%}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon{display:block;margin:0;line-height:48px;line-height:var(--upload-image-list-item-picture-size,48px)}.next-upload-list-image .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-image .next-upload-list-item-thumbnail .next-icon:before{width:24px;font-size:24px;line-height:inherit}.next-upload-list-image .next-upload-list-item-error{border-color:transparent!important;border-color:var(--upload-image-list-item-border-color-error,transparent)!important;background-color:#fdfbfb;background-color:var(--upload-image-list-item-error-bg-color,#fdfbfb)}.next-upload-list-image .next-upload-list-item-uploading{background-color:#f8f8f9;background-color:var(--upload-image-list-item-uploading-bg-color,#f8f8f9)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-name{height:24px;height:calc(var(--upload-image-list-item-picture-size, 48px)/2);line-height:24px;line-height:calc(var(--upload-image-list-item-picture-size, 48px)/2)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress{margin-left:56px;margin-left:calc(var(--upload-image-list-item-picture-size, 48px) + 8px);margin-right:20px;margin-right:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2);line-height:0;padding-top:10px;padding-top:calc(var(--upload-image-list-item-picture-size, 48px)/2/2 - var(--upload-image-list-progressbar-height, 4px)/2);padding-bottom:10px;padding-bottom:calc(var(--upload-image-list-item-picture-size, 48px)/2/2 - var(--upload-image-list-progressbar-height, 4px)/2)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-underlay{height:4px;height:var(--upload-image-list-progressbar-height,4px)}.next-upload-list-image .next-upload-list-item-uploading .next-upload-list-item-progress .next-progress-line-overlay{height:4px;height:var(--upload-image-list-progressbar-height,4px);margin-top:-2px;margin-top:calc(0px - var(--upload-image-list-progressbar-height, 4px)/2)}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg,.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-name{height:24px;height:calc(var(--upload-image-list-item-picture-size, 48px)/2);line-height:24px;line-height:calc(var(--upload-image-list-item-picture-size, 48px)/2)}.next-upload-list-image .next-upload-list-item-error-with-msg .next-upload-list-item-error-msg{margin-left:56px;margin-left:calc(var(--upload-image-list-item-picture-size, 48px) + 8px);margin-right:20px;margin-right:calc(12px + var(--upload-image-list-close-icon-right, 4px)*2);color:#c80000;color:var(--upload-text-list-error-text-color,#c80000);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card{display:inline-block}.next-upload-list-card .next-upload-list-item{vertical-align:middle;float:left}.next-upload-list-card .next-upload-list-item:not(:last-child){margin-right:12px;margin-right:var(--upload-card-list-margin-right,12px)}.next-upload-list-card .next-upload-list-item-wrapper{position:relative;border:1px solid #e3e4e6;border:1px solid var(--upload-card-list-border-color,#e3e4e6);width:88px;width:var(--upload-card-size,88px);height:88px;height:var(--upload-card-size,88px);padding:0;padding:var(--upload-card-list-padding,0);background-color:transparent;background-color:var(--upload-card-list-bg-color,transparent)}.next-upload-list-card .next-upload-list-item-thumbnail{text-align:center;width:100%;height:100%;color:#0064c8;color:var(--upload-card-list-thumbnail-font-color,#0064c8);font-size:12px;font-size:var(--upload-card-list-thumbnail-font-size,12px)}.next-upload-list-card .next-upload-list-item-thumbnail img{max-width:100%;max-height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.next-upload-list-card .next-upload-list-item-thumbnail img:focus{outline:0}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon{width:100%}.next-upload-list-card .next-upload-list-item-thumbnail .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item-thumbnail .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-list-card .next-upload-list-item-handler{margin-top:7px;margin-top:calc(var(--upload-card-size, 88px)/2 - 37px)}.next-upload-list-card .next-upload-list-item-handler .next-icon-cry{margin-top:10px}.next-upload-list-card .next-upload-list-item-name{display:block;width:88px;width:var(--upload-card-size,88px);text-align:center;margin-top:4px;margin-top:var(--upload-card-list-name-margin-top,4px);font-size:12px;font-size:var(--upload-card-list-name-font-size,12px);color:#333;color:var(--upload-card-list-name-font-color,#333);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.next-upload-list-card .next-upload-list-item-progress{position:absolute;font-size:0;bottom:0;left:0;width:100%}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-underlay{border-radius:0;height:4px;height:var(--upload-card-list-progressbar-height,4px)}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-overlay{border-radius:0;height:4px;height:var(--upload-card-list-progressbar-height,4px);margin-top:-2px;margin-top:calc(0px - var(--upload-card-list-progressbar-height, 4px)/2)}.next-upload-list-card .next-upload-list-item-uploading .next-upload-list-item-wrapper{background-color:#fff;background-color:var(--upload-card-list-uploading-bg-color,#fff)}.next-upload-list-card .next-upload-list-item:hover .next-upload-tool{opacity:.8}.next-upload-list-card .next-upload-list-item .next-upload-tool{position:absolute;z-index:1;background-color:rgba(0,0,0,.7);background-color:rgba(0,0,0,var(--upload-select-card-tool-bg-opacity,.7));-webkit-transition:all .1s linear;transition:all .1s linear;opacity:0;width:100%;height:28px;left:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon{line-height:28px;color:#fff;cursor:pointer}.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon .next-icon-remote,.next-upload-list-card .next-upload-list-item .next-upload-tool .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-list-card .next-upload-list-item .next-upload-tool-item{width:100%;text-align:center}.next-upload-list-card .next-upload-list-item .next-upload-tool-item:not(:last-child){border-right:1px solid #fff}.next-upload-list-card .next-upload-list-item .next-upload-tool-reupload{display:inline-block}.next-upload-list-card .next-upload-list-item-error .next-upload-list-item-wrapper{border-color:#c80000;border-color:var(--upload-card-list-border-color-error,#c80000)}.next-upload-list-card.next-upload-ie9 .next-upload-tool{display:table}.next-upload-list-card.next-upload-ie9 .next-upload-tool-item{display:table-cell;width:1%}.next-upload-card{border:1px dashed #c0c6cc;border:1px var(--upload-card-border-style,dashed) var(--upload-card-border-color,#c0c6cc);width:88px;width:var(--upload-card-size,88px);height:88px;height:var(--upload-card-size,88px);background-color:#fff;background-color:var(--upload-card-bg-color,#fff);text-align:center;cursor:pointer;-webkit-transition:border-color .1s linear;transition:border-color .1s linear;display:table-cell;vertical-align:middle}.next-upload-card .next-icon{color:#333;color:var(--upload-card-icon-color,#333)}.next-upload-card .next-icon .next-icon-remote,.next-upload-card .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-upload-card .next-upload-add-icon:before{content:"\e655";content:var(--upload-card-add-icon,"")}.next-upload-card .next-upload-text{font-size:12px;font-size:var(--upload-card-add-text-size,12px);margin-top:8px;margin-top:var(--upload-card-add-text-margin-top,8px);color:#333;color:var(--upload-card-font-color,#333);outline:none}.next-upload-card:hover{border-color:#0064c8;border-color:var(--upload-card-hover-border-color,#0064c8)}.next-upload-card:hover .next-icon,.next-upload-card:hover .next-upload-text{color:#0064c8;color:var(--upload-card-hover-font-color,#0064c8)}.next-upload-dragable .next-upload-inner{display:block}.next-upload-dragable .next-upload-drag{border:1px dashed #d1d5d9;border:1px dashed var(--upload-drag-zone-border-color,#d1d5d9);-webkit-transition:border-color .1s linear;transition:border-color .1s linear;cursor:pointer;border-radius:2px;border-radius:var(--upload-drag-zone-corner,2px);background-color:transparent;background-color:var(--upload-drag-zone-bg-color,transparent);text-align:center;margin-bottom:4px}.next-upload-dragable .next-upload-drag-icon{margin:20px 0 0;color:#0064c8;color:var(--upload-drag-zone-upload-icon-color,#0064c8)}.next-upload-dragable .next-upload-drag-icon .next-upload-drag-upload-icon:before{content:"\ea25";content:var(--upload-drag-zone-upload-icon,"");font-size:16px}.next-upload-dragable .next-upload-drag-text{margin:12px 0 0;font-size:12px;font-size:var(--upload-drag-zone-font-size,12px);color:#333;color:var(--upload-drag-zone-upload-normal-title-color,#333)}.next-upload-dragable .next-upload-drag-hint{margin:4px 0 20px;font-size:12px;font-size:var(--upload-drag-zone-hint-font-size,12px);color:#333;color:var(--upload-drag-zone-upload-normal-hint-color,#333)}.next-upload-dragable .next-upload-drag-over{border-color:#d1d5d9;border-color:var(--upload-drag-zone-over-border-color,#d1d5d9)}.next-shell{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell,.next-shell *,.next-shell :after,.next-shell :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-shell-content-wrapper{overflow:auto}.next-shell-header{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;z-index:9}.next-shell-header,.next-shell-header .dock-trigger,.next-shell-header .nav-trigger{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-shell-header .dock-trigger,.next-shell-header .nav-trigger{outline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;width:32px;height:32px}.next-shell-header .nav-trigger{margin-right:10px}.next-shell-header .dock-trigger{margin-left:10px}.next-shell-header.next-shell-fixed-header{position:sticky;top:0}.next-shell-header .next-shell-navigation{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.next-shell-header .next-shell-action,.next-shell-header .next-shell-branding,.next-shell-header .next-shell-navigation{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-shell-sub-main{-ms-flex:1 1;flex:1 1;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;outline:0}.next-shell-main,.next-shell-sub-main{-webkit-box-flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;height:100%;overflow:auto}.next-shell-main{-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;position:relative;-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-main .next-shell-content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.next-shell-main .next-shell-content-inner{margin:0 auto}.next-shell-main .next-shell-footer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.next-shell-main .next-shell-footer,.next-shell .next-aside-navigation,.next-shell .next-aside-tooldock{display:-webkit-box;display:-ms-flexbox;display:flex}.next-shell .next-aside-navigation.fixed,.next-shell .next-aside-tooldock.fixed{position:fixed;top:0;bottom:0;z-index:1}.next-shell .next-aside-navigation.fixed{left:0}.next-shell .next-aside-tooldock.fixed{right:0}.next-shell-aside{-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-aside .aside-trigger{cursor:pointer;outline:0;position:absolute;right:0;top:50%;width:20px;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;border:1px solid #ddd;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-shell-aside .local-nav-trigger{outline:0;border-left:none;-webkit-transform:translate(100%,-50%);-ms-transform:translate(100%,-50%);transform:translate(100%,-50%);right:0}.next-shell-aside .ancillary-trigger{outline:0;-webkit-transform:translate(-100%,-50%);-ms-transform:translate(-100%,-50%);transform:translate(-100%,-50%);border-right:0;left:1px}.next-shell-aside.next-aside-ancillary,.next-shell-aside.next-aside-localnavigation{position:relative}.next-shell-aside.next-shell-navigation{justify-self:flex-start;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-aside.next-shell-navigation,.next-shell-aside.next-shell-tooldock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.next-shell-aside.next-shell-tooldock{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.next-shell-aside .next-shell-tooldockitem{width:100%;text-align:center}.next-shell-aside .next-shell-localnavigation{position:relative}.next-shell-aside .next-shell-ancillary,.next-shell-aside .next-shell-localnavigation{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;justify-self:flex-start;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell-light .next-shell-header .dock-trigger,.next-shell-light .next-shell-header .nav-trigger{background:#fff;background:var(--shell-light-header-background,#fff)}.next-shell-light .next-shell-aside .local-nav-trigger{background:#004080;background:var(--shell-light-local-navigation-background,#004080)}.next-shell-light .next-shell-aside .ancillary-trigger{background:#fff;background:var(--shell-light-ancillary-background,#fff)}.next-shell-light .next-shell-header{color:#000;color:var(--shell-light-header-color,#000);height:52px;height:var(--shell-light-header-height,52px);background:#fff;background:var(--shell-light-header-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-light-header-divider-size,1px) var(--shell-light-header-divider-style,solid) var(--shell-light-header-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-header-shadow,none);box-shadow:none;box-shadow:var(--shell-light-header-shadow,none);padding:0 16px;padding:0 var(--shell-light-header-paddingLeft,16px)}.next-shell-light .next-shell-header .next-shell-navigation{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:52px;height:var(--shell-light-header-height,52px);line-height:52px;line-height:var(--shell-light-header-height,52px);margin:0 48px;margin:0 var(--shell-light-navigation-hoz-marginLeft,48px)}.next-shell-light .next-shell-task-header{width:100%;min-height:40px;min-height:var(--shell-light-multitask-min-height,40px);background:#fff;background:var(--shell-light-multitask-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-light-multitask-divider-size,1px) var(--shell-light-multitask-divider-style,solid) var(--shell-light-multitask-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-multitask-shadow,none);box-shadow:none;box-shadow:var(--shell-light-multitask-shadow,none);padding:0;padding:0 var(--shell-light-multitask-paddingLeft,0);overflow:auto}.next-shell-light .next-shell-main{background:#eff3f8;background:var(--shell-light-content-background,#eff3f8)}.next-shell-light .next-shell-main .next-shell-appbar{min-height:48px;min-height:var(--shell-light-appbar-min-height,48px);background:#fff;background:var(--shell-light-appbar-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-light-appbar-divider-size,1px) var(--shell-light-appbar-divider-style,solid) var(--shell-light-appbar-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-appbar-shadow,none);box-shadow:none;box-shadow:var(--shell-light-appbar-shadow,none);padding:0 24px;padding:0 var(--shell-light-appbar-paddingLeft,24px)}.next-shell-light .next-shell-main .next-shell-content{padding:20px;padding:var(--shell-light-content-paddingTop,20px) var(--shell-light-content-paddingLeft,20px)}.next-shell-light .next-shell-main .next-shell-footer{background:transparent;background:var(--shell-light-footer-background,transparent);min-height:56px;min-height:var(--shell-light-footer-min-height,56px);color:#c1c1c1;color:var(--shell-light-footer-color,#c1c1c1);font-size:14px;font-size:var(--shell-light-footer-font-size,14px)}.next-shell-light .next-shell-aside.next-shell-navigation{width:168px;width:var(--shell-light-navigation-ver-width,168px);background:#fff;background:var(--shell-light-navigation-ver-background,#fff);border-right:1px solid #e3e4e6;border-right:var(--shell-light-navigation-ver-divider-size,1px) var(--shell-light-navigation-ver-divider-style,solid) var(--shell-light-navigation-ver-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-navigation-ver-shadow,none);box-shadow:none;box-shadow:var(--shell-light-navigation-ver-shadow,none);padding:8px 0;padding:var(--shell-light-navigation-ver-paddingTop,8px) 0 var(--shell-light-navigation-ver-paddingBottom,8px)}.next-shell-light .next-shell-aside.next-shell-navigation.next-shell-collapse.next-shell-mini{width:60px;width:var(--shell-light-navigation-ver-width-mini,60px)}.next-shell-light .next-shell-aside.next-shell-navigation.next-shell-collapse{width:0}.next-shell-light .next-shell-aside.next-shell-tooldock{width:52px;width:var(--shell-light-tooldock-width,52px);background:#004080;background:var(--shell-light-tooldock-background,#004080);border-left:1px solid #e3e4e6;border-left:var(--shell-light-tooldock-divider-size,1px) var(--shell-light-tooldock-divider-style,solid) var(--shell-light-tooldock-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-tooldock-shadow,none);box-shadow:none;box-shadow:var(--shell-light-tooldock-shadow,none);padding:8px 0;padding:var(--shell-light-tooldock-paddingTop,8px) 0 var(--shell-light-tooldock-paddingBottom,8px)}.next-shell-light .next-shell-aside .next-shell-tooldockitem{padding:8px 0;padding:var(--shell-light-tooldock-item-paddingTop,8px) 0;color:#555;color:var(--shell-light-tooldock-item-color,#555);background:transparent;background:var(--shell-light-tooldock-item-background,transparent)}.next-shell-light .next-shell-aside .next-shell-tooldockitem:hover{color:#111;color:var(--shell-light-tooldock-item-color-hover,#111);background:#eff3f8;background:var(--shell-light-tooldock-item-background-hover,#eff3f8)}.next-shell-light .next-shell-aside .next-shell-localnavigation{width:168px;width:var(--shell-light-local-navigation-width,168px);background:#004080;background:var(--shell-light-local-navigation-background,#004080);border-right:1px solid #e3e4e6;border-right:var(--shell-light-local-navigation-divider-size,1px) var(--shell-light-local-navigation-divider-style,solid) var(--shell-light-local-navigation-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-local-navigation-shadow,none);box-shadow:none;box-shadow:var(--shell-light-local-navigation-shadow,none);padding:8px 0;padding:var(--shell-light-local-navigation-paddingTop,8px) 0 var(--shell-light-local-navigation-paddingBottom,8px)}.next-shell-light .next-shell-aside .next-shell-localnavigation.next-shell-collapse{width:0}.next-shell-light .next-shell-aside .next-shell-ancillary{width:168px;width:var(--shell-light-ancillary-width,168px);background:#fff;background:var(--shell-light-ancillary-background,#fff);border-left:1px solid #e3e4e6;border-left:var(--shell-light-ancillary-divider-size,1px) var(--shell-light-ancillary-divider-style,solid) var(--shell-light-ancillary-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-light-ancillary-shadow,none);box-shadow:none;box-shadow:var(--shell-light-ancillary-shadow,none);padding:8px 0;padding:var(--shell-light-ancillary-paddingTop,8px) 0 var(--shell-light-ancillary-paddingBottom,8px)}.next-shell-light .next-shell-aside .next-shell-ancillary.next-shell-collapse{width:0}.next-shell-dark .next-shell-header .dock-trigger,.next-shell-dark .next-shell-header .nav-trigger{background:#000;background:var(--shell-dark-header-background,#000)}.next-shell-dark .next-shell-aside .local-nav-trigger{background:#004080;background:var(--shell-dark-local-navigation-background,#004080)}.next-shell-dark .next-shell-aside .ancillary-trigger{background:#fff;background:var(--shell-dark-ancillary-background,#fff)}.next-shell-dark .next-shell-header{color:#fff;color:var(--shell-dark-header-color,#fff);height:52px;height:var(--shell-dark-header-height,52px);background:#000;background:var(--shell-dark-header-background,#000);border-bottom:1px solid #1f1f1f;border-bottom:var(--shell-dark-header-divider-size,1px) var(--shell-dark-header-divider-style,solid) var(--shell-dark-header-divider-color,#1f1f1f);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--shell-dark-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--shell-dark-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));padding:0 16px;padding:0 var(--shell-dark-header-paddingLeft,16px)}.next-shell-dark .next-shell-header .next-shell-navigation{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:52px;height:var(--shell-dark-header-height,52px);line-height:52px;line-height:var(--shell-dark-header-height,52px);margin:0 48px;margin:0 var(--shell-dark-navigation-hoz-marginLeft,48px)}.next-shell-dark .next-shell-task-header{width:100%;min-height:40px;min-height:var(--shell-dark-multitask-min-height,40px);background:#fff;background:var(--shell-dark-multitask-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-dark-multitask-divider-size,1px) var(--shell-dark-multitask-divider-style,solid) var(--shell-dark-multitask-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-multitask-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-multitask-shadow,none);padding:0;padding:0 var(--shell-dark-multitask-paddingLeft,0);overflow:auto}.next-shell-dark .next-shell-main{background:#eff3f8;background:var(--shell-dark-content-background,#eff3f8)}.next-shell-dark .next-shell-main .next-shell-appbar{min-height:48px;min-height:var(--shell-dark-appbar-min-height,48px);background:#fff;background:var(--shell-dark-appbar-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-dark-appbar-divider-size,1px) var(--shell-dark-appbar-divider-style,solid) var(--shell-dark-appbar-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-appbar-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-appbar-shadow,none);padding:0 24px;padding:0 var(--shell-dark-appbar-paddingLeft,24px)}.next-shell-dark .next-shell-main .next-shell-content{padding:20px;padding:var(--shell-dark-content-paddingTop,20px) var(--shell-dark-content-paddingLeft,20px)}.next-shell-dark .next-shell-main .next-shell-footer{background:transparent;background:var(--shell-dark-footer-background,transparent);min-height:56px;min-height:var(--shell-dark-footer-min-height,56px);color:#c1c1c1;color:var(--shell-dark-footer-color,#c1c1c1);font-size:14px;font-size:var(--shell-dark-footer-font-size,14px)}.next-shell-dark .next-shell-aside.next-shell-navigation{width:168px;width:var(--shell-dark-navigation-ver-width,168px);background:#111;background:var(--shell-dark-navigation-ver-background,#111);border-right:1px solid #e3e4e6;border-right:var(--shell-dark-navigation-ver-divider-size,1px) var(--shell-dark-navigation-ver-divider-style,solid) var(--shell-dark-navigation-ver-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-navigation-ver-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-navigation-ver-shadow,none);padding:8px 0;padding:var(--shell-dark-navigation-ver-paddingTop,8px) 0 var(--shell-dark-navigation-ver-paddingBottom,8px)}.next-shell-dark .next-shell-aside.next-shell-navigation.next-shell-collapse.next-shell-mini{width:60px;width:var(--shell-dark-navigation-ver-width-mini,60px)}.next-shell-dark .next-shell-aside.next-shell-navigation.next-shell-collapse{width:0}.next-shell-dark .next-shell-aside.next-shell-tooldock{width:52px;width:var(--shell-dark-tooldock-width,52px);background:#004080;background:var(--shell-dark-tooldock-background,#004080);border-left:1px solid #e3e4e6;border-left:var(--shell-dark-tooldock-divider-size,1px) var(--shell-dark-tooldock-divider-style,solid) var(--shell-dark-tooldock-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-tooldock-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-tooldock-shadow,none);padding:8px 0;padding:var(--shell-dark-tooldock-paddingTop,8px) 0 var(--shell-dark-tooldock-paddingBottom,8px)}.next-shell-dark .next-shell-aside .next-shell-tooldockitem{padding:8px 0;padding:var(--shell-dark-tooldock-item-paddingTop,8px) 0;color:#555;color:var(--shell-dark-tooldock-item-color,#555);background:transparent;background:var(--shell-dark-tooldock-item-background,transparent)}.next-shell-dark .next-shell-aside .next-shell-tooldockitem:hover{color:#111;color:var(--shell-dark-tooldock-item-color-hover,#111);background:#eff3f8;background:var(--shell-dark-tooldock-item-background-hover,#eff3f8)}.next-shell-dark .next-shell-aside .next-shell-localnavigation{width:168px;width:var(--shell-dark-local-navigation-width,168px);background:#004080;background:var(--shell-dark-local-navigation-background,#004080);border-right:1px solid #e3e4e6;border-right:var(--shell-dark-local-navigation-divider-size,1px) var(--shell-dark-local-navigation-divider-style,solid) var(--shell-dark-local-navigation-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-local-navigation-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-local-navigation-shadow,none);padding:8px 0;padding:var(--shell-dark-local-navigation-paddingTop,8px) 0 var(--shell-dark-local-navigation-paddingBottom,8px)}.next-shell-dark .next-shell-aside .next-shell-localnavigation.next-shell-collapse{width:0}.next-shell-dark .next-shell-aside .next-shell-ancillary{width:168px;width:var(--shell-dark-ancillary-width,168px);background:#fff;background:var(--shell-dark-ancillary-background,#fff);border-left:1px solid #e3e4e6;border-left:var(--shell-dark-ancillary-divider-size,1px) var(--shell-dark-ancillary-divider-style,solid) var(--shell-dark-ancillary-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-dark-ancillary-shadow,none);box-shadow:none;box-shadow:var(--shell-dark-ancillary-shadow,none);padding:8px 0;padding:var(--shell-dark-ancillary-paddingTop,8px) 0 var(--shell-dark-ancillary-paddingBottom,8px)}.next-shell-dark .next-shell-aside .next-shell-ancillary.next-shell-collapse{width:0}.next-shell-brand .next-shell-header .dock-trigger,.next-shell-brand .next-shell-header .nav-trigger{background:#0064c8;background:var(--shell-brand-header-background,#0064c8)}.next-shell-brand .next-shell-aside .local-nav-trigger{background:#004080;background:var(--shell-brand-local-navigation-background,#004080)}.next-shell-brand .next-shell-aside .ancillary-trigger{background:#fff;background:var(--shell-brand-ancillary-background,#fff)}.next-shell-brand .next-shell-header{color:#fff;color:var(--shell-brand-header-color,#fff);height:52px;height:var(--shell-brand-header-height,52px);background:#0064c8;background:var(--shell-brand-header-background,#0064c8);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-brand-header-divider-size,1px) var(--shell-brand-header-divider-style,solid) var(--shell-brand-header-divider-color,#e3e4e6);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--shell-brand-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--shell-brand-header-shadow,0 2px 4px 0 rgba(0,0,0,.16));padding:0 16px;padding:0 var(--shell-brand-header-paddingLeft,16px)}.next-shell-brand .next-shell-header .next-shell-navigation{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:52px;height:var(--shell-brand-header-height,52px);line-height:52px;line-height:var(--shell-brand-header-height,52px);margin:0 48px;margin:0 var(--shell-brand-navigation-hoz-marginLeft,48px)}.next-shell-brand .next-shell-task-header{width:100%;min-height:40px;min-height:var(--shell-brand-multitask-min-height,40px);background:#fff;background:var(--shell-brand-multitask-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-brand-multitask-divider-size,1px) var(--shell-brand-multitask-divider-style,solid) var(--shell-brand-multitask-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-multitask-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-multitask-shadow,none);padding:0;padding:0 var(--shell-brand-multitask-paddingLeft,0);overflow:auto}.next-shell-brand .next-shell-main{background:#eff3f8;background:var(--shell-brand-content-background,#eff3f8)}.next-shell-brand .next-shell-main .next-shell-appbar{min-height:48px;min-height:var(--shell-brand-appbar-min-height,48px);background:#fff;background:var(--shell-brand-appbar-background,#fff);border-bottom:1px solid #e3e4e6;border-bottom:var(--shell-brand-appbar-divider-size,1px) var(--shell-brand-appbar-divider-style,solid) var(--shell-brand-appbar-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-appbar-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-appbar-shadow,none);padding:0 24px;padding:0 var(--shell-brand-appbar-paddingLeft,24px)}.next-shell-brand .next-shell-main .next-shell-content{padding:20px;padding:var(--shell-brand-content-paddingTop,20px) var(--shell-brand-content-paddingLeft,20px)}.next-shell-brand .next-shell-main .next-shell-footer{background:transparent;background:var(--shell-brand-footer-background,transparent);min-height:56px;min-height:var(--shell-brand-footer-min-height,56px);color:#c1c1c1;color:var(--shell-brand-footer-color,#c1c1c1);font-size:14px;font-size:var(--shell-brand-footer-font-size,14px)}.next-shell-brand .next-shell-aside.next-shell-navigation{width:168px;width:var(--shell-brand-navigation-ver-width,168px);background:#fff;background:var(--shell-brand-navigation-ver-background,#fff);border-right:1px solid #e3e4e6;border-right:var(--shell-brand-navigation-ver-divider-size,1px) var(--shell-brand-navigation-ver-divider-style,solid) var(--shell-brand-navigation-ver-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-navigation-ver-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-navigation-ver-shadow,none);padding:8px 0;padding:var(--shell-brand-navigation-ver-paddingTop,8px) 0 var(--shell-brand-navigation-ver-paddingBottom,8px)}.next-shell-brand .next-shell-aside.next-shell-navigation.next-shell-collapse.next-shell-mini{width:60px;width:var(--shell-brand-navigation-ver-width-mini,60px)}.next-shell-brand .next-shell-aside.next-shell-navigation.next-shell-collapse{width:0}.next-shell-brand .next-shell-aside.next-shell-tooldock{width:52px;width:var(--shell-brand-tooldock-width,52px);background:#004080;background:var(--shell-brand-tooldock-background,#004080);border-left:1px solid #e3e4e6;border-left:var(--shell-brand-tooldock-divider-size,1px) var(--shell-brand-tooldock-divider-style,solid) var(--shell-brand-tooldock-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-tooldock-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-tooldock-shadow,none);padding:8px 0;padding:var(--shell-brand-tooldock-paddingTop,8px) 0 var(--shell-brand-tooldock-paddingBottom,8px)}.next-shell-brand .next-shell-aside .next-shell-tooldockitem{padding:8px 0;padding:var(--shell-brand-tooldock-item-paddingTop,8px) 0;color:#555;color:var(--shell-brand-tooldock-item-color,#555);background:transparent;background:var(--shell-brand-tooldock-item-background,transparent)}.next-shell-brand .next-shell-aside .next-shell-tooldockitem:hover{color:#111;color:var(--shell-brand-tooldock-item-color-hover,#111);background:#eff3f8;background:var(--shell-brand-tooldock-item-background-hover,#eff3f8)}.next-shell-brand .next-shell-aside .next-shell-localnavigation{width:168px;width:var(--shell-brand-local-navigation-width,168px);background:#004080;background:var(--shell-brand-local-navigation-background,#004080);border-right:1px solid #e3e4e6;border-right:var(--shell-brand-local-navigation-divider-size,1px) var(--shell-brand-local-navigation-divider-style,solid) var(--shell-brand-local-navigation-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-local-navigation-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-local-navigation-shadow,none);padding:8px 0;padding:var(--shell-brand-local-navigation-paddingTop,8px) 0 var(--shell-brand-local-navigation-paddingBottom,8px)}.next-shell-brand .next-shell-aside .next-shell-localnavigation.next-shell-collapse{width:0}.next-shell-brand .next-shell-aside .next-shell-ancillary{width:168px;width:var(--shell-brand-ancillary-width,168px);background:#fff;background:var(--shell-brand-ancillary-background,#fff);border-left:1px solid #e3e4e6;border-left:var(--shell-brand-ancillary-divider-size,1px) var(--shell-brand-ancillary-divider-style,solid) var(--shell-brand-ancillary-divider-color,#e3e4e6);-webkit-box-shadow:none;-webkit-box-shadow:var(--shell-brand-ancillary-shadow,none);box-shadow:none;box-shadow:var(--shell-brand-ancillary-shadow,none);padding:8px 0;padding:var(--shell-brand-ancillary-paddingTop,8px) 0 var(--shell-brand-ancillary-paddingBottom,8px)}.next-shell-brand .next-shell-aside .next-shell-ancillary.next-shell-collapse{width:0}.next-shell-header .next-shell-navigation.next-shell-nav-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.next-shell-header .next-shell-navigation.next-shell-nav-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.next-shell-header .next-shell-navigation.next-shell-nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-shell.next-shell-phone .next-aside-navigation{width:100%}.next-shell.next-shell-phone .next-aside-navigation.next-shell-collapse{width:0}.next-shell.next-shell-phone .next-shell-header .next-shell-navigation{display:none}.next-shell.next-shell-phone .next-shell-navigation{width:100%;height:100%;-webkit-transition:height .2s ease;transition:height .2s ease}.next-shell.next-shell-phone .next-shell-navigation.next-shell-collapse{padding:0;height:0;-webkit-transition:height .2s ease;transition:height .2s ease}.next-shell.next-shell-phone .next-shell-tooldock{height:52px;height:var(--shell-dark-tooldock-height,52px);left:0;right:0;position:absolute;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.next-shell.next-shell-phone .next-shell-tooldock.next-shell-collapse{display:none;height:0;padding:0;-webkit-transition:all .2s ease;transition:all .2s ease}.next-shell.next-shell-phone .next-shell-aside.next-aside-ancillary,.next-shell.next-shell-tablet .next-shell-aside.next-aside-ancillary{width:0}.next-shell.next-shell-phone .next-shell-ancillary,.next-shell.next-shell-tablet .next-shell-ancillary{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.next-shell.next-shell-phone .next-shell-aside.next-aside-localnavigation,.next-shell.next-shell-tablet .next-shell-aside.next-aside-localnavigation{width:0}.next-notification{width:384px;position:fixed;z-index:1010;padding:0;margin:0}.next-notification .next-message{margin-bottom:16px;overflow:hidden}.next-notification-fade-leave{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease;animation-timing-function:ease}.next-notification-fade-leave.next-notification-fade-leave-active{-webkit-animation-name:NotificationFadeOut;animation-name:NotificationFadeOut;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes NotificationFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}@keyframes NotificationFadeOut{0%{max-height:150px;margin-bottom:16px;opacity:1}to{max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;opacity:0}}.next-typography{color:#333;color:var(--typography-text-color,#333)}.next-typography-title{font-weight:600;font-weight:var(--typography-title-font-weight,600);margin-bottom:.5em}.next-typography+.next-typography-title{margin-top:1.2em}.next-typography-paragraph{color:#333;color:var(--typography-text-color,#333);margin-bottom:1em;font-size:12px;font-size:var(--typography-paragraph-font-size,12px);line-height:1.5;line-height:var(--typography-paragraph-line-height,1.5)}.next-typography mark{padding:0;background:#fac800;background:var(--typography-text-mark-background,#fac800);color:#333;color:var(--typography-text-mark-color,#333)}.next-typography strong{font-weight:600;font-weight:var(--typography-text-strong-font-weight,600)}.next-typography code{background-color:#eff3f8;background-color:var(--typography-text-code-background,#eff3f8);color:#333;color:var(--typography-text-code-color,#333);border:1px solid #c0c6cc;border:1px solid var(--typography-text-code-border-color,#c0c6cc);margin:0 .2em;padding:.2em .4em .1em;font-size:85%;border-radius:2px;border-radius:var(--typography-text-code-corner,2px)}.next-typography ol,.next-typography ul{margin:0 0 1em;padding:0}.next-typography li{list-style-type:circle;margin:0 0 0 20px;padding:0 0 0 4px}.next-typography a{text-decoration:none}.next-typography a:link{color:#0064c8;color:var(--color-link-1,#0064c8)}.next-typography a:visited{color:#0064c8;color:var(--color-link-2,#0064c8)}.next-typography a:active,.next-typography a:hover{color:#0064c8;color:var(--color-link-3,#0064c8)}.next-typography a:active{text-decoration:underline}h1.next-typography-title{font-size:48px;font-size:var(--typography-title-h1-font-size,48px)}h2.next-typography-title{font-size:36px;font-size:var(--typography-title-h2-font-size,36px)}h3.next-typography-title{font-size:24px;font-size:var(--typography-title-h3-font-size,24px)}h4.next-typography-title{font-size:20px;font-size:var(--typography-title-h4-font-size,20px)}h5.next-typography-title{font-size:16px;font-size:var(--typography-title-h5-font-size,16px)}h6.next-typography-title{font-size:14px;font-size:var(--typography-title-h6-font-size,14px)}.next-divider{margin:0;padding:0;font-size:14px;line-height:1.5;list-style:none;font-variant:tabular-nums;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";background:#e3e4e6;background:var(--divider-hoz-color,#e3e4e6);border-collapse:separate}.next-divider,.next-divider *,.next-divider :after,.next-divider :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-divider-hoz{display:block;clear:both;width:100%;min-width:100%;height:1px;height:var(--divider-hoz-size,1px);margin:16px 0;margin:var(--divider-hoz-marginTop,16px) 0}.next-divider-ver{position:relative;top:-.06em;display:inline-block;width:1px;width:var(--divider-ver-size,1px);background:#c0c6cc;background:var(--divider-ver-color,#c0c6cc);height:.9em;margin:0 8px;margin:0 var(--divider-ver-marginLeft,8px);vertical-align:middle}.next-divider-hoz.next-divider-with-text-center,.next-divider-hoz.next-divider-with-text-left,.next-divider-hoz.next-divider-with-text-right{display:table;margin:16px 0;margin:var(--divider-hoz-text-marginTop,16px) 0;color:#666;color:var(--divider-hoz-text-color,#666);font-weight:400;font-weight:var(--divider-hoz-text-weight,normal);font-size:14px;font-size:var(--divider-hoz-text-size,14px);white-space:nowrap;text-align:center;background:transparent}.next-divider-hoz.next-divider-with-text-center:after,.next-divider-hoz.next-divider-with-text-center:before,.next-divider-hoz.next-divider-with-text-left:after,.next-divider-hoz.next-divider-with-text-left:before,.next-divider-hoz.next-divider-with-text-right:after,.next-divider-hoz.next-divider-with-text-right:before{top:50%;display:table-cell;width:50%;border-top:1px solid #e3e4e6;border-top:var(--divider-hoz-size,1px) solid var(--divider-hoz-color,#e3e4e6);-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);content:""}.next-divider-hoz.next-divider-with-text-center.next-divider-dashed,.next-divider-hoz.next-divider-with-text-left.next-divider-dashed,.next-divider-hoz.next-divider-with-text-right.next-divider-dashed{border-top:0}.next-divider-hoz.next-divider-with-text-center.next-divider-dashed:after,.next-divider-hoz.next-divider-with-text-center.next-divider-dashed:before,.next-divider-hoz.next-divider-with-text-left.next-divider-dashed:after,.next-divider-hoz.next-divider-with-text-left.next-divider-dashed:before,.next-divider-hoz.next-divider-with-text-right.next-divider-dashed:after,.next-divider-hoz.next-divider-with-text-right.next-divider-dashed:before{border-style:dashed none none}.next-divider-hoz.next-divider-with-text-left .next-divider-inner-text,.next-divider-hoz.next-divider-with-text-right .next-divider-inner-text{display:inline-block;padding:0 16px;padding:0 var(--divider-hoz-text-left-paddingLeft,16px)}.next-divider-hoz.next-divider-with-text-left:before{top:50%;width:5%}.next-divider-hoz.next-divider-with-text-left:after,.next-divider-hoz.next-divider-with-text-right:before{top:50%;width:95%}.next-divider-hoz.next-divider-with-text-right:after{top:50%;width:5%}.next-divider-inner-text{display:inline-block;padding:0 16px;padding:0 var(--divider-hoz-text-center-paddingLeft,16px)}.next-divider-dashed{background:none;border:0 dashed #e3e4e6;border-color:var(--divider-hoz-color,#e3e4e6);border-top:var(--divider-hoz-size,1px) dashed var(--divider-hoz-color,#e3e4e6)}.next-divider-dashed.next-divider-ver{border-width:0 0 0 1px;border-left-width:var(--divider-ver-size,1px);border-bottom-width:0;border-right-width:0;border-top-width:0}.next-box{display:-webkit-box;display:-ms-flexbox;display:flex}.next-box,.next-box *,.next-box :after,.next-box :before,.next-table{-webkit-box-sizing:border-box;box-sizing:border-box}.next-table{position:relative;border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0);border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0);border-top:1px solid #e3e4e6;border-top:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-left:1px solid #e3e4e6;border-left:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table *,.next-table :after,.next-table :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-table .next-table-header tr:first-child th:first-child{border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0)}.next-table .next-table-header tr:first-child th:last-child{border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0)}.next-table .next-table-header tr:last-child th:first-child{border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0)}.next-table .next-table-header tr:last-child th:last-child{border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0)}.next-table.next-table-layout-fixed{overflow:auto}.next-table.next-table-layout-fixed table{table-layout:fixed}.next-table.next-table-layout-auto table{table-layout:auto}.next-table.next-table-small th .next-table-cell-wrapper{padding:8px;padding:var(--table-size-s-header-padding-top,8px) var(--table-size-s-header-padding-left,8px)}.next-table.next-table-small td .next-table-cell-wrapper{padding:8px;padding:var(--table-size-s-cell-padding-top,8px) var(--table-size-s-cell-padding-left,8px)}.next-table.next-table-small .next-table-prerow .next-table-cell-wrapper{padding:8px}.next-table table{border-collapse:separate;border-spacing:0;width:100%;background:#fff;background:var(--table-row-bg,#fff);border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0);border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0)}.next-table table tr:first-child td{border-top-width:0}.next-table th{padding:0;background:#eff3f8;background:var(--table-th-bg,#eff3f8);color:#333;color:var(--table-th-color,#333);text-align:left;font-weight:400;font-weight:var(--table-th-font-weight,normal);border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table th .next-table-cell-wrapper{padding:8px 16px;padding:var(--table-header-padding-top,8px) var(--table-header-padding-left,16px);overflow:hidden;text-overflow:ellipsis;word-break:break-all}.next-table th.next-table-prerow .next-table-cell-wrapper{padding:12px 16px}.next-table th.next-table-word-break-word .next-table-cell-wrapper{word-break:break-word}.next-table th.next-table-fix-left,.next-table th.next-table-fix-right{z-index:1}.next-table-affix{z-index:1;overflow:hidden}.next-table-stickylock .next-table-affix{z-index:9}.next-table-header-resizable{position:relative}.next-table-header-resizable .next-table-resize-handler{position:absolute;right:-5px;top:0;bottom:0;width:10px;background:transparent;cursor:ew-resize}.next-table-header-resizable .next-table-resize-handler:after{position:absolute;display:block;content:" ";width:2px;width:var(--line-2,2px);height:100%;right:50%}.next-table-header-resizable .next-table-resize-handler:hover:after{z-index:1;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-table.next-table-lock-left .next-table-header-resizable .next-table-resize-handler,.next-table.next-table-lock-right .next-table-header-resizable .next-table-resize-handler{cursor:auto}.next-table.next-table-lock-left .next-table-header-resizable .next-table-resize-handler:hover:after,.next-table.next-table-lock-right .next-table-header-resizable .next-table-resize-handler:hover:after{z-index:-1}.next-table td{padding:0;border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table td .next-table-cell-wrapper{padding:8px 16px;padding:var(--table-cell-padding-top,8px) var(--table-cell-padding-left,16px);overflow:hidden;text-overflow:ellipsis;word-break:break-all}.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow,.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow,.next-table td .next-table-cell-wrapper .next-table-tree-placeholder{margin-right:8px;outline:0;cursor:pointer}.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow .next-icon-remote,.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow:before{width:16px;font-size:16px;line-height:inherit}.next-table td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow:before{content:"\e61a";content:var(--table-tree-fold-icon-content,"")}.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow .next-icon-remote,.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow:before{width:16px;font-size:16px;line-height:inherit}.next-table td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow:before{content:"\e618";content:var(--table-tree-unfold-icon-content,"")}.next-table td.next-table-prerow .next-table-cell-wrapper{padding:12px 16px}.next-table td.next-table-word-break-word .next-table-cell-wrapper{word-break:break-word}.next-table .next-table-expanded .next-table-cell-wrapper,.next-table .next-table-selection .next-table-cell-wrapper{overflow:visible}.next-table.no-header table tr:first-child td{border-top-width:1px}.next-table.only-bottom-border{border-width:0}.next-table.only-bottom-border td,.next-table.only-bottom-border th{border-width:0 0 1px;border-bottom-width:var(--table-normal-border-width,1px);border-right-width:0;border-top-width:0}.next-table.only-bottom-border table tr td:first-child,.next-table.only-bottom-border table tr th:first-child{border-left-width:0}.next-table.only-bottom-border .next-table-body tr td:last-child,.next-table.only-bottom-border .next-table-header tr th:last-child{border-right-width:0}.next-table-loading{display:block}.next-table.zebra tr:nth-child(odd) td{background:#fff;background:var(--table-td-normal,#fff)}.next-table.zebra tr:nth-child(2n) td{background:#f8f8f9;background:var(--table-td-gray,#f8f8f9)}.next-table.zebra .next-table-cell.hovered,.next-table.zebra .next-table-row.hovered td{background:#f7f9fa;background:var(--table-row-hover-bg,#f7f9fa);color:#333;color:var(--table-row-hover-color,#333)}.next-table.zebra .next-table-row.selected td{background:#eff3f8;background:var(--table-row-selected-bg,#eff3f8);color:#333;color:var(--table-row-selected-color,#333)}.next-table-empty{color:#b3b3b3;color:var(--table-empty-color,#b3b3b3);padding:32px 0;padding:var(--table-empty-padding,32px) 0;text-align:center}.next-table-expanded-row>td{border-width:0 0 1px;border-bottom-width:var(--table-normal-border-width,1px);border-right-width:0;border-top-width:0}.next-table-expanded-row>td:first-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px)}.next-table-expanded-row>td:last-child{border-right-width:1px;border-right-width:var(--table-normal-border-width,1px)}.next-table-expanded-row:last-child>td{border-bottom-width:1px;border-bottom-width:var(--table-normal-border-width,1px)}.next-table-expanded-row .next-table{border-top:0;border-left:0}.next-table-expanded-row .next-table td,.next-table-expanded-row .next-table th{border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table-expanded-row .next-table.only-bottom-border td,.next-table-expanded-row .next-table.only-bottom-border th{border-right:0}.next-table-expanded-row .next-table .last td{border-bottom:0}.next-table-expanded-row .next-table td.last,.next-table-expanded-row .next-table th:last-child{border-right:0}.next-table-filter-footer{margin:10px 10px 0}.next-table-filter-footer button{margin-right:5px}.next-table-row{-webkit-transition:all .1s linear;transition:all .1s linear;background:#fff;background:var(--table-row-bg,#fff);color:#333;color:var(--table-row-color,#333)}.next-table-row.hidden{display:none}.next-table-row.hovered{background:#f7f9fa;background:var(--table-row-hover-bg,#f7f9fa);color:#333;color:var(--table-row-hover-color,#333)}.next-table-row.selected{background:#eff3f8;background:var(--table-row-selected-bg,#eff3f8);color:#333;color:var(--table-row-selected-color,#333)}.next-table-cell.hovered{background:#f7f9fa;background:var(--table-row-hover-bg,#f7f9fa);color:#333;color:var(--table-row-hover-color,#333)}.next-table-tree-placeholder{display:inline-block;width:12px}.last .next-table-expanded-row td{border-bottom-width:1px}.next-table-body,.next-table-header{overflow:auto;font-size:12px;font-size:var(--table-th-font-size,12px)}.next-table-column-resize-proxy{position:absolute;top:0;bottom:0;width:0;border-left:2px solid #0064c8;border-left:var(--line-2,2px) solid var(--color-brand1-6,#0064c8);z-index:10;display:none}.next-table-header{margin-bottom:-20px;padding-bottom:20px;border-top-left-radius:0;border-top-left-radius:var(--table-header-corner-top,0);border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-header-corner-bottom,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0);overflow:-moz-scrollbars-none;-ms-overflow-style:none;scrollbar-width:none}.next-table-header::-webkit-scrollbar{display:none}.next-table-body{font-size:12px;font-size:var(--table-body-font-size,12px);position:relative}.next-table-fixed{border-right:1px solid #e3e4e6;border-right:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-bottom:1px solid #e3e4e6;border-bottom:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table-fixed table{table-layout:fixed}.next-table-fixed .next-table-header{background:#eff3f8;background:var(--table-th-bg,#eff3f8)}.next-table-fixed table tr td:first-child,.next-table-fixed table tr th:first-child{border-left-width:0}.next-table-fixed .next-table-header th{border-top-width:0}.next-table-fixed .next-table-header tr th:last-child{border-right-width:0}.next-table-fixed .next-table-body td{border-top-width:0}.next-table-fixed .next-table-body tr:last-child td{border-bottom-width:0}.next-table-fixed .next-table-body tr td:last-child{border-right-width:0}.next-table-fixed.next-table-group table tr td:first-child,.next-table-fixed.next-table-group table tr th:first-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-header th{border-top-width:1px;border-top-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-header tr th:last-child{border-right-width:1px;border-right-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-body td{border-top-width:1px;border-top-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-body tr:last-child td{border-bottom-width:1px;border-bottom-width:var(--table-normal-border-width,1px)}.next-table-fixed.next-table-group .next-table-body tr td:last-child,.next-table-fixed.next-table-lock-left .next-table-body tr td:last-child,.next-table-fixed.next-table-lock-left .next-table-header tr th:last-child{border-right-width:1px;border-right-width:var(--table-normal-border-width,1px)}.next-table-lock .next-table-body{overflow-x:auto;overflow-y:visible}.next-table-group{border-width:0}.next-table-group.only-bottom-border .next-table-body table,.next-table-group.only-bottom-border .next-table-header table{border-left:0}.next-table-group.only-bottom-border .next-table-body table,.next-table-group.only-bottom-border .next-table-body table.next-table-row,.next-table-group.only-bottom-border .next-table-header table{border-top:0}.next-table-group.only-bottom-border .next-table-body .next-table-group-footer td,.next-table-group.only-bottom-border .next-table-body table>tbody>tr:nth-last-child(2) td{border-bottom:0}.next-table-group .next-table-body{margin-top:8px;margin-top:var(--table-group-split,8px)}.next-table-group .next-table-body table{border-top:1px solid #e3e4e6;border-top:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-left:1px solid #e3e4e6;border-left:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);margin-bottom:8px;margin-bottom:var(--table-group-split,8px)}.next-table-group .next-table-body table tr:first-child td{border-top-width:1px}.next-table-group .next-table-body table:last-of-type{margin-bottom:0}.next-table-group .next-table-header table{border-top:1px solid #e3e4e6;border-top:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6);border-left:1px solid #e3e4e6;border-left:var(--table-normal-border-width,1px) var(--table-normal-border-style,solid) var(--table-normal-border-color,#e3e4e6)}.next-table-group .next-table-group-header td{background:#f7f9fa;background:var(--table-group-th-bg,#f7f9fa);color:#111;color:var(--table-group-th-color,#111)}.next-table-group .next-table-group-header td:first-child{border-top-left-radius:0;border-top-left-radius:var(--table-group-header-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-group-header-corner-bottom,0)}.next-table-group .next-table-group-header td:last-child{border-top-right-radius:0;border-top-right-radius:var(--table-group-header-corner-top,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-group-header-corner-bottom,0)}.next-table-group .next-table-group-footer td{background:#f7f9fa;background:var(--table-group-footer-bg,#f7f9fa);color:#111;color:var(--table-group-footer-color,#111)}.next-table-group .next-table-group-footer td:first-child{border-top-left-radius:0;border-top-left-radius:var(--table-group-footer-corner-top,0);border-bottom-left-radius:0;border-bottom-left-radius:var(--table-group-footer-corner-bottom,0)}.next-table-group .next-table-group-footer td:last-child{border-top-right-radius:0;border-top-right-radius:var(--table-group-footer-corner-top,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-group-footer-corner-bottom,0)}.next-table-group .next-table-row.hovered,.next-table-group .next-table-row.selected{background:#fff;background:var(--table-row-bg,#fff);color:#333;color:var(--table-row-color,#333)}.next-table-lock{position:relative}.next-table-lock table{table-layout:fixed}.next-table-header-inner{overflow:unset}.next-table-header-fixer{content:" ";border-top-right-radius:0;border-top-right-radius:var(--table-header-corner-top,0);border-bottom-right-radius:0;border-bottom-right-radius:var(--table-header-corner-bottom,0);width:15px;background:#eff3f8;background:var(--table-th-bg,#eff3f8);position:absolute;right:0;height:100%;top:0}.next-table-wrap-empty .next-table-lock-left td,.next-table-wrap-empty .next-table-lock-right td{border:none}.next-table-wrap-empty .next-table-lock-left .next-table-empty,.next-table-wrap-empty .next-table-lock-right .next-table-empty{display:none}.next-table-wrap-empty>.next-table-inner>.next-table-body>table{table-layout:fixed}.next-table-lock-left,.next-table-lock-right{position:absolute;left:0;top:0;z-index:1;border:0;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease;overflow:hidden}.next-table-lock-left table,.next-table-lock-right table{width:auto}.next-table-lock-left .next-table-body,.next-table-lock-right .next-table-body{overflow-y:scroll;overflow-x:hidden;margin-right:-20px;padding-right:0}.next-table-lock-left.shadow .next-table-body tr td:last-child,.next-table-lock-left.shadow .next-table-header tr th:last-child,.next-table-lock-right.shadow .next-table-body tr td:last-child,.next-table-lock-right.shadow .next-table-header tr th:last-child{border-right-width:0}.next-table-lock-right{right:0;left:auto}.next-table-lock-right table tr td:first-child,.next-table-lock-right table tr th:first-child{border-left-width:1px}.next-table-lock-right.shadow{-webkit-box-shadow:-2px 0 3px rgba(0,0,0,.12);box-shadow:-2px 0 3px rgba(0,0,0,.12)}.next-table-lock-left.shadow{-webkit-box-shadow:2px 0 3px rgba(0,0,0,.12);box-shadow:2px 0 3px rgba(0,0,0,.12)}.next-table-filter{line-height:1}.next-table-sort{cursor:pointer;position:relative;width:16px;display:inline-block;line-height:1}.next-table-sort:focus{outline:0}.next-table-sort>a:before{content:" ";display:inline-block;vertical-align:middle}.next-table-sort .next-icon{position:absolute;left:-2px;color:#111;color:var(--table-sort-color,#111)}.next-table-sort .next-icon .next-icon-remote,.next-table-sort .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-table-sort .current .next-icon{color:#0064c8;color:var(--table-sort-color-current,#0064c8)}.next-table-sort .next-icon-ascending{left:2px}.next-table-filter{cursor:pointer;width:20px;display:inline-block}.next-table-filter:focus{outline:0}.next-table-filter .next-icon{color:#111;color:var(--table-sort-color,#111)}.next-table-filter .next-icon .next-icon-remote,.next-table-filter .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-table-filter .next-table-filter-active{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-table-filter-menu .next-menu-content{max-height:220px;overflow:auto}.next-table-header-icon{margin-left:8px}.next-table-expanded-ctrl{cursor:pointer}.next-table-expanded-ctrl:focus{outline:0}.next-table-expanded-ctrl.disabled{color:#888;color:var(--table-expanded-ctrl-disabled-color,#888)}.next-table-expanded-ctrl .next-table-expand-unfold .next-icon-remote,.next-table-expanded-ctrl .next-table-expand-unfold:before{width:16px;font-size:16px;line-height:inherit}.next-table-expanded-ctrl .next-table-expand-unfold:before{content:"\e61b";content:var(--table-expand-unfold-icon-content,"")}.next-table-expanded-ctrl .next-table-expand-fold .next-icon-remote,.next-table-expanded-ctrl .next-table-expand-fold:before{width:16px;font-size:16px;line-height:inherit}.next-table-expanded-ctrl .next-table-expand-fold:before{content:"\e620";content:var(--table-expand-fold-icon-content,"")}.next-table-fix-left,.next-table-fix-right{background:inherit;position:sticky;z-index:1}.next-table-ping-left .next-table-expanded-area .next-table-fix-left-last:after{content:none}.next-table-ping-left .next-table-expanded-area .next-table-ping-left .next-table-fix-left-last,.next-table-ping-left .next-table-fix-left-last{border-right-width:0}.next-table-ping-left .next-table-expanded-area .next-table-ping-left .next-table-fix-left-last:after,.next-table-ping-left .next-table-fix-left-last:after{-webkit-box-shadow:inset 10px 0 8px -8px rgba(0,0,0,.15);box-shadow:inset 10px 0 8px -8px rgba(0,0,0,.15);position:absolute;top:0;right:0;bottom:0;width:30px;content:"";pointer-events:none;transition:box-shadow .3s,-webkit-box-shadow .3s;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.next-table-ping-right .next-table-expanded-area .next-table-fix-right-first:after{content:none}.next-table-ping-right .next-table-expanded-area .next-table-ping-right .next-table-fix-right-first:after,.next-table-ping-right .next-table-fix-right-first:after{left:0}.next-table-fixed.next-table-scrolling-to-right:after,.next-table-lock.next-table-scrolling-to-right:after,.next-table-ping-right .next-table-expanded-area .next-table-ping-right .next-table-fix-right-first:after,.next-table-ping-right .next-table-fix-right-first:after{-webkit-box-shadow:inset -10px 0 8px -8px rgba(0,0,0,.15);box-shadow:inset -10px 0 8px -8px rgba(0,0,0,.15);position:absolute;top:0;bottom:0;width:30px;content:"";pointer-events:none;transition:box-shadow .3s,-webkit-box-shadow .3s;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.next-table-fixed.next-table-scrolling-to-right:after,.next-table-lock.next-table-scrolling-to-right:after{right:-30px}.next-table-fixed.only-bottom-border,.next-table-lock.only-bottom-border{border-right:0}.next-table[dir=rtl] th{text-align:right}.next-table[dir=rtl] .next-table-header-resizable .next-table-resize-handler{right:auto;left:0}.next-table[dir=rtl] td .next-table-cell-wrapper .next-icon-arrow-down.next-table-tree-arrow,.next-table[dir=rtl] td .next-table-cell-wrapper .next-icon-arrow-right.next-table-tree-arrow,.next-table[dir=rtl] td .next-table-cell-wrapper .next-table-tree-placeholder{margin-left:3px;margin-right:0;float:right}.next-table[dir=rtl] .next-table-expanded-row td:first-child{border-left-width:0;border-right-width:1px}.next-table[dir=rtl] .next-table-expanded-row td:last-child{border-left-width:1px;border-right-width:0}.next-table[dir=rtl].only-bottom-border .next-table-expanded-row td,.next-table[dir=rtl].only-bottom-border .next-table-expanded-row th{border-width:0 0 1px;border-bottom-width:var(--table-normal-border-width,1px);border-right-width:0;border-top-width:0}.next-table[dir=rtl] .next-table-filter-footer button{margin-left:5px;margin-right:0}.next-table[dir=rtl] .next-table-lock-left,.next-table[dir=rtl] .next-table-lock-right{left:auto;right:0}.next-table[dir=rtl] .next-table-lock-right{right:auto;left:0}.next-table[dir=rtl] .next-table-lock-right table tr td:first-child,.next-table[dir=rtl] .next-table-lock-right table tr th:first-child{border-right-width:1px}.next-table[dir=rtl] .next-table-lock-right.shadow{-webkit-box-shadow:2px 0 3px rgba(0,0,0,.12);box-shadow:2px 0 3px rgba(0,0,0,.12)}.next-table[dir=rtl] .next-table-lock-left.shadow{-webkit-box-shadow:-2px 0 3px rgba(0,0,0,.12);box-shadow:-2px 0 3px rgba(0,0,0,.12)}.next-table[dir=rtl] .next-table-sort .next-icon{right:0;left:auto}.next-table[dir=rtl] .next-table-sort .next-icon-ascending{right:4px;left:auto}.next-table[dir=rtl] .next-table-filter{margin-right:5px;margin-left:0}.next-table-fixed[dir=rtl] table tr td:first-child,.next-table-fixed[dir=rtl] table tr th:first-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px);border-right-width:0}.next-table-fixed[dir=rtl] .next-table-body tr td:last-child,.next-table-fixed[dir=rtl] .next-table-header tr th:last-child{border-left-width:1px;border-left-width:var(--table-normal-border-width,1px)}.next-calendar2,.next-calendar2 *,.next-calendar2 :after,.next-calendar2 :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-calendar2 table{border-collapse:collapse;border-spacing:0}.next-calendar2 td,.next-calendar2 th{padding:0}div[dir=rtl].next-calendar2-card .next-calendar2-header-actions,div[dir=rtl].next-calendar2-fullscreen .next-calendar2-header-actions,div[dir=rtl].next-calendar2-panel .next-calendar2-header-actions{margin-right:auto;margin-left:0}div[dir=rtl].next-calendar2-card .next-calendar2-header-actions>:not(:first-child),div[dir=rtl].next-calendar2-card .next-calendar2-header-ranges>:not(:first-child),div[dir=rtl].next-calendar2-fullscreen .next-calendar2-header-actions>:not(:first-child),div[dir=rtl].next-calendar2-fullscreen .next-calendar2-header-ranges>:not(:first-child),div[dir=rtl].next-calendar2-panel .next-calendar2-header-actions>:not(:first-child),div[dir=rtl].next-calendar2-panel .next-calendar2-header-ranges>:not(:first-child){margin-right:8px;margin-left:0}div[dir=rtl].next-calendar2-fullscreen .next-calendar2-cell-value,div[dir=rtl].next-calendar2-fullscreen .next-calendar2-table th{text-align:left}div[dir=rtl].next-calendar2-fullscreen .next-calendar2-table th{padding:0 0 5px 12px}.next-calendar2{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#fff}.next-calendar2-header{display:-webkit-box;display:-ms-flexbox;display:flex}.next-calendar2-table{width:100%;table-layout:fixed}.next-calendar2-cell{cursor:pointer;position:relative;-webkit-transition:background-color .2s,border .2s;transition:background-color .2s,border .2s}.next-calendar2 .next-calendar2-cell-inner{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);outline:none;min-width:24px;position:relative;border:1px solid transparent}.next-calendar2-cell-disabled:before{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-calendar2-card .next-calendar2-header-actions,.next-calendar2-fullscreen .next-calendar2-header-actions,.next-calendar2-panel .next-calendar2-header-actions{margin-left:auto}.next-calendar2-card .next-calendar2-header-actions>:not(:first-child),.next-calendar2-card .next-calendar2-header-ranges>:not(:first-child),.next-calendar2-fullscreen .next-calendar2-header-actions>:not(:first-child),.next-calendar2-fullscreen .next-calendar2-header-ranges>:not(:first-child),.next-calendar2-panel .next-calendar2-header-actions>:not(:first-child),.next-calendar2-panel .next-calendar2-header-ranges>:not(:first-child){margin-left:8px}.next-calendar2-card .next-calendar2-header-select-month,.next-calendar2-card .next-calendar2-header-select-year,.next-calendar2-fullscreen .next-calendar2-header-select-month,.next-calendar2-fullscreen .next-calendar2-header-select-year,.next-calendar2-panel .next-calendar2-header-select-month,.next-calendar2-panel .next-calendar2-header-select-year{min-width:88px}.next-calendar2-card .next-calendar2-header-select-month .next-input,.next-calendar2-card .next-calendar2-header-select-year .next-input,.next-calendar2-fullscreen .next-calendar2-header-select-month .next-input,.next-calendar2-fullscreen .next-calendar2-header-select-year .next-input,.next-calendar2-panel .next-calendar2-header-select-month .next-input,.next-calendar2-panel .next-calendar2-header-select-year .next-input{min-width:auto}.next-calendar2-card .next-calendar2-body,.next-calendar2-fullscreen .next-calendar2-body,.next-calendar2-panel .next-calendar2-body{padding:8px 0}.next-calendar2-card .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-inner{z-index:2;height:24px;line-height:22px;border-radius:2px;display:inline-block}.next-calendar2-card .next-calendar2,.next-calendar2-panel .next-calendar2{min-height:150px}.next-calendar2-card .next-calendar2-table thead>tr,.next-calendar2-panel .next-calendar2-table thead>tr{height:24px;color:#888;color:var(--color-text1-2,#888)}.next-calendar2-card .next-calendar2-table td,.next-calendar2-card .next-calendar2-table th,.next-calendar2-panel .next-calendar2-table td,.next-calendar2-panel .next-calendar2-table th{font-weight:400;text-align:center;padding:4px 0}.next-calendar2-card .next-calendar2-table th,.next-calendar2-panel .next-calendar2-table th{height:32px}.next-calendar2-card .next-calendar2-table-decade,.next-calendar2-card .next-calendar2-table-month,.next-calendar2-card .next-calendar2-table-year,.next-calendar2-panel .next-calendar2-table-decade,.next-calendar2-panel .next-calendar2-table-month,.next-calendar2-panel .next-calendar2-table-year{height:145px}.next-calendar2-card .next-calendar2-table-decade .next-calendar2-cell-inner,.next-calendar2-card .next-calendar2-table-month .next-calendar2-cell-inner,.next-calendar2-card .next-calendar2-table-year .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-decade .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-month .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-year .next-calendar2-cell-inner{min-width:56px}.next-calendar2-card .next-calendar2-table-quarter,.next-calendar2-panel .next-calendar2-table-quarter{height:50px}.next-calendar2-card .next-calendar2-table-quarter .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-quarter .next-calendar2-cell-inner{min-width:56px}.next-calendar2-card .next-calendar2-table-decade .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-table-decade .next-calendar2-cell-inner{min-width:80px}.next-calendar2-card .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today) .next-calendar2-cell-inner{color:#555;color:var(--color-text1-3,#555)}.next-calendar2-card .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today):hover:not(.next-calendar2-cell-hover) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today):hover:not(.next-calendar2-cell-hover) .next-calendar2-cell-inner{background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-calendar2-card .next-calendar2-cell-current.next-calendar2-cell-today:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current.next-calendar2-cell-today:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-calendar2-card .next-calendar2-cell-current.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner,.next-calendar2-panel .next-calendar2-cell-current.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner{color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-calendar2-fullscreen .next-calendar2-cell-value,.next-calendar2-fullscreen .next-calendar2-table th{text-align:right}.next-calendar2-fullscreen .next-calendar2-table th{padding:0 12px 5px 0}.next-calendar2-fullscreen .next-calendar2-cell-inner{margin:0 4px;padding:4px 8px 0}.next-calendar2-fullscreen .next-calendar2-cell-inner,.next-calendar2-fullscreen td .next-calendar2-cell-inner{height:80px;border-top:2px solid #e3e4e6;border-top:2px solid var(--color-line1-1,#e3e4e6)}.next-calendar2-fullscreen .next-calendar2-cell-disabled .next-calendar2-cell-inner{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-calendar2-fullscreen .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today) .next-calendar2-cell-inner{color:#555;color:var(--color-text1-3,#555)}.next-calendar2-fullscreen .next-calendar2-cell-current:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):not(.next-calendar2-cell-today):hover .next-calendar2-cell-inner{background-color:#f7f9fa;background-color:var(--color-fill1-2,#f7f9fa)}.next-calendar2-fullscreen .next-calendar2-cell-current.next-calendar2-cell-today .next-calendar2-cell-inner{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-calendar2-fullscreen .next-calendar2-cell-current .next-calendar2-cell-inner{background-color:#fff}.next-calendar2-fullscreen .next-calendar2-cell-current.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner{border-top-color:#0064c8;border-top-color:var(--color-brand1-6,#0064c8);font-weight:700;color:#0064c8;color:var(--color-brand1-6,#0064c8);background:#f7f9fa;background:var(--color-brand1-1,#f7f9fa)}.next-calendar2-card .next-calendar2-header{padding:8px;border-bottom:1px solid #e3e4e6;border-bottom:1px solid var(--color-line1-1,#e3e4e6)}.next-calendar2-panel .next-calendar2-header{padding:0 8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #e3e4e6;border-bottom:1px solid var(--color-line1-1,#e3e4e6)}.next-calendar2-panel .next-calendar2-header-btn{min-width:20px;line-height:20px;color:#555;color:var(--color-text1-3,#555);font-family:inherit;vertical-align:initial;border-radius:2px}.next-calendar2-panel .next-calendar2-header-btn>span,.next-calendar2-panel .next-calendar2-header-text-field{text-align:center;font-size:14px;color:#111;color:var(--color-text1-4,#111);font-weight:bolder;vertical-align:initial}.next-calendar2-panel .next-calendar2-header-btn:hover,.next-calendar2-panel .next-calendar2-header-btn:hover>span{color:#0064c8;color:var(--color-brand1-6,#0064c8)}.next-calendar2-panel .next-calendar2-header-left-btn:hover,.next-calendar2-panel .next-calendar2-header-right-btn:hover{background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-calendar2-panel .next-calendar2-header-text-field{-webkit-box-flex:1;-ms-flex:1;flex:1;height:38px;line-height:38px}.next-calendar2-panel .next-calendar2-header-text-field .next-calendar2-header-btn:not(:first-child){margin-left:6px}.next-calendar2-header-select-month-popup,.next-calendar2-header-select-year-popup{min-width:auto}.next-time-picker2-menu{float:left;text-align:center;padding:8px 0}.next-time-picker2-menu:not(:last-child){border-right:1px solid #c0c6cc;border-right:var(--line-1,1px) var(--line-solid,solid) var(--color-line1-2,#c0c6cc)}.next-time-picker2-menu-title{cursor:default;height:28px;line-height:28px;font-size:12px;font-size:var(--font-size-caption,12px);font-weight:400;font-weight:var(--font-weight-2,normal);color:#888;color:var(--color-text1-2,#888);background:#fff}.next-time-picker2-menu ul{position:relative;overflow-y:hidden;overflow-x:auto;list-style:none;margin:0;width:54px;padding:0;font-size:12px;font-size:var(--font-size-caption,12px);height:224px;scrollbar-width:none;-ms-overflow-style:none}.next-time-picker2-menu ul::-webkit-scrollbar{width:0}.next-time-picker2-menu ul:hover{overflow-y:auto}.next-time-picker2-menu ul:after{display:block;height:192px;content:""}.next-time-picker2-menu-item{cursor:pointer;height:32px;line-height:32px;-webkit-transition:background .1s linear;transition:background .1s linear;color:#555;color:var(--color-text1-3,#555);background:#fff;outline:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.next-time-picker2-menu-item:hover{color:#111;color:var(--color-text1-4,#111);background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-time-picker2-menu-item.next-selected{color:#555;color:var(--color-text1-3,#555);background:#f7f9fa;background:var(--color-brand1-1,#f7f9fa)}.next-time-picker2-menu-item.next-disabled{cursor:not-allowed;color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-time-picker2-panel{display:-webkit-box;display:-ms-flexbox;display:flex}.next-time-picker2-panel,.next-time-picker2-panel *,.next-time-picker2-panel :after,.next-time-picker2-panel :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker2-panel:after{visibility:hidden;display:block;height:0;font-size:0;content:" ";clear:both}.next-time-picker2-panel-header{border-bottom:1px solid #c0c6cc;border-bottom:var(--line-1,1px) var(--line-solid,solid) var(--popup-local-border-color,#c0c6cc)}.next-time-picker2-panel-input.next-input{width:100%;padding:6px;border-color:transparent;vertical-align:middle}.next-time-picker2-panel .next-time-picker2-menu{-webkit-box-flex:1;-ms-flex:1;flex:1}.next-time-picker2-footer{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-top:1px solid #f0f0f0;padding:4px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.next-time-picker2-footer-actions{margin-left:auto}.next-time-picker2-wrapper[dir=rtl] .next-time-picker2-menu{float:right}.next-time-picker2-wrapper[dir=rtl] .next-time-picker2-menu:not(:last-child){border-right:none;border-left:1px solid #c0c6cc;border-left:var(--line-1,1px) var(--line-solid,solid) var(--color-line1-2,#c0c6cc)}.next-time-picker2{display:inline-block}.next-time-picker2,.next-time-picker2 *,.next-time-picker2 :after,.next-time-picker2 :before{-webkit-box-sizing:border-box;box-sizing:border-box}.next-time-picker2-trigger .next-input{width:100%}.next-time-picker2-wrapper{padding:4px 0}.next-time-picker2-body{overflow:hidden;border:1px solid #c0c6cc;border:var(--popup-local-border-width,1px) var(--popup-local-border-style,solid) var(--popup-local-border-color,#c0c6cc);border-radius:2px;border-radius:var(--popup-local-corner,2px);background:#fff;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16);-webkit-box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16));box-shadow:0 2px 4px 0 rgba(0,0,0,.16);box-shadow:var(--popup-local-shadow,0 2px 4px 0 rgba(0,0,0,.16))}.next-time-picker2-symbol-clock-icon:before{content:"\e621";content:var(--icon-content-clock,"")}div[dir=rtl] .next-date-picker2-footer-preset>.next-btn{margin-left:8px;margin-right:0}div[dir=rtl] .next-date-picker2-footer-actions{margin-left:0;margin-right:auto}div[dir=rtl] .next-date-picker2-wrapper .next-calendar2-cell:last-child:before{border-top-right-radius:0;border-bottom-right-radius:0;right:0;border-top-left-radius:2px;border-bottom-left-radius:2px;left:8px}div[dir=rtl] .next-date-picker2-wrapper .next-calendar2-cell:first-child:before{border-top-left-radius:0;border-bottom-left-radius:0;left:0;border-top-right-radius:2px;border-bottom-right-radius:2px;right:8px}div[dir=rtl] .next-date-time-picker-wrapper{border-right:1px solid #e3e4e6;border-right:1px solid var(--color-line1-1,#e3e4e6);border-left:node}div[dir=rtl] .next-date-time-picker-wrapper .next-time-picker2-menu:not(:last-child){border-left:1px solid #dcdee3;border-right:none}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin:before{right:50%;left:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end:before{left:50%;right:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-begin:after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-child:after{right:8px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-begin:not(:last-child):after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-child:not(.next-calendar2-cell-hover-end):after{left:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-end:after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-child:after{left:8px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-end:not(:first-child):after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-child:not(.next-calendar2-cell-hover-begin):after{right:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-begin:after{left:0;right:7px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-end:after{right:0;left:7px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-of-type:after{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none;border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-of-type:after{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:before{right:0;left:8px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end.next-calendar2-cell-hover:after{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-begin:after{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850);border-top-right-radius:2px;border-bottom-right-radius:2px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-end:after{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850);border-top-left-radius:2px;border-bottom-left-radius:2px}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):after,div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):before{right:8px;left:0}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:after{right:8px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}div[dir=rtl] .next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:not(.next-calendar2-cell-hover-end):not(.next-calendar2-cell-hover-begin):after{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}div[dir=rtl] .next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:nth-child(2):before{right:50%;left:0}div[dir=rtl] .next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:last-child:before{left:50%;right:0}.next-date-picker2{outline:none;display:inline-table;position:relative;width:inherit}.next-date-picker2-footer{width:-webkit-min-content;width:-moz-min-content;width:min-content;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-top:1px solid #e3e4e6;border-top:1px solid var(--color-line1-1,#e3e4e6);padding:4px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}.next-date-picker2-footer-preset>.next-btn{margin-right:8px}.next-date-picker2-footer-actions{margin-left:auto}.next-date-picker2-footer-preset-only{width:100%}.next-date-picker2-overlay{vertical-align:top;padding:4px 0}.next-date-picker2-overlay-range{padding:12px 0}.next-date-picker2-wrapper{-webkit-box-shadow:0 4px 16px 0 rgba(0,0,0,.12);box-shadow:0 4px 16px 0 rgba(0,0,0,.12);background-color:#fff;border:1px solid #e3e4e6;border:1px solid var(--color-line1-1,#e3e4e6);border-radius:2px;border-radius:var(--corner-1,2px)}.next-date-picker2-wrapper .next-calendar2-panel{border-radius:2px;border-radius:var(--corner-1,2px)}.next-date-picker2-wrapper .next-calendar2-body{width:272px}.next-date-picker2-wrapper .next-calendar2-cell:before{content:"";position:absolute;top:50%;right:0;left:0;z-index:1;height:24px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.next-date-picker2-wrapper .next-calendar2-cell:last-child:before{border-top-right-radius:2px;border-bottom-right-radius:2px;right:8px}.next-date-picker2-wrapper .next-calendar2-cell:first-child:before{border-top-left-radius:2px;border-bottom-left-radius:2px;left:8px}.next-date-picker2-input{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;outline:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #c0c6cc;border:var(--input-border-width,1px) solid var(--input-border-color,#c0c6cc);vertical-align:middle;width:inherit;background-color:#fff;background-color:var(--input-bg-color,#fff)}.next-date-picker2-input .next-input{border:none;-ms-flex-preferred-size:100%;flex-basis:100%;height:100%}.next-date-picker2-input .next-input input{height:100%;width:auto}.next-date-picker2-input.next-date-picker2-input-small{height:24px;height:var(--form-element-small-height,24px);border-radius:2px;border-radius:var(--form-element-small-corner,2px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-label{padding-left:8px;padding-left:var(--input-s-label-padding-left,8px);font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-inner{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-control,.next-date-picker2-input.next-date-picker2-input-small .next-input-inner-text{padding-right:4px;padding-right:var(--input-s-icon-padding-right,4px)}.next-date-picker2-input.next-date-picker2-input-small input{height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px \0;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::-moz-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small input::placeholder{font-size:12px;font-size:var(--form-element-small-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-small .next-input-text-field{padding:0 12px;padding:0 var(--input-s-padding,12px);font-size:12px;font-size:var(--form-element-small-font-size,12px);height:22px;height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2);line-height:22px;line-height:calc(var(--form-element-small-height, 24px) - var(--input-border-width, 1px)*2)}.next-date-picker2-input.next-date-picker2-input-small .next-icon .next-icon-remote,.next-date-picker2-input.next-date-picker2-input-small .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-date-picker2-input.next-date-picker2-input-small .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-small-corner,2px) var(--form-element-small-corner,2px) 0}.next-date-picker2-input.next-date-picker2-input-medium{height:32px;height:var(--form-element-medium-height,32px);border-radius:2px;border-radius:var(--form-element-medium-corner,2px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-label{padding-left:16px;padding-left:var(--input-m-label-padding-left,16px);font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-inner{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-control,.next-date-picker2-input.next-date-picker2-input-medium .next-input-inner-text{padding-right:8px;padding-right:var(--input-m-icon-padding-right,8px)}.next-date-picker2-input.next-date-picker2-input-medium input{height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px \0;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::-webkit-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::-moz-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::-ms-input-placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium input::placeholder{font-size:12px;font-size:var(--form-element-medium-font-size,12px)}.next-date-picker2-input.next-date-picker2-input-medium .next-input-text-field{padding:0 12px;padding:0 var(--input-m-padding,12px);font-size:12px;font-size:var(--form-element-medium-font-size,12px);height:30px;height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);line-height:30px;line-height:calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2)}.next-date-picker2-input.next-date-picker2-input-medium .next-icon .next-icon-remote,.next-date-picker2-input.next-date-picker2-input-medium .next-icon:before{width:12px;font-size:12px;line-height:inherit}.next-date-picker2-input.next-date-picker2-input-medium .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-medium-corner,2px) var(--form-element-medium-corner,2px) 0}.next-date-picker2-input.next-date-picker2-input-large{height:36px;height:var(--form-element-large-height,36px);border-radius:2px;border-radius:var(--form-element-large-corner,2px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-label{padding-left:16px;padding-left:var(--input-l-label-padding-left,16px);font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-inner{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-control,.next-date-picker2-input.next-date-picker2-input-large .next-input-inner-text{padding-right:12px;padding-right:var(--input-l-icon-padding-right,12px)}.next-date-picker2-input.next-date-picker2-input-large input{height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px \0;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2) \0 ;padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::-webkit-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::-moz-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::-ms-input-placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large input::placeholder{font-size:14px;font-size:var(--form-element-large-font-size,14px)}.next-date-picker2-input.next-date-picker2-input-large .next-input-text-field{padding:0 12px;padding:0 var(--input-l-padding,12px);font-size:14px;font-size:var(--form-element-large-font-size,14px);height:34px;height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2);line-height:34px;line-height:calc(var(--form-element-large-height, 36px) - var(--input-border-width, 1px)*2)}.next-date-picker2-input.next-date-picker2-input-large .next-icon .next-icon-remote,.next-date-picker2-input.next-date-picker2-input-large .next-icon:before{width:16px;font-size:16px;line-height:inherit}.next-date-picker2-input.next-date-picker2-input-large .next-input-control{border-radius:0 2px 2px 0;border-radius:0 var(--form-element-large-corner,2px) var(--form-element-large-corner,2px) 0}.next-date-picker2-input:hover{border-color:#c0c6cc;border-color:var(--input-hover-border-color,#c0c6cc);background-color:#fff;background-color:var(--input-hover-bg-color,#fff)}.next-date-picker2-input.next-date-picker2-input-focus{border-color:#0064c8;border-color:var(--input-focus-border-color,#0064c8);background-color:#fff;background-color:var(--input-focus-bg-color,#fff);-webkit-box-shadow:0 0 0 0 rgba(0,100,200,.2);box-shadow:0 0 0 0 rgba(0,100,200,.2)}.next-date-picker2-input.next-date-picker2-input-noborder{border-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.next-date-picker2-input.next-date-picker2-input-disabled{color:#b3b3b3;color:var(--input-disabled-color,#b3b3b3);cursor:not-allowed}.next-date-picker2-input.next-date-picker2-input-disabled,.next-date-picker2-input.next-date-picker2-input-disabled:hover{border-color:#c0c6cc;border-color:var(--input-disabled-border-color,#c0c6cc);background-color:#f7f9fa;background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-date-picker2-input-separator{color:#c0c6cc;color:var(--input-border-color,#c0c6cc);font-size:12px;line-height:12px;display:inline-block;min-width:16px;text-align:center}.next-date-picker2-panel,.next-range-picker2-panel{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-range-picker-left .next-calendar2-header-right-btn,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-range-picker-right .next-calendar2-header-left-btn{visibility:hidden}.next-range-picker2-arrow{display:block;-webkit-transform:translateY(-50%) rotate(-45deg);-ms-transform:translateY(-50%) rotate(-45deg);transform:translateY(-50%) rotate(-45deg);position:absolute;z-index:1;width:10px;height:10px;margin-left:16.5px;border-color:#e3e4e6 #e3e4e6 transparent transparent;border-left:1px solid transparent;border-bottom:1px solid transparent;border-right:1px solid var(--color-line1-1,#e3e4e6);border-top:1px solid var(--color-line1-1,#e3e4e6);-webkit-transition:left .3s ease-out;transition:left .3s ease-out;background:#fff}.next-date-picker2-tl-bl .next-range-picker2-arrow{top:12.5px}.next-date-picker2-bl-tl .next-range-picker2-arrow{bottom:13px;-webkit-transform:translateY(50%) rotate(135deg);-ms-transform:translateY(50%) rotate(135deg);transform:translateY(50%) rotate(135deg)}.next-date-time-picker-wrapper{border-left:1px solid #e3e4e6;border-left:1px solid var(--color-line1-1,#e3e4e6)}.next-date-time-picker-wrapper .next-calendar2-body{padding-right:0;padding-left:0}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-disabled .next-calendar2-cell-inner{color:#c1c1c1;color:var(--color-text1-1,#c1c1c1);background:#f8f8f9;background:var(--color-fill1-1,#f8f8f9)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected:before{color:#555;color:var(--color-text1-3,#555);background:#f7f9fa;background:var(--color-brand1-1,#f7f9fa)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected .next-calendar2-cell-inner{color:#555;color:var(--color-text1-3,#555);background:transparent}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin .next-calendar2-cell-inner,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end .next-calendar2-cell-inner{z-index:10;color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin:before{left:50%}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end:before{right:50%}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-begin-single:before,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-selected.next-calendar2-cell-range-end-single:before{display:none}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:after{content:"";position:absolute;top:50%;right:0;left:0;z-index:2;height:24px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-color:#002850 transparent;border-left:1px dashed transparent;border-bottom:1px dashed var(--color-brand1-9,#002850);border-right:1px dashed transparent;border-top:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-begin:after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-child:after{left:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-hover-end:after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-child:after{right:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-begin:after{left:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover.next-calendar2-cell-selected.next-calendar2-cell-hover-end:after{right:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:first-of-type:after{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:last-of-type:after{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end:before{right:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-edge-end.next-calendar2-cell-hover:after{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850)}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-begin:after{border-top:1px dashed #002850;border-top:1px dashed var(--color-brand1-9,#002850);border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850);border-top-left-radius:2px;border-bottom-left-radius:2px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover-end:after{border-top:1px dashed #002850;border-top:1px dashed var(--color-brand1-9,#002850);border-right:1px dashed #002850;border-right:1px dashed var(--color-brand1-9,#002850);border-top-right-radius:2px;border-bottom-right-radius:2px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):after,.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled):before{left:8px}.next-range-picker2-panel:not(.next-range-picker2-panel-single) .next-calendar2-cell-edge-end+.next-calendar2-cell-current:not(.next-calendar2-cell-disabled).next-calendar2-cell-hover:after{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left:1px dashed #002850;border-left:1px dashed var(--color-brand1-9,#002850)}.next-calendar2-table-week .next-calendar2-cell-hover:after{display:none}.next-calendar2-table-week tr:hover .next-calendar2-cell:not(.next-calendar2-cell-disabled):not(.next-calendar2-cell-selected):before{background:#f7f9fa;background:var(--color-fill1-2,#f7f9fa)}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected .next-calendar2-cell-inner,.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:before{color:#555;color:var(--color-text1-3,#555);background-color:#f7f9fa;background-color:var(--color-brand1-1,#f7f9fa)}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:last-child .next-calendar2-cell-inner,.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:nth-child(2) .next-calendar2-cell-inner{color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:nth-child(2):before{left:50%}.next-calendar2-table-week .next-calendar2-week-current .next-calendar2-cell.next-calendar2-cell-selected:last-child:before{right:50%}.next-calendar2-table-week tr:not(.next-calendar2-week-current) td.next-calendar2-cell.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled) .next-calendar2-cell-inner,.next-calendar2-table-week tr:not(.next-calendar2-week-current) td.next-calendar2-cell.next-calendar2-cell-selected:not(.next-calendar2-cell-disabled):before{background-color:transparent;color:#c1c1c1;color:var(--color-text1-1,#c1c1c1)}.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled):last-child .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled):nth-child(2) .next-calendar2-cell-inner{background-color:#f7f9fa;background-color:var(--color-brand1-1,#f7f9fa);color:#555;color:var(--color-text1-3,#555)}.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-begin:last-child .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-begin:nth-child(2) .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-end:last-child .next-calendar2-cell-inner,.next-range-picker2-panel .next-calendar2-week-current .next-calendar2-cell-selected:not(.next-calendar2-cell-disabled).next-calendar2-cell-week-range-end:nth-child(2) .next-calendar2-cell-inner{color:#fff;background:#0064c8;background:var(--color-brand1-6,#0064c8)}.next-icon-d-up-for-component:before{content:"\ea37";content:var(--icon-content-d-up-for-component,"")}.next-icon-zoom-in-line1:before{content:"\ea36";content:var(--icon-content-zoom-in-line1,"")}.next-icon-zoom-out-line1:before{content:"\ea35";content:var(--icon-content-zoom-out-line1,"")}.next-icon-a-rank-line2:before{content:"\ea34";content:var(--icon-content-a-rank-line2,"")}.next-icon-a-drag-line2:before{content:"\ea33";content:var(--icon-content-a-drag-line2,"")}.next-icon-a-filter-line2:before{content:"\ea32";content:var(--icon-content-a-filter-line2,"")}.next-icon-undo-fill:before{content:"\ea31";content:var(--icon-content-undo-fill,"")}.next-icon-undo-line:before{content:"\ea30";content:var(--icon-content-undo-line,"")}.next-icon-cancelundo-line:before{content:"\e880";content:var(--icon-content-cancelundo-line,"")}.next-icon-cancelundo-fill:before{content:"\e87f";content:var(--icon-content-cancelundo-fill,"")}.next-icon-t-up-for-component:before{content:"\ea2f";content:var(--icon-content-t-up-for-component,"")}.next-icon-time-for-component:before{content:"\ea2e";content:var(--icon-content-time-for-component,"")}.next-icon-help-for-component:before{content:"\ea2d";content:var(--icon-content-help-for-component,"")}.next-icon-left-for-component:before{content:"\ea2c";content:var(--icon-content-left-for-component,"")}.next-icon-d-left-for-component:before{content:"\ea2b";content:var(--icon-content-d-left-for-component,"")}.next-icon-info-for-component:before{content:"\ea2a";content:var(--icon-content-info-for-component,"")}.next-icon-right-for-component:before{content:"\ea29";content:var(--icon-content-right-for-component,"")}.next-icon-d-right-for-component:before{content:"\ea28";content:var(--icon-content-d-right-for-component,"")}.next-icon-plus-for-component:before{content:"\ea27";content:var(--icon-content-plus-for-component,"")}.next-icon-loading-line-for-component:before{content:"\ea26";content:var(--icon-content-loading-line-for-component,"")}.next-icon-upload-for-component:before{content:"\ea25";content:var(--icon-content-upload-for-component,"")}.next-icon-more-line-for-component:before{content:"\ea24";content:var(--icon-content-more-line-for-component,"")}.next-icon-check-for-component:before{content:"\ea23";content:var(--icon-content-check-for-component,"")}.next-icon-closemark-for-component:before{content:"\ea22";content:var(--icon-content-closemark-for-component,"")}.next-icon-warning-for-component:before{content:"\ea21";content:var(--icon-content-warning-for-component,"")}.next-icon-search-for-component:before{content:"\ea20";content:var(--icon-content-search-for-component,"")}.next-icon-expand-down-for-component:before{content:"\ea1f";content:var(--icon-content-expand-down-for-component,"")}.next-icon-minus-for-component:before{content:"\e8ae";content:var(--icon-content-minus-for-component,"")}.next-icon-chek-for-component:before{content:"\ea1e";content:var(--icon-content-chek-for-component,"")}.next-icon-chart_bar:before{content:"\e924";content:var(--icon-content-chart_bar,"")}.next-icon-align-vertical-top-line:before{content:"\e9ad";content:var(--icon-content-align-vertical-top-line,"")}.next-icon-screen-arrow-left-line:before{content:"\e9ac";content:var(--icon-content-screen-arrow-left-line,"")}.next-icon-googleplus-fill:before{content:"\e9ab";content:var(--icon-content-googleplus-fill,"")}.next-icon-document-task-line:before{content:"\e9aa";content:var(--icon-content-document-task-line,"")}.next-icon-twitter-fill:before{content:"\e9a9";content:var(--icon-content-twitter-fill,"")}.next-icon-copy-line:before{content:"\e9a8";content:var(--icon-content-copy-line,"")}.next-icon-folders-line:before{content:"\e9a7";content:var(--icon-content-folders-line,"")}.next-icon-check-line:before{content:"\e9a6";content:var(--icon-content-check-line,"")}.next-icon-chevron-sort-line:before{content:"\e9a5";content:var(--icon-content-chevron-sort-line,"")}.next-icon-user-certification-line:before{content:"\e9a4";content:var(--icon-content-user-certification-line,"")}.next-icon-arrow-up-line:before{content:"\e9a3";content:var(--icon-content-arrow-up-line,"")}.next-icon-info-line:before{content:"\e9a2";content:var(--icon-content-info-line,"")}.next-icon-refresh-line:before{content:"\e9a1";content:var(--icon-content-refresh-line,"")}.next-icon-checkmark-line:before{content:"\e9a0";content:var(--icon-content-checkmark-line,"")}.next-icon-list-line:before{content:"\e99f";content:var(--icon-content-list-line,"")}.next-icon-calculator-line:before{content:"\e99e";content:var(--icon-content-calculator-line,"")}.next-icon-forbidden-line:before{content:"\e99d";content:var(--icon-content-forbidden-line,"")}.next-icon-warning-line:before{content:"\e99c";content:var(--icon-content-warning-line,"")}.next-icon-caution-line:before{content:"\e99b";content:var(--icon-content-caution-line,"")}.next-icon-a-1688-fill:before{content:"\e99a";content:var(--icon-content-a-1688-fill,"")}.next-icon-like-line:before{content:"\e999";content:var(--icon-content-like-line,"")}.next-icon-closemark-line:before{content:"\e998";content:var(--icon-content-closemark-line,"")}.next-icon-help-line:before{content:"\e997";content:var(--icon-content-help-line,"")}.next-icon-ascending-line:before{content:"\e996";content:var(--icon-content-ascending-line,"")}.next-icon-double-down-line:before{content:"\e995";content:var(--icon-content-double-down-line,"")}.next-icon-arrow-down-line:before{content:"\e994";content:var(--icon-content-arrow-down-line,"")}.next-icon-arrow-left-line:before{content:"\e993";content:var(--icon-content-arrow-left-line,"")}.next-icon-double-left-line:before{content:"\e992";content:var(--icon-content-double-left-line,"")}.next-icon-button-sort-fill:before{content:"\e991";content:var(--icon-content-button-sort-fill,"")}.next-icon-down-to-bottom-line:before{content:"\e990";content:var(--icon-content-down-to-bottom-line,"")}.next-icon-star-line:before{content:"\e98f";content:var(--icon-content-star-line,"")}.next-icon-forward-line:before{content:"\e98e";content:var(--icon-content-forward-line,"")}.next-icon-sort-line:before{content:"\e98d";content:var(--icon-content-sort-line,"")}.next-icon-double-right-line:before{content:"\e98c";content:var(--icon-content-double-right-line,"")}.next-icon-GitHub-fill:before{content:"\e98b";content:var(--icon-content-GitHub-fill,"")}.next-icon-expand-line:before{content:"\e98a";content:var(--icon-content-expand-line,"")}.next-icon-switch-line:before{content:"\e989";content:var(--icon-content-switch-line,"")}.next-icon-descending-line:before{content:"\e988";content:var(--icon-content-descending-line,"")}.next-icon-back-line:before{content:"\e987";content:var(--icon-content-back-line,"")}.next-icon-stop-outline-line:before{content:"\e986";content:var(--icon-content-stop-outline-line,"")}.next-icon-pause-outline-line:before{content:"\e985";content:var(--icon-content-pause-outline-line,"")}.next-icon-unlock-line:before{content:"\e984";content:var(--icon-content-unlock-line,"")}.next-icon-discount-line:before{content:"\e983";content:var(--icon-content-discount-line,"")}.next-icon-sub-account-line:before{content:"\e982";content:var(--icon-content-sub-account-line,"")}.next-icon-navigation-line:before{content:"\e981";content:var(--icon-content-navigation-line,"")}.next-icon-plus-circle-line:before{content:"\e980";content:var(--icon-content-plus-circle-line,"")}.next-icon-close-line:before{content:"\e97f";content:var(--icon-content-close-line,"")}.next-icon-notification-line:before{content:"\e97e";content:var(--icon-content-notification-line,"")}.next-icon-taobao-fill:before{content:"\e97d";content:var(--icon-content-taobao-fill,"")}.next-icon-flow-line:before{content:"\e97c";content:var(--icon-content-flow-line,"")}.next-icon-download-line:before{content:"\e97b";content:var(--icon-content-download-line,"")}.next-icon-international-line:before{content:"\e97a";content:var(--icon-content-international-line,"")}.next-icon-document-add-line:before{content:"\e979";content:var(--icon-content-document-add-line,"")}.next-icon-notification-off-line:before{content:"\e978";content:var(--icon-content-notification-off-line,"")}.next-icon-lock-line:before{content:"\e977";content:var(--icon-content-lock-line,"")}.next-icon-user-avatar-line:before{content:"\e976";content:var(--icon-content-user-avatar-line,"")}.next-icon-partner-line:before{content:"\e975";content:var(--icon-content-partner-line,"")}.next-icon-et-line:before{content:"\e973";content:var(--icon-content-et-line,"")}.next-icon-customer-sercive-line:before{content:"\e972";content:var(--icon-content-customer-sercive-line,"")}.next-icon-user-follow-line:before{content:"\e971";content:var(--icon-content-user-follow-line,"")}.next-icon-screen-arrow-right-line:before{content:"\e970";content:var(--icon-content-screen-arrow-right-line,"")}.next-icon-more-line:before{content:"\e624";content:var(--icon-content-more-line,"")}.next-icon-minus-circle-line:before{content:"\e96f";content:var(--icon-content-minus-circle-line,"")}.next-icon-facebook-fill:before{content:"\e62d";content:var(--icon-content-facebook-fill,"")}.next-icon-user-admin-line:before{content:"\e629";content:var(--icon-content-user-admin-line,"")}.next-icon-collapse-line:before{content:"\e96e";content:var(--icon-content-collapse-line,"")}.next-icon-bug-report-line:before{content:"\e622";content:var(--icon-content-bug-report-line,"")}.next-icon-credits-line:before{content:"\e96d";content:var(--icon-content-credits-line,"")}.next-icon-upload-line:before{content:"\e96c";content:var(--icon-content-upload-line,"")}.next-icon-setting-line:before{content:"\e96b";content:var(--icon-content-setting-line,"")}.next-icon-message-line:before{content:"\e96a";content:var(--icon-content-message-line,"")}.next-icon-edit-line:before{content:"\e969";content:var(--icon-content-edit-line,"")}.next-icon-message-unread-line:before{content:"\e967";content:var(--icon-content-message-unread-line,"")}.next-icon-view-off-line:before{content:"\e966";content:var(--icon-content-view-off-line,"")}.next-icon-phonecall-line:before{content:"\e965";content:var(--icon-content-phonecall-line,"")}.next-icon-document-download-line:before{content:"\e964";content:var(--icon-content-document-download-line,"")}.next-icon-order-unread-line:before{content:"\e963";content:var(--icon-content-order-unread-line,"")}.next-icon-view-line:before{content:"\e962";content:var(--icon-content-view-line,"")}.next-icon-document-line:before{content:"\e961";content:var(--icon-content-document-line,"")}.next-icon-chart-pie-line:before{content:"\e960";content:var(--icon-content-chart-pie-line,"")}.next-icon-folder-line:before{content:"\e95f";content:var(--icon-content-folder-line,"")}.next-icon-renew-line:before{content:"\e95e";content:var(--icon-content-renew-line,"")}.next-icon-order-line:before{content:"\e95d";content:var(--icon-content-order-line,"")}.next-icon-cart-empty-line:before{content:"\e95c";content:var(--icon-content-cart-empty-line,"")}.next-icon-zoom-out-line:before{content:"\e95b";content:var(--icon-content-zoom-out-line,"")}.next-icon-play-outline-line:before{content:"\e95a";content:var(--icon-content-play-outline-line,"")}.next-icon-share-fill:before{content:"\e959";content:var(--icon-content-share-fill,"")}.next-icon-time-line:before{content:"\e958";content:var(--icon-content-time-line,"")}.next-icon-arrow-right-line:before{content:"\e957";content:var(--icon-content-arrow-right-line,"")}.next-icon-button-left-fill:before{content:"\e956";content:var(--icon-content-button-left-fill,"")}.next-icon-cart-with-line:before{content:"\e955";content:var(--icon-content-cart-with-line,"")}.next-icon-user-profile-line:before{content:"\e954";content:var(--icon-content-user-profile-line,"")}.next-icon-zoom-in-line:before{content:"\e780";content:var(--icon-content-zoom-in-line,"")}.next-icon-search-line:before{content:"\e77f";content:var(--icon-content-search-line,"")}.next-icon-phonecall-off-line:before{content:"\e62f";content:var(--icon-content-phonecall-off-line,"")}.next-icon-location-line:before{content:"\e62e";content:var(--icon-content-location-line,"")}.next-icon-user-avatar-fill:before{content:"\e62c";content:var(--icon-content-user-avatar-fill,"")}.next-icon-compress-line:before{content:"\e62b";content:var(--icon-content-compress-line,"")}.next-icon-share-line:before{content:"\e62a";content:var(--icon-content-share-line,"")}.next-icon-questionnaire-line:before{content:"\ea1d";content:var(--icon-content-questionnaire-line,"")}.next-icon-trainin-line:before{content:"\ea1c";content:var(--icon-content-trainin-line,"")}.next-icon-recharge-line:before{content:"\ea1b";content:var(--icon-content-recharge-line,"")}.next-icon-scroll-mode-line:before{content:"\ea1a";content:var(--icon-content-scroll-mode-line,"")}.next-icon-sort-circle-line:before{content:"\ea19";content:var(--icon-content-sort-circle-line,"")}.next-icon-drag-line:before{content:"\ea18";content:var(--icon-content-drag-line,"")}.next-icon-arrow-circular-line:before{content:"\ea17";content:var(--icon-content-arrow-circular-line,"")}.next-icon-calendar-line:before{content:"\ea16";content:var(--icon-content-calendar-line,"")}.next-icon-external-link-line:before{content:"\ea15";content:var(--icon-content-external-link-line,"")}.next-icon-remote-control-line:before{content:"\ea14";content:var(--icon-content-remote-control-line,"")}.next-icon-compass-line:before{content:"\ea13";content:var(--icon-content-compass-line,"")}.next-icon-diagnose-line:before{content:"\ea12";content:var(--icon-content-diagnose-line,"")}.next-icon-management-line:before{content:"\ea11";content:var(--icon-content-management-line,"")}.next-icon-display-arrow-left-line:before{content:"\ea10";content:var(--icon-content-display-arrow-left-line,"")}.next-icon-resource-setting-fill:before{content:"\ea0f";content:var(--icon-content-resource-setting-fill,"")}.next-icon-plus-line:before{content:"\ea0e";content:var(--icon-content-plus-line,"")}.next-icon-minus-line:before{content:"\ea0d";content:var(--icon-content-minus-line,"")}.next-icon-backspace-line:before{content:"\ea0c";content:var(--icon-content-backspace-line,"")}.next-icon-terminal-line:before{content:"\ea0b";content:var(--icon-content-terminal-line,"")}.next-icon-home-line:before{content:"\ea0a";content:var(--icon-content-home-line,"")}.next-icon-structured-data-line:before{content:"\ea09";content:var(--icon-content-structured-data-line,"")}.next-icon-step-mode-line:before{content:"\ea08";content:var(--icon-content-step-mode-line,"")}.next-icon-connection-line:before{content:"\ea07";content:var(--icon-content-connection-line,"")}.next-icon-new-fill:before{content:"\ea06";content:var(--icon-content-new-fill,"")}.next-icon-hourglass-line:before{content:"\ea05";content:var(--icon-content-hourglass-line,"")}.next-icon-alert-fill:before{content:"\ea04";content:var(--icon-content-alert-fill,"")}.next-icon-rank-line:before{content:"\ea03";content:var(--icon-content-rank-line,"")}.next-icon-new-releases-fill:before{content:"\ea02";content:var(--icon-content-new-releases-fill,"")}.next-icon-news-line:before{content:"\ea01";content:var(--icon-content-news-line,"")}.next-icon-accesskey-line:before{content:"\ea00";content:var(--icon-content-accesskey-line,"")}.next-icon-database-line:before{content:"\e9ff";content:var(--icon-content-database-line,"")}.next-icon-transanction-line:before{content:"\e9fe";content:var(--icon-content-transanction-line,"")}.next-icon-inbox-line:before{content:"\e9fd";content:var(--icon-content-inbox-line,"")}.next-icon-align-horizontal-center-line:before{content:"\e9fc";content:var(--icon-content-align-horizontal-center-line,"")}.next-icon-comment-line:before{content:"\e9fb";content:var(--icon-content-comment-line,"")}.next-icon-pin-fill:before{content:"\e9fa";content:var(--icon-content-pin-fill,"")}.next-icon-gift-line:before{content:"\e9f9";content:var(--icon-content-gift-line,"")}.next-icon-filter-line:before{content:"\e9f8";content:var(--icon-content-filter-line,"")}.next-icon-flag-line:before{content:"\e9f7";content:var(--icon-content-flag-line,"")}.next-icon-package-line:before{content:"\e9f6";content:var(--icon-content-package-line,"")}.next-icon-power-off-line:before{content:"\e9f5";content:var(--icon-content-power-off-line,"")}.next-icon-screen-check-line:before{content:"\e9f4";content:var(--icon-content-screen-check-line,"")}.next-icon-cloud-download-line:before{content:"\e9f3";content:var(--icon-content-cloud-download-line,"")}.next-icon-wifi-line:before{content:"\e9f2";content:var(--icon-content-wifi-line,"")}.next-icon-screen-error-line:before{content:"\e9f1";content:var(--icon-content-screen-error-line,"")}.next-icon-save-line:before{content:"\e9f0";content:var(--icon-content-save-line,"")}.next-icon-mobile-line:before{content:"\e9ef";content:var(--icon-content-mobile-line,"")}.next-icon-charging-pile-line:before{content:"\e9ee";content:var(--icon-content-charging-pile-line,"")}.next-icon-application-group-fill:before{content:"\e9ed";content:var(--icon-content-application-group-fill,"")}.next-icon-outdent-line:before{content:"\e9ec";content:var(--icon-content-outdent-line,"")}.next-icon-screen-line:before{content:"\e9eb";content:var(--icon-content-screen-line,"")}.next-icon-pin-fixed-fill:before{content:"\e9ea";content:var(--icon-content-pin-fixed-fill,"")}.next-icon-cloud-upload-line:before{content:"\e9e9";content:var(--icon-content-cloud-upload-line,"")}.next-icon-screen-monitoring-line:before{content:"\e9e8";content:var(--icon-content-screen-monitoring-line,"")}.next-icon-tag-line:before{content:"\e9e7";content:var(--icon-content-tag-line,"")}.next-icon-qrcode-line:before{content:"\e9e6";content:var(--icon-content-qrcode-line,"")}.next-icon-mobile-error-line:before{content:"\e9e5";content:var(--icon-content-mobile-error-line,"")}.next-icon-paperclip-line:before{content:"\e9e4";content:var(--icon-content-paperclip-line,"")}.next-icon-delete-line:before{content:"\e9e3";content:var(--icon-content-delete-line,"")}.next-icon-indent-line:before{content:"\e9e2";content:var(--icon-content-indent-line,"")}.next-icon-application-line:before{content:"\e9e1";content:var(--icon-content-application-line,"")}.next-icon-email-line:before{content:"\e9e0";content:var(--icon-content-email-line,"")}.next-icon-sql-line:before{content:"\e9df";content:var(--icon-content-sql-line,"")}.next-icon-dingtalk-fill:before{content:"\e9de";content:var(--icon-content-dingtalk-fill,"")}.next-icon-folder-add-line:before{content:"\e9dd";content:var(--icon-content-folder-add-line,"")}.next-icon-align-horizontal-right-line:before{content:"\e9dc";content:var(--icon-content-align-horizontal-right-line,"")}.next-icon-align-vertical-bottom-line:before{content:"\e9db";content:var(--icon-content-align-vertical-bottom-line,"")}.next-icon-chart-relation-fill:before{content:"\e9da";content:var(--icon-content-chart-relation-fill,"")}.next-icon-screen-code-line:before{content:"\e9d9";content:var(--icon-content-screen-code-line,"")}.next-icon-map-line:before{content:"\e9d8";content:var(--icon-content-map-line,"")}.next-icon-display-arrow-right-line:before{content:"\e9d7";content:var(--icon-content-display-arrow-right-line,"")}.next-icon-database-plus-line:before{content:"\e9d6";content:var(--icon-content-database-plus-line,"")}.next-icon-wangwang-line:before{content:"\e9d5";content:var(--icon-content-wangwang-line,"")}.next-icon-alipay-fill:before{content:"\e9d4";content:var(--icon-content-alipay-fill,"")}.next-icon-image-line:before{content:"\e9d3";content:var(--icon-content-image-line,"")}.next-icon-key-line:before{content:"\e9d2";content:var(--icon-content-key-line,"")}.next-icon-hatch-line:before{content:"\e9d1";content:var(--icon-content-hatch-line,"")}.next-icon-scan-line:before{content:"\e9d0";content:var(--icon-content-scan-line,"")}.next-icon-balance-line:before{content:"\e9cf";content:var(--icon-content-balance-line,"")}.next-icon-align-horizontal-left-line:before{content:"\e9ce";content:var(--icon-content-align-horizontal-left-line,"")}.next-icon-chart-bar-line:before{content:"\e9cd";content:var(--icon-content-chart-bar-line,"")}.next-icon-pic-center-line:before{content:"\e9cc";content:var(--icon-content-pic-center-line,"")}.next-icon-cloud-machine-line:before{content:"\e9cb";content:var(--icon-content-cloud-machine-line,"")}.next-icon-chart-scatter-plot-line:before{content:"\e9ca";content:var(--icon-content-chart-scatter-plot-line,"")}.next-icon-all-line:before{content:"\e9c9";content:var(--icon-content-all-line,"")}.next-icon-border-verticle-line:before{content:"\e9c8";content:var(--icon-content-border-verticle-line,"")}.next-icon-cut-line:before{content:"\e9c7";content:var(--icon-content-cut-line,"")}.next-icon-layer-line:before{content:"\e9c6";content:var(--icon-content-layer-line,"")}.next-icon-box-line:before{content:"\e9c5";content:var(--icon-content-box-line,"")}.next-icon-chart-area-fill:before{content:"\e9c4";content:var(--icon-content-chart-area-fill,"")}.next-icon-mobile-check-line:before{content:"\e9c3";content:var(--icon-content-mobile-check-line,"")}.next-icon-pic-side-line:before{content:"\e9c2";content:var(--icon-content-pic-side-line,"")}.next-icon-up-to-top-line:before{content:"\e9c1";content:var(--icon-content-up-to-top-line,"")}.next-icon-enlarge-line:before{content:"\e9c0";content:var(--icon-content-enlarge-line,"")}.next-icon-double-up-line:before{content:"\e9bf";content:var(--icon-content-double-up-line,"")}.next-icon-page-first-line:before{content:"\e9be";content:var(--icon-content-page-first-line,"")}.next-icon-naver-fill:before{content:"\e9bd";content:var(--icon-content-naver-fill,"")}.next-icon-sina-fill:before{content:"\e9bc";content:var(--icon-content-sina-fill,"")}.next-icon-stackoverflow-fill:before{content:"\e9bb";content:var(--icon-content-stackoverflow-fill,"")}.next-icon-youtube-fill:before{content:"\e9ba";content:var(--icon-content-youtube-fill,"")}.next-icon-WeChat-fill:before{content:"\e9b9";content:var(--icon-content-WeChat-fill,"")}.next-icon-button-right-fill:before{content:"\e9b8";content:var(--icon-content-button-right-fill,"")}.next-icon-page-last-line:before{content:"\e9b7";content:var(--icon-content-page-last-line,"")}.next-icon-authentication-line:before{content:"\e9b6";content:var(--icon-content-authentication-line,"")}.next-icon-dollar-line:before{content:"\e9b5";content:var(--icon-content-dollar-line,"")}.next-icon-applets-fill:before{content:"\e9b4";content:var(--icon-content-applets-fill,"")}.next-icon-hot-fill:before{content:"\e9b3";content:var(--icon-content-hot-fill,"")}.next-icon-server-fault-fill:before{content:"\e9b2";content:var(--icon-content-server-fault-fill,"")}.next-icon-gallery-view-line:before{content:"\e9b1";content:var(--icon-content-gallery-view-line,"")}.next-icon-linkedin-fill:before{content:"\e9b0";content:var(--icon-content-linkedin-fill,"")}.next-icon-button-down-fill:before{content:"\e9af";content:var(--icon-content-button-down-fill,"")}.next-icon-button-up-fill:before{content:"\e9ae";content:var(--icon-content-button-up-fill,"")}.next-icon-compress:before{content:"\e8ce";content:var(--icon-content-compress,"")}.next-icon-arrow_circular:before{content:"\e8cd";content:var(--icon-content-arrow_circular,"")}.next-icon-charging_pile:before{content:"\e8cc";content:var(--icon-content-charging_pile,"")}.next-icon-backspace-fill:before{content:"\e8cb";content:var(--icon-content-backspace-fill,"")}.next-icon-star:before{content:"\e8ca";content:var(--icon-content-star,"")}.next-icon-info_fill:before{content:"\e8c9";content:var(--icon-content-info_fill,"")}.next-icon-caution:before{content:"\e8c8";content:var(--icon-content-caution,"")}.next-icon-info:before{content:"\e8c7";content:var(--icon-content-info,"")}.next-icon-closemark:before{content:"\e8c6";content:var(--icon-content-closemark,"")}.next-icon-caution_fill:before{content:"\e8c5";content:var(--icon-content-caution_fill,"")}.next-icon-check_fill:before{content:"\e8c4";content:var(--icon-content-check_fill,"")}.next-icon-warning_fill:before{content:"\e8c3";content:var(--icon-content-warning_fill,"")}.next-icon-forbidden_fill:before{content:"\e8c2";content:var(--icon-content-forbidden_fill,"")}.next-icon-star_fill:before{content:"\e8c1";content:var(--icon-content-star_fill,"")}.next-icon-checkmark:before{content:"\e8c0";content:var(--icon-content-checkmark,"")}.next-icon-like_fill:before{content:"\e8bf";content:var(--icon-content-like_fill,"")}.next-icon-help_fill:before{content:"\e8be";content:var(--icon-content-help_fill,"")}.next-icon-forbidden:before{content:"\e8bd";content:var(--icon-content-forbidden,"")}.next-icon-close_fill:before{content:"\e8bc";content:var(--icon-content-close_fill,"")}.next-icon-international:before{content:"\e8bb";content:var(--icon-content-international,"")}.next-icon-user_avatar:before{content:"\e8ba";content:var(--icon-content-user_avatar,"")}.next-icon-User_avatar_filled_alt:before{content:"\e8b9";content:var(--icon-content-User_avatar_filled_alt,"")}.next-icon-user_avatar_full_fill:before{content:"\e8b8";content:var(--icon-content-user_avatar_full_fill,"")}.next-icon-user_admin:before{content:"\e8b7";content:var(--icon-content-user_admin,"")}.next-icon-user_certification:before{content:"\e8b6";content:var(--icon-content-user_certification,"")}.next-icon-user_follow:before{content:"\e8b5";content:var(--icon-content-user_follow,"")}.next-icon-international_fill:before{content:"\e8b4";content:var(--icon-content-international_fill,"")}.next-icon-partner:before{content:"\e8b3";content:var(--icon-content-partner,"")}.next-icon-sub_account:before{content:"\e8b2";content:var(--icon-content-sub_account,"")}.next-icon-authentication1:before{content:"\e8b1";content:var(--icon-content-authentication1,"")}.next-icon-authentication_fill:before{content:"\e8b0";content:var(--icon-content-authentication_fill,"")}.next-icon-WeChat:before{content:"\e8af";content:var(--icon-content-WeChat,"")}.next-icon-GitHub:before{content:"\e8ad";content:var(--icon-content-GitHub,"")}.next-icon-youtube:before{content:"\e8ac";content:var(--icon-content-youtube,"")}.next-icon-taobao:before{content:"\e8ab";content:var(--icon-content-taobao,"")}.next-icon-wangwang:before{content:"\e8aa";content:var(--icon-content-wangwang,"")}.next-icon-twitter:before{content:"\e8a9";content:var(--icon-content-twitter,"")}.next-icon-google:before{content:"\e8a8";content:var(--icon-content-google,"")}.next-icon-alipay:before{content:"\e8a7";content:var(--icon-content-alipay,"")}.next-icon-server_fault:before{content:"\e8a6";content:var(--icon-content-server_fault,"")}.next-icon-facebook:before{content:"\e8a5";content:var(--icon-content-facebook,"")}.next-icon-stackoverflow:before{content:"\e8a4";content:var(--icon-content-stackoverflow,"")}.next-icon-naver:before{content:"\e8a2";content:var(--icon-content-naver,"")}.next-icon-linkedin:before{content:"\e8a1";content:var(--icon-content-linkedin,"")}.next-icon-dingtalk1:before{content:"\e8a0";content:var(--icon-content-dingtalk1,"")}.next-icon-applets:before{content:"\e89f";content:var(--icon-content-applets,"")}.next-icon-SQL:before{content:"\e89e";content:var(--icon-content-SQL,"")}.next-icon-Hatch:before{content:"\e89d";content:var(--icon-content-Hatch,"")}.next-icon-package_fill:before{content:"\e89c";content:var(--icon-content-package_fill,"")}.next-icon-package:before{content:"\e89b";content:var(--icon-content-package,"")}.next-icon-remote_control:before{content:"\e89a";content:var(--icon-content-remote_control,"")}.next-icon-layer:before{content:"\e899";content:var(--icon-content-layer,"")}.next-icon-layer_fill:before{content:"\e898";content:var(--icon-content-layer_fill,"")}.next-icon-folders:before{content:"\e897";content:var(--icon-content-folders,"")}.next-icon-document_task:before{content:"\e896";content:var(--icon-content-document_task,"")}.next-icon-flow:before{content:"\e895";content:var(--icon-content-flow,"")}.next-icon-document:before{content:"\e894";content:var(--icon-content-document,"")}.next-icon-document_download:before{content:"\e893";content:var(--icon-content-document_download,"")}.next-icon-folder_add:before{content:"\e892";content:var(--icon-content-folder_add,"")}.next-icon-database_plus_fill:before{content:"\e891";content:var(--icon-content-database_plus_fill,"")}.next-icon-document_add:before{content:"\e88d";content:var(--icon-content-document_add,"")}.next-icon-database_plus:before{content:"\e88c";content:var(--icon-content-database_plus,"")}.next-icon-database_fill:before{content:"\e88a";content:var(--icon-content-database_fill,"")}.next-icon-chart_pie:before{content:"\e886";content:var(--icon-content-chart_pie,"")}.next-icon-bug_report:before{content:"\e881";content:var(--icon-content-bug_report,"")}.next-icon-copy_fill:before{content:"\e87c";content:var(--icon-content-copy_fill,"")}.next-icon-chart_relation:before{content:"\e953";content:var(--icon-content-chart_relation,"")}.next-icon-terminal_fill:before{content:"\e952";content:var(--icon-content-terminal_fill,"")}.next-icon-scroll_mode:before{content:"\e951";content:var(--icon-content-scroll_mode,"")}.next-icon-step_mode:before{content:"\e950";content:var(--icon-content-step_mode,"")}.next-icon-structured_data:before{content:"\e94f";content:var(--icon-content-structured_data,"")}.next-icon-trainin:before{content:"\e94e";content:var(--icon-content-trainin,"")}.next-icon-screen:before{content:"\e94d";content:var(--icon-content-screen,"")}.next-icon-screen_monitoring:before{content:"\e94c";content:var(--icon-content-screen_monitoring,"")}.next-icon-screen_error:before{content:"\e94b";content:var(--icon-content-screen_error,"")}.next-icon-screen_code:before{content:"\e94a";content:var(--icon-content-screen_code,"")}.next-icon-screen_arrow_right:before{content:"\e949";content:var(--icon-content-screen_arrow_right,"")}.next-icon-screen_check:before{content:"\e948";content:var(--icon-content-screen_check,"")}.next-icon-resource_setting:before{content:"\e947";content:var(--icon-content-resource_setting,"")}.next-icon-screen_arrow_left:before{content:"\e946";content:var(--icon-content-screen_arrow_left,"")}.next-icon-pin_fixed:before{content:"\e945";content:var(--icon-content-pin_fixed,"")}.next-icon-pin:before{content:"\e944";content:var(--icon-content-pin,"")}.next-icon-pic_side:before{content:"\e943";content:var(--icon-content-pic_side,"")}.next-icon-recharge:before{content:"\e942";content:var(--icon-content-recharge,"")}.next-icon-pic_side_fill:before{content:"\e941";content:var(--icon-content-pic_side_fill,"")}.next-icon-pic_center:before{content:"\e940";content:var(--icon-content-pic_center,"")}.next-icon-pic_center_fill:before{content:"\e93f";content:var(--icon-content-pic_center_fill,"")}.next-icon-paper_plane_fill:before{content:"\e93e";content:var(--icon-content-paper_plane_fill,"")}.next-icon-new_releases:before{content:"\e93d";content:var(--icon-content-new_releases,"")}.next-icon-more:before{content:"\e93c";content:var(--icon-content-more,"")}.next-icon-mobile_check:before{content:"\e93b";content:var(--icon-content-mobile_check,"")}.next-icon-mobile_error:before{content:"\e93a";content:var(--icon-content-mobile_error,"")}.next-icon-map_fill:before{content:"\e939";content:var(--icon-content-map_fill,"")}.next-icon-mobile:before{content:"\e938";content:var(--icon-content-mobile,"")}.next-icon-management_fill:before{content:"\e937";content:var(--icon-content-management_fill,"")}.next-icon-inbox:before{content:"\e936";content:var(--icon-content-inbox,"")}.next-icon-gallery_view:before{content:"\e935";content:var(--icon-content-gallery_view,"")}.next-icon-inbox_fill:before{content:"\e934";content:var(--icon-content-inbox_fill,"")}.next-icon-external_link:before{content:"\e933";content:var(--icon-content-external_link,"")}.next-icon-drag1:before{content:"\e932";content:var(--icon-content-drag1,"")}.next-icon-display_arrow_right:before{content:"\e931";content:var(--icon-content-display_arrow_right,"")}.next-icon-display_arrow_left:before{content:"\e930";content:var(--icon-content-display_arrow_left,"")}.next-icon-comment_fill:before{content:"\e92f";content:var(--icon-content-comment_fill,"")}.next-icon-cloud_upload:before{content:"\e92e";content:var(--icon-content-cloud_upload,"")}.next-icon-comment_lines:before{content:"\e92d";content:var(--icon-content-comment_lines,"")}.next-icon-cloud_machine:before{content:"\e92c";content:var(--icon-content-cloud_machine,"")}.next-icon-cloud_download:before{content:"\e92b";content:var(--icon-content-cloud_download,"")}.next-icon-cloud_upload_fill:before{content:"\e92a";content:var(--icon-content-cloud_upload_fill,"")}.next-icon-cloud_machine_fill:before{content:"\e929";content:var(--icon-content-cloud_machine_fill,"")}.next-icon-chart_scatter_plot:before{content:"\e928";content:var(--icon-content-chart_scatter_plot,"")}.next-icon-cloud_download_fill:before{content:"\e927";content:var(--icon-content-cloud_download_fill,"")}.next-icon-box_fill:before{content:"\e926";content:var(--icon-content-box_fill,"")}.next-icon-chart_scatter_plot_fill:before{content:"\e925";content:var(--icon-content-chart_scatter_plot_fill,"")}.next-icon-border_verticle:before{content:"\e923";content:var(--icon-content-border_verticle,"")}.next-icon-chart_area:before{content:"\e922";content:var(--icon-content-chart_area,"")}.next-icon-application_group:before{content:"\e921";content:var(--icon-content-application_group,"")}.next-icon-application:before{content:"\e920";content:var(--icon-content-application,"")}.next-icon-border_verticle_fill:before{content:"\e91f";content:var(--icon-content-border_verticle_fill,"")}.next-icon-accesskey:before{content:"\e91e";content:var(--icon-content-accesskey,"")}.next-icon-align_horizontal_right:before{content:"\e91d";content:var(--icon-content-align_horizontal_right,"")}.next-icon-all_fill:before{content:"\e91c";content:var(--icon-content-all_fill,"")}.next-icon-align_vertical_bottom_fill:before{content:"\e91b";content:var(--icon-content-align_vertical_bottom_fill,"")}.next-icon-align_vertical_top_fill:before{content:"\e91a";content:var(--icon-content-align_vertical_top_fill,"")}.next-icon-align_horizontal_right_fill:before{content:"\e919";content:var(--icon-content-align_horizontal_right_fill,"")}.next-icon-align_vertical_top:before{content:"\e918";content:var(--icon-content-align_vertical_top,"")}.next-icon-align_horizontal_left:before{content:"\e917";content:var(--icon-content-align_horizontal_left,"")}.next-icon-align_horizontal_left_fill:before{content:"\e916";content:var(--icon-content-align_horizontal_left_fill,"")}.next-icon-align_horizontal_center_fill:before{content:"\e915";content:var(--icon-content-align_horizontal_center_fill,"")}.next-icon-Alignverticalbottom:before{content:"\e914";content:var(--icon-content-Alignverticalbottom,"")}.next-icon-align_horizontal_center:before{content:"\e913";content:var(--icon-content-align_horizontal_center,"")}.next-icon-zoom_out:before{content:"\e912";content:var(--icon-content-zoom_out,"")}.next-icon-zoom_in:before{content:"\e911";content:var(--icon-content-zoom_in,"")}.next-icon-wifi:before{content:"\e910";content:var(--icon-content-wifi,"")}.next-icon-view:before{content:"\e90f";content:var(--icon-content-view,"")}.next-icon-view_off:before{content:"\e90e";content:var(--icon-content-view_off,"")}.next-icon-unlock_fill:before{content:"\e90d";content:var(--icon-content-unlock_fill,"")}.next-icon-view_off_fill:before{content:"\e90c";content:var(--icon-content-view_off_fill,"")}.next-icon-time:before{content:"\e90b";content:var(--icon-content-time,"")}.next-icon-time_fill:before{content:"\e90a";content:var(--icon-content-time_fill,"")}.next-icon-setting:before{content:"\e909";content:var(--icon-content-setting,"")}.next-icon-tag_fill:before{content:"\e908";content:var(--icon-content-tag_fill,"")}.next-icon-share_file:before{content:"\e907";content:var(--icon-content-share_file,"")}.next-icon-phonecall:before{content:"\e906";content:var(--icon-content-phonecall,"")}.next-icon-phonecall_off:before{content:"\e905";content:var(--icon-content-phonecall_off,"")}.next-icon-print_fill:before{content:"\e904";content:var(--icon-content-print_fill,"")}.next-icon-renew:before{content:"\e903";content:var(--icon-content-renew,"")}.next-icon-order:before{content:"\e902";content:var(--icon-content-order,"")}.next-icon-order_unread:before{content:"\e901";content:var(--icon-content-order_unread,"")}.next-icon-notification_off_fill:before{content:"\e900";content:var(--icon-content-notification_off_fill,"")}.next-icon-notification_fill:before{content:"\e8ff";content:var(--icon-content-notification_fill,"")}.next-icon-notification_off:before{content:"\e8fe";content:var(--icon-content-notification_off,"")}.next-icon-notification:before{content:"\e8fd";content:var(--icon-content-notification,"")}.next-icon-new:before{content:"\e8fc";content:var(--icon-content-new,"")}.next-icon-message:before{content:"\e8fb";content:var(--icon-content-message,"")}.next-icon-message_unread:before{content:"\e8fa";content:var(--icon-content-message_unread,"")}.next-icon-lock_fill:before{content:"\e8f9";content:var(--icon-content-lock_fill,"")}.next-icon-lightbulb_fill:before{content:"\e8f8";content:var(--icon-content-lightbulb_fill,"")}.next-icon-hourglass:before{content:"\e8f7";content:var(--icon-content-hourglass,"")}.next-icon-hourglass_fill:before{content:"\e8f6";content:var(--icon-content-hourglass_fill,"")}.next-icon-image1:before{content:"\e8f5";content:var(--icon-content-image1,"")}.next-icon-hot:before{content:"\e8f4";content:var(--icon-content-hot,"")}.next-icon-et:before{content:"\e8f3";content:var(--icon-content-et,"")}.next-icon-filter_fill:before{content:"\e8f2";content:var(--icon-content-filter_fill,"")}.next-icon-flag_fill:before{content:"\e8f1";content:var(--icon-content-flag_fill,"")}.next-icon-email_fill:before{content:"\e8f0";content:var(--icon-content-email_fill,"")}.next-icon-discount:before{content:"\e8ef";content:var(--icon-content-discount,"")}.next-icon-delete_fill:before{content:"\e8ee";content:var(--icon-content-delete_fill,"")}.next-icon-customer_sercive:before{content:"\e8ed";content:var(--icon-content-customer_sercive,"")}.next-icon-edit_fill:before{content:"\e8ec";content:var(--icon-content-edit_fill,"")}.next-icon-cart_with:before{content:"\e8eb";content:var(--icon-content-cart_with,"")}.next-icon-cart_fill:before{content:"\e8ea";content:var(--icon-content-cart_fill,"")}.next-icon-credits_fill:before{content:"\e8e9";content:var(--icon-content-credits_fill,"")}.next-icon-cart_empty:before{content:"\e8e8";content:var(--icon-content-cart_empty,"")}.next-icon-calculator_fill:before{content:"\e8e7";content:var(--icon-content-calculator_fill,"")}.next-icon-credits:before{content:"\e8e6";content:var(--icon-content-credits,"")}.next-icon-balance_fill:before{content:"\e8e5";content:var(--icon-content-balance_fill,"")}.next-icon-calculator:before{content:"\e8e4";content:var(--icon-content-calculator,"")}.next-icon-balance1:before{content:"\e8e3";content:var(--icon-content-balance1,"")}.next-icon-alert:before{content:"\e8e2";content:var(--icon-content-alert,"")}.next-icon-plus_fill:before{content:"\e8e1";content:var(--icon-content-plus_fill,"")}.next-icon-stop_fill:before{content:"\e8e0";content:var(--icon-content-stop_fill,"")}.next-icon-stop_outline:before{content:"\e8df";content:var(--icon-content-stop_outline,"")}.next-icon-plus_circle:before{content:"\e8de";content:var(--icon-content-plus_circle,"")}.next-icon-navigation:before{content:"\e8dd";content:var(--icon-content-navigation,"")}.next-icon-sort_circle:before{content:"\e8dc";content:var(--icon-content-sort_circle,"")}.next-icon-play_outline_fill:before{content:"\e8db";content:var(--icon-content-play_outline_fill,"")}.next-icon-play_outline:before{content:"\e8da";content:var(--icon-content-play_outline,"")}.next-icon-power_off:before{content:"\e8d9";content:var(--icon-content-power_off,"")}.next-icon-play_fill:before{content:"\e8d8";content:var(--icon-content-play_fill,"")}.next-icon-minus_fill:before{content:"\e8d7";content:var(--icon-content-minus_fill,"")}.next-icon-minus_circle:before{content:"\e8d6";content:var(--icon-content-minus_circle,"")}.next-icon-enlarge:before{content:"\e8d5";content:var(--icon-content-enlarge,"")}.next-icon-pause_outline:before{content:"\e8d4";content:var(--icon-content-pause_outline,"")}.next-icon-enlarge_fill:before{content:"\e8d3";content:var(--icon-content-enlarge_fill,"")}.next-icon-pause_fill:before{content:"\e8d2";content:var(--icon-content-pause_fill,"")}.next-icon-chevron_sort:before{content:"\e8d1";content:var(--icon-content-chevron_sort,"")}.next-icon-button_sort:before{content:"\e8d0";content:var(--icon-content-button_sort,"")}.next-icon-compress_fill:before{content:"\e8cf";content:var(--icon-content-compress_fill,"")}.next-icon-1688:before{content:"\e8a3";content:var(--icon-content-1688,"")}.next-icon-up_to_top:before{content:"\e876";content:var(--icon-content-up_to_top,"")}.next-icon-forward:before{content:"\e875";content:var(--icon-content-forward,"")}.next-icon-page_last:before{content:"\e874";content:var(--icon-content-page_last,"")}.next-icon-page_first:before{content:"\e872";content:var(--icon-content-page_first,"")}.next-icon-down_to_bottom:before{content:"\e871";content:var(--icon-content-down_to_bottom,"")}.next-icon-expand:before{content:"\e79c";content:var(--icon-content-expand,"")}.next-icon-double_up:before{content:"\e79b";content:var(--icon-content-double_up,"")}.next-icon-double_right:before{content:"\e78b";content:var(--icon-content-double_right,"")}.next-icon-double_left:before{content:"\e789";content:var(--icon-content-double_left,"")}.next-icon-double_down:before{content:"\e788";content:var(--icon-content-double_down,"")}.next-icon-collapse:before{content:"\e787";content:var(--icon-content-collapse,"")}.next-icon-button_right:before{content:"\e786";content:var(--icon-content-button_right,"")}.next-icon-button_up:before{content:"\e785";content:var(--icon-content-button_up,"")}.next-icon-arrow__down:before{content:"\e784";content:var(--icon-content-arrow__down,"")}.next-icon-button_down:before{content:"\e783";content:var(--icon-content-button_down,"")}.next-icon-back:before{content:"\e782";content:var(--icon-content-back,"")}.next-icon-button_left:before{content:"\e781";content:var(--icon-content-button_left,"")}.next-icon-arrow__up:before{content:"\e77e";content:var(--icon-content-arrow__up,"")}.next-icon-down:before{content:"\e620";content:var(--icon-content-down,"")}.next-icon-up:before{content:"\e61b";content:var(--icon-content-up,"")}.next-icon-zhankai:before{content:"\e61a";content:var(--icon-content-zhankai,"")}.next-icon-shouqi:before{content:"\e618";content:var(--icon-content-shouqi,"")}.next-icon-xiexian:before{content:"\e617";content:var(--icon-content-xiexian,"")}.next-icon-xiegang:before{content:"\e615";content:var(--icon-content-xiegang,"")}.next-icon-nail-fixed:before{content:"\e79f";content:var(--icon-content-nail-fixed,"")}.next-icon-wind-edit:before{content:"\e7a0";content:var(--icon-content-wind-edit,"")}.next-icon-dollar:before{content:"\e7a1";content:var(--icon-content-dollar,"")}.next-icon-transanction:before{content:"\e7a2";content:var(--icon-content-transanction,"")}.next-icon-filter-fill:before{content:"\e7a3";content:var(--icon-content-filter-fill,"")}.next-icon-all-fill:before{content:"\e7a4";content:var(--icon-content-all-fill,"")}.next-icon-databaseplus-fill:before{content:"\e7a5";content:var(--icon-content-databaseplus-fill,"")}.next-icon-database-fill:before{content:"\e7a6";content:var(--icon-content-database-fill,"")}.next-icon-commentlines-fill:before{content:"\e7a7";content:var(--icon-content-commentlines-fill,"")}.next-icon-commentdots-fill:before{content:"\e7a8";content:var(--icon-content-commentdots-fill,"")}.next-icon-paperplane-fill:before{content:"\e7a9";content:var(--icon-content-paperplane-fill,"")}.next-icon-eyeslash-fill:before{content:"\e7aa";content:var(--icon-content-eyeslash-fill,"")}.next-icon-eye-fill:before{content:"\e7ab";content:var(--icon-content-eye-fill,"")}.next-icon-lightbulb-fill:before{content:"\e7ac";content:var(--icon-content-lightbulb-fill,"")}.next-icon-flag-fill:before{content:"\e7ad";content:var(--icon-content-flag-fill,"")}.next-icon-tag-fill:before{content:"\e7ae";content:var(--icon-content-tag-fill,"")}.next-icon-position-fill:before{content:"\e7af";content:var(--icon-content-position-fill,"")}.next-icon-location-fill:before{content:"\e7b0";content:var(--icon-content-location-fill,"")}.next-icon-map-fill:before{content:"\e7b1";content:var(--icon-content-map-fill,"")}.next-icon-inboxin-fill:before{content:"\e7b2";content:var(--icon-content-inboxin-fill,"")}.next-icon-box-fill:before{content:"\e7b3";content:var(--icon-content-box-fill,"")}.next-icon-databaseset-fill:before{content:"\e7b4";content:var(--icon-content-databaseset-fill,"")}.next-icon-layergroup-fill:before{content:"\e7b5";content:var(--icon-content-layergroup-fill,"")}.next-icon-cry-fill:before{content:"\e7b6";content:var(--icon-content-cry-fill,"")}.next-icon-smile-fill:before{content:"\e7b7";content:var(--icon-content-smile-fill,"")}.next-icon-unlock-fill:before{content:"\e7b8";content:var(--icon-content-unlock-fill,"")}.next-icon-lock-fill:before{content:"\e7b9";content:var(--icon-content-lock-fill,"")}.next-icon-wind-loading:before{content:"\e61c";content:var(--icon-content-wind-loading,"")}.next-icon-shoppingcart:before{content:"\e968";content:var(--icon-content-shoppingcart,"")}.next-icon-Group:before{content:"\e603";content:var(--icon-content-Group,"")}.next-icon-Group1:before{content:"\e604";content:var(--icon-content-Group1,"")}.next-icon-Xconsole:before{content:"\e609";content:var(--icon-content-Xconsole,"")}.next-icon-Directory-tree:before{content:"\e974";content:var(--icon-content-Directory-tree,"")}.next-icon-calendar1:before{content:"\e689";content:var(--icon-content-calendar1,"")}.next-icon-success1:before{content:"\e68b";content:var(--icon-content-success1,"")}.next-icon-warning1:before{content:"\e68c";content:var(--icon-content-warning1,"")}.next-icon-search1:before{content:"\e68d";content:var(--icon-content-search1,"")}.next-icon-prompt1:before{content:"\e690";content:var(--icon-content-prompt1,"")}.next-icon-sorting1:before{content:"\e692";content:var(--icon-content-sorting1,"")}.next-icon-ascending1:before{content:"\e693";content:var(--icon-content-ascending1,"")}.next-icon-descending1:before{content:"\e694";content:var(--icon-content-descending1,"")}.next-icon-upload1:before{content:"\e6b9";content:var(--icon-content-upload1,"")}.next-icon-success-filling1:before{content:"\e695";content:var(--icon-content-success-filling1,"")}.next-icon-picture1:before{content:"\e696";content:var(--icon-content-picture1,"")}.next-icon-close1:before{content:"\e697";content:var(--icon-content-close1,"")}.next-icon-semi-select1:before{content:"\e698";content:var(--icon-content-semi-select1,"")}.next-icon-loading1:before{content:"\e69b";content:var(--icon-content-loading1,"")}.next-icon-arrow-double-left1:before{content:"\e69c";content:var(--icon-content-arrow-double-left1,"")}.next-icon-arrow-double-right1:before{content:"\e69d";content:var(--icon-content-arrow-double-right1,"")}.next-icon-delete-filling1:before{content:"\e6a2";content:var(--icon-content-delete-filling1,"")}.next-icon-arrow-left1:before{content:"\e6a3";content:var(--icon-content-arrow-left1,"")}.next-icon-accesskeys:before{content:"\e650";content:var(--icon-content-accesskeys,"")}.next-icon-management:before{content:"\e6e2";content:var(--icon-content-management,"")}.next-icon-aliyun-logo:before{content:"\e600";content:var(--icon-content-aliyun-logo,"")}.next-icon-drag:before{content:"\e769";content:var(--icon-content-drag,"")}.next-icon-ellipsis-vertical:before{content:"\e76a";content:var(--icon-content-ellipsis-vertical,"")}.next-icon-gallery-view:before{content:"\e76b";content:var(--icon-content-gallery-view,"")}.next-icon-WIFI:before{content:"\e76c";content:var(--icon-content-WIFI,"")}.next-icon-bug-report:before{content:"\e76d";content:var(--icon-content-bug-report,"")}.next-icon-qrcode:before{content:"\e76e";content:var(--icon-content-qrcode,"")}.next-icon-scan:before{content:"\e76f";content:var(--icon-content-scan,"")}.next-icon-cut:before{content:"\e770";content:var(--icon-content-cut,"")}.next-icon-gift:before{content:"\e771";content:var(--icon-content-gift,"")}.next-icon-link:before{content:"\e772";content:var(--icon-content-link,"")}.next-icon-poweroff:before{content:"\e774";content:var(--icon-content-poweroff,"")}.next-icon-key:before{content:"\e775";content:var(--icon-content-key,"")}.next-icon-safety-certificate:before{content:"\e776";content:var(--icon-content-safety-certificate,"")}.next-icon-supervise:before{content:"\e777";content:var(--icon-content-supervise,"")}.next-icon-tag-subscipt:before{content:"\e78a";content:var(--icon-content-tag-subscipt,"")}.next-icon-chart-pie-alt:before{content:"\e78c";content:var(--icon-content-chart-pie-alt,"")}.next-icon-chart-relation:before{content:"\e78d";content:var(--icon-content-chart-relation,"")}.next-icon-chart-scatter-plot:before{content:"\e78e";content:var(--icon-content-chart-scatter-plot,"")}.next-icon-chart-area:before{content:"\e78f";content:var(--icon-content-chart-area,"")}.next-icon-chart-line:before{content:"\e790";content:var(--icon-content-chart-line,"")}.next-icon-display-code:before{content:"\e792";content:var(--icon-content-display-code,"")}.next-icon-display-arrow-right:before{content:"\e793";content:var(--icon-content-display-arrow-right,"")}.next-icon-display-arrow-left:before{content:"\e794";content:var(--icon-content-display-arrow-left,"")}.next-icon-laptop-error:before{content:"\e795";content:var(--icon-content-laptop-error,"")}.next-icon-laptop-check:before{content:"\e796";content:var(--icon-content-laptop-check,"")}.next-icon-laptop:before{content:"\e797";content:var(--icon-content-laptop,"")}.next-icon-mobile-error:before{content:"\e798";content:var(--icon-content-mobile-error,"")}.next-icon-mobile-check:before{content:"\e799";content:var(--icon-content-mobile-check,"")}.next-icon-mobile-alt:before{content:"\e79a";content:var(--icon-content-mobile-alt,"")}.next-icon-aliwangwang:before{content:"\e79d";content:var(--icon-content-aliwangwang,"")}.next-icon-nail:before{content:"\e79e";content:var(--icon-content-nail,"")}.next-icon-sort:before{content:"\e842";content:var(--icon-content-sort,"")}.next-icon-sort-down:before{content:"\e843";content:var(--icon-content-sort-down,"")}.next-icon-sort-up:before{content:"\e844";content:var(--icon-content-sort-up,"")}.next-icon-caret-right:before{content:"\e845";content:var(--icon-content-caret-right,"")}.next-icon-caret-left:before{content:"\e846";content:var(--icon-content-caret-left,"")}.next-icon-arrows-v:before{content:"\e847";content:var(--icon-content-arrows-v,"")}.next-icon-angle-double-down:before{content:"\e848";content:var(--icon-content-angle-double-down,"")}.next-icon-angle-double-up:before{content:"\e849";content:var(--icon-content-angle-double-up,"")}.next-icon-angle-double-right:before{content:"\e84a";content:var(--icon-content-angle-double-right,"")}.next-icon-angle-double-left:before{content:"\e84b";content:var(--icon-content-angle-double-left,"")}.next-icon-angle-down:before{content:"\e84c";content:var(--icon-content-angle-down,"")}.next-icon-angle-up:before{content:"\e84d";content:var(--icon-content-angle-up,"")}.next-icon-angle-right:before{content:"\e84e";content:var(--icon-content-angle-right,"")}.next-icon-angle-left:before{content:"\e84f";content:var(--icon-content-angle-left,"")}.next-icon-paperclip:before{content:"\e850";content:var(--icon-content-paperclip,"")}.next-icon-connection:before{content:"\e851";content:var(--icon-content-connection,"")}.next-icon-training:before{content:"\e853";content:var(--icon-content-training,"")}.next-icon-process:before{content:"\e854";content:var(--icon-content-process,"")}.next-icon-news:before{content:"\e855";content:var(--icon-content-news,"")}.next-icon-save:before{content:"\e856";content:var(--icon-content-save,"")}.next-icon-print:before{content:"\e857";content:var(--icon-content-print,"")}.next-icon-new-releases:before{content:"\e858";content:var(--icon-content-new-releases,"")}.next-icon-release:before{content:"\e85a";content:var(--icon-content-release,"")}.next-icon-wind-warning:before{content:"\e85b";content:var(--icon-content-wind-warning,"")}.next-icon-backspace:before{content:"\e85c";content:var(--icon-content-backspace,"")}.next-icon-gem:before{content:"\e85d";content:var(--icon-content-gem,"")}.next-icon-integral:before{content:"\e85e";content:var(--icon-content-integral,"")}.next-icon-star-circle1:before{content:"\e85f";content:var(--icon-content-star-circle1,"")}.next-icon-user-circle:before{content:"\e860";content:var(--icon-content-user-circle,"")}.next-icon-cloud-machine-fill:before{content:"\e861";content:var(--icon-content-cloud-machine-fill,"")}.next-icon-cloud-machine:before{content:"\e862";content:var(--icon-content-cloud-machine,"")}.next-icon-terminal-fill:before{content:"\e863";content:var(--icon-content-terminal-fill,"")}.next-icon-terminal:before{content:"\e864";content:var(--icon-content-terminal,"")}.next-icon-shopping-cart:before{content:"\e865";content:var(--icon-content-shopping-cart,"")}.next-icon-folder-open:before{content:"\e866";content:var(--icon-content-folder-open,"")}.next-icon-resource:before{content:"\e867";content:var(--icon-content-resource,"")}.next-icon-rank:before{content:"\e86a";content:var(--icon-content-rank,"")}.next-icon-sync-alt:before{content:"\e86b";content:var(--icon-content-sync-alt,"")}.next-icon-compass:before{content:"\e86c";content:var(--icon-content-compass,"")}.next-icon-arrow-alt-from-top:before{content:"\e86d";content:var(--icon-content-arrow-alt-from-top,"")}.next-icon-arrow-alt-from-bottom:before{content:"\e86e";content:var(--icon-content-arrow-alt-from-bottom,"")}.next-icon-menu:before{content:"\e86f";content:var(--icon-content-menu,"")}.next-icon-icon-drag:before{content:"\e870";content:var(--icon-content-icon-drag,"")}.next-icon-share:before{content:"\e873";content:var(--icon-content-share,"")}.next-icon-arrow-sortdown-smal:before{content:"\e877";content:var(--icon-content-arrow-sortdown-smal,"")}.next-icon-minus-square-fill:before{content:"\e878";content:var(--icon-content-minus-square-fill,"")}.next-icon-plus-square-fill:before{content:"\e879";content:var(--icon-content-plus-square-fill,"")}.next-icon-minus-square:before{content:"\e87a";content:var(--icon-content-minus-square,"")}.next-icon-plus-square:before{content:"\e87b";content:var(--icon-content-plus-square,"")}.next-icon-stepmode:before{content:"\e87d";content:var(--icon-content-stepmode,"")}.next-icon-scrollingmode:before{content:"\e87e";content:var(--icon-content-scrollingmode,"")}.next-icon-waiting-fill:before{content:"\e882";content:var(--icon-content-waiting-fill,"")}.next-icon-waiting:before{content:"\e883";content:var(--icon-content-waiting,"")}.next-icon-right-arrow-rect:before{content:"\e884";content:var(--icon-content-right-arrow-rect,"")}.next-icon-left-arrow-rect:before{content:"\e885";content:var(--icon-content-left-arrow-rect,"")}.next-icon-bell:before{content:"\e887";content:var(--icon-content-bell,"")}.next-icon-structured-data:before{content:"\e888";content:var(--icon-content-structured-data,"")}.next-icon-vector:before{content:"\e889";content:var(--icon-content-vector,"")}.next-icon-home:before{content:"\e88b";content:var(--icon-content-home,"")}.next-icon-monitoring:before{content:"\e88e";content:var(--icon-content-monitoring,"")}.next-icon-diagnose:before{content:"\e88f";content:var(--icon-content-diagnose,"")}.next-icon-add-subset:before{content:"\e890";content:var(--icon-content-add-subset,"")}.next-icon-cry1:before{content:"\e63c";content:var(--icon-content-cry1,"")}.next-icon-email1:before{content:"\e663";content:var(--icon-content-email1,"")}.next-icon-help1:before{content:"\e63f";content:var(--icon-content-help1,"")}.next-icon-refresh1:before{content:"\e640";content:var(--icon-content-refresh1,"")}.next-icon-set1:before{content:"\e641";content:var(--icon-content-set1,"")}.next-icon-account1:before{content:"\e664";content:var(--icon-content-account1,"")}.next-icon-atm1:before{content:"\e643";content:var(--icon-content-atm1,"")}.next-icon-clock1:before{content:"\e644";content:var(--icon-content-clock1,"")}.next-icon-attachment1:before{content:"\e645";content:var(--icon-content-attachment1,"")}.next-icon-filter1:before{content:"\e657";content:var(--icon-content-filter1,"")}.next-icon-download1:before{content:"\e668";content:var(--icon-content-download1,"")}.next-icon-ellipsis1:before{content:"\e674";content:var(--icon-content-ellipsis1,"")}.next-icon-favorites-filling1:before{content:"\e676";content:var(--icon-content-favorites-filling1,"")}.next-icon-smile1:before{content:"\e67b";content:var(--icon-content-smile1,"")}.next-icon-arrow-right1:before{content:"\e67e";content:var(--icon-content-arrow-right1,"")}.next-icon-arrow-down1:before{content:"\e680";content:var(--icon-content-arrow-down1,"")}.next-icon-arrow-up1:before{content:"\e681";content:var(--icon-content-arrow-up1,"")}.next-icon-add1:before{content:"\e682";content:var(--icon-content-add1,"")}.next-icon-minus1:before{content:"\e684";content:var(--icon-content-minus1,"")}.next-icon-edit1:before{content:"\e685";content:var(--icon-content-edit1,"")}.next-icon-error1:before{content:"\e686";content:var(--icon-content-error1,"")}.next-icon-select1:before{content:"\e687";content:var(--icon-content-select1,"")}.next-icon-ashbin1:before{content:"\e688";content:var(--icon-content-ashbin1,"")}.next-icon-clouddownload-fill:before{content:"\e7d9";content:var(--icon-content-clouddownload-fill,"")}.next-icon-cloudupload-fill:before{content:"\e7da";content:var(--icon-content-cloudupload-fill,"")}.next-icon-exchange-fill:before{content:"\e7db";content:var(--icon-content-exchange-fill,"")}.next-icon-info-circle-fill:before{content:"\e7dc";content:var(--icon-content-info-circle-fill,"")}.next-icon-question-circle-fill:before{content:"\e7dd";content:var(--icon-content-question-circle-fill,"")}.next-icon-exclamationcircle-f:before{content:"\e7de";content:var(--icon-content-exclamationcircle-f,"")}.next-icon-minus-circle-fill:before{content:"\e7df";content:var(--icon-content-minus-circle-fill,"")}.next-icon-plus-circle-fill:before{content:"\e7e0";content:var(--icon-content-plus-circle-fill,"")}.next-icon-times-circle-fill:before{content:"\e7e1";content:var(--icon-content-times-circle-fill,"")}.next-icon-check-circle-fill:before{content:"\e7e2";content:var(--icon-content-check-circle-fill,"")}.next-icon-compressalt-fill:before{content:"\e7e3";content:var(--icon-content-compressalt-fill,"")}.next-icon-expandalt-fill:before{content:"\e7e4";content:var(--icon-content-expandalt-fill,"")}.next-icon-wind-filter:before{content:"\e7e5";content:var(--icon-content-wind-filter,"")}.next-icon-all:before{content:"\e7e6";content:var(--icon-content-all,"")}.next-icon-database-plus:before{content:"\e7e7";content:var(--icon-content-database-plus,"")}.next-icon-database:before{content:"\e7e8";content:var(--icon-content-database,"")}.next-icon-comment-lines:before{content:"\e7e9";content:var(--icon-content-comment-lines,"")}.next-icon-comment-dots:before{content:"\e7ea";content:var(--icon-content-comment-dots,"")}.next-icon-paper-plane:before{content:"\e7eb";content:var(--icon-content-paper-plane,"")}.next-icon-eye-slash:before{content:"\e7ec";content:var(--icon-content-eye-slash,"")}.next-icon-lightbulb:before{content:"\e7ef";content:var(--icon-content-lightbulb,"")}.next-icon-flag:before{content:"\e7f0";content:var(--icon-content-flag,"")}.next-icon-tag:before{content:"\e7f1";content:var(--icon-content-tag,"")}.next-icon-position:before{content:"\e7f2";content:var(--icon-content-position,"")}.next-icon-location:before{content:"\e7f3";content:var(--icon-content-location,"")}.next-icon-map:before{content:"\e7f4";content:var(--icon-content-map,"")}.next-icon-inbox-in:before{content:"\e7f5";content:var(--icon-content-inbox-in,"")}.next-icon-box:before{content:"\e7f6";content:var(--icon-content-box,"")}.next-icon-database-set:before{content:"\e7f7";content:var(--icon-content-database-set,"")}.next-icon-layer-group:before{content:"\e7f8";content:var(--icon-content-layer-group,"")}.next-icon-wind-cry:before{content:"\e7f9";content:var(--icon-content-wind-cry,"")}.next-icon-wind-smile:before{content:"\e7fa";content:var(--icon-content-wind-smile,"")}.next-icon-align-right:before{content:"\e7fd";content:var(--icon-content-align-right,"")}.next-icon-align-left:before{content:"\e7fe";content:var(--icon-content-align-left,"")}.next-icon-border-bottom:before{content:"\e7ff";content:var(--icon-content-border-bottom,"")}.next-icon-border-top:before{content:"\e800";content:var(--icon-content-border-top,"")}.next-icon-align-center:before{content:"\e801";content:var(--icon-content-align-center,"")}.next-icon-border-verticle:before{content:"\e802";content:var(--icon-content-border-verticle,"")}.next-icon-pic-center:before{content:"\e803";content:var(--icon-content-pic-center,"")}.next-icon-pic-side:before{content:"\e804";content:var(--icon-content-pic-side,"")}.next-icon-folder-plus:before{content:"\e805";content:var(--icon-content-folder-plus,"")}.next-icon-folder:before{content:"\e806";content:var(--icon-content-folder,"")}.next-icon-file-SQL1:before{content:"\e807";content:var(--icon-content-file-SQL1,"")}.next-icon-file-plus:before{content:"\e808";content:var(--icon-content-file-plus,"")}.next-icon-file:before{content:"\e809";content:var(--icon-content-file,"")}.next-icon-headset:before{content:"\e80b";content:var(--icon-content-headset,"")}.next-icon-phone:before{content:"\e80c";content:var(--icon-content-phone,"")}.next-icon-pausecircle:before{content:"\e80d";content:var(--icon-content-pausecircle,"")}.next-icon-stopcircle:before{content:"\e80e";content:var(--icon-content-stopcircle,"")}.next-icon-playcircle:before{content:"\e80f";content:var(--icon-content-playcircle,"")}.next-icon-delete:before{content:"\e810";content:var(--icon-content-delete,"")}.next-icon-wind-picture:before{content:"\e811";content:var(--icon-content-wind-picture,"")}.next-icon-mail:before{content:"\e812";content:var(--icon-content-mail,"")}.next-icon-like:before{content:"\e813";content:var(--icon-content-like,"")}.next-icon-collection:before{content:"\e814";content:var(--icon-content-collection,"")}.next-icon-user-group:before{content:"\e815";content:var(--icon-content-user-group,"")}.next-icon-account-plus:before{content:"\e816";content:var(--icon-content-account-plus,"")}.next-icon-wind-account:before{content:"\e817";content:var(--icon-content-wind-account,"")}.next-icon-cog:before{content:"\e818";content:var(--icon-content-cog,"")}.next-icon-wind-clock:before{content:"\e819";content:var(--icon-content-wind-clock,"")}.next-icon-calendar-alt:before{content:"\e81a";content:var(--icon-content-calendar-alt,"")}.next-icon-clouddownload:before{content:"\e81b";content:var(--icon-content-clouddownload,"")}.next-icon-cloudupload:before{content:"\e81c";content:var(--icon-content-cloudupload,"")}.next-icon-exchange:before{content:"\e81d";content:var(--icon-content-exchange,"")}.next-icon-info-circle:before{content:"\e81e";content:var(--icon-content-info-circle,"")}.next-icon-question-circle:before{content:"\e81f";content:var(--icon-content-question-circle,"")}.next-icon-exclamation-circle:before{content:"\e820";content:var(--icon-content-exclamation-circle,"")}.next-icon-minus-circle:before{content:"\e821";content:var(--icon-content-minus-circle,"")}.next-icon-plus-circle:before{content:"\e822";content:var(--icon-content-plus-circle,"")}.next-icon-times-circle:before{content:"\e823";content:var(--icon-content-times-circle,"")}.next-icon-check-circle:before{content:"\e824";content:var(--icon-content-check-circle,"")}.next-icon-compress-alt:before{content:"\e825";content:var(--icon-content-compress-alt,"")}.next-icon-expand-alt:before{content:"\e826";content:var(--icon-content-expand-alt,"")}.next-icon-ban:before{content:"\e827";content:var(--icon-content-ban,"")}.next-icon-wind-minus:before{content:"\e828";content:var(--icon-content-wind-minus,"")}.next-icon-plus:before{content:"\e829";content:var(--icon-content-plus,"")}.next-icon-times:before{content:"\e82a";content:var(--icon-content-times,"")}.next-icon-check:before{content:"\e82b";content:var(--icon-content-check,"")}.next-icon-search-minus:before{content:"\e82c";content:var(--icon-content-search-minus,"")}.next-icon-search-plus:before{content:"\e82d";content:var(--icon-content-search-plus,"")}.next-icon-wind-search:before{content:"\e82e";content:var(--icon-content-wind-search,"")}.next-icon-reply:before{content:"\e82f";content:var(--icon-content-reply,"")}.next-icon-undo:before{content:"\e830";content:var(--icon-content-undo,"")}.next-icon-redo:before{content:"\e831";content:var(--icon-content-redo,"")}.next-icon-external-link:before{content:"\e832";content:var(--icon-content-external-link,"")}.next-icon-arrows-alt:before{content:"\e833";content:var(--icon-content-arrows-alt,"")}.next-icon-indent:before{content:"\e834";content:var(--icon-content-indent,"")}.next-icon-outdent:before{content:"\e835";content:var(--icon-content-outdent,"")}.next-icon-wind-sorting:before{content:"\e836";content:var(--icon-content-wind-sorting,"")}.next-icon-wind-switch:before{content:"\e837";content:var(--icon-content-wind-switch,"")}.next-icon-wind-ascending:before{content:"\e838";content:var(--icon-content-wind-ascending,"")}.next-icon-wind-descending:before{content:"\e839";content:var(--icon-content-wind-descending,"")}.next-icon-wind-download:before{content:"\e83a";content:var(--icon-content-wind-download,"")}.next-icon-wind-upload:before{content:"\e83b";content:var(--icon-content-wind-upload,"")}.next-icon-arrow-to-bottom:before{content:"\e83c";content:var(--icon-content-arrow-to-bottom,"")}.next-icon-arrow-to-top:before{content:"\e83d";content:var(--icon-content-arrow-to-top,"")}.next-icon-long-arrow-down:before{content:"\e83e";content:var(--icon-content-long-arrow-down,"")}.next-icon-long-arrow-up:before{content:"\e83f";content:var(--icon-content-long-arrow-up,"")}.next-icon-wind-arrow-right:before{content:"\e840";content:var(--icon-content-wind-arrow-right,"")}.next-icon-wind-arrow-left:before{content:"\e841";content:var(--icon-content-wind-arrow-left,"")}.next-icon-huaban1341:before{content:"\e74a";content:var(--icon-content-huaban1341,"")}.next-icon-huaban161:before{content:"\e749";content:var(--icon-content-huaban161,"")}.next-icon-huaban31:before{content:"\e748";content:var(--icon-content-huaban31,"")}.next-icon-huaban32:before{content:"\e747";content:var(--icon-content-huaban32,"")}.next-icon-huaban1fuben59:before{content:"\e746";content:var(--icon-content-huaban1fuben59,"")}.next-icon-huaban1fuben63:before{content:"\e745";content:var(--icon-content-huaban1fuben63,"")}.next-icon-rili:before{content:"\e744";content:var(--icon-content-rili,"")}.next-icon-dengdai:before{content:"\e743";content:var(--icon-content-dengdai,"")}.next-icon-dayin1:before{content:"\e742";content:var(--icon-content-dayin1,"")}.next-icon-jian:before{content:"\e741";content:var(--icon-content-jian,"")}.next-icon-jia1:before{content:"\e740";content:var(--icon-content-jia1,"")}.next-icon-huixingzhen:before{content:"\e73f";content:var(--icon-content-huixingzhen,"")}.next-icon-gundongmoshi:before{content:"\e73e";content:var(--icon-content-gundongmoshi,"")}.next-icon-re:before{content:"\e73d";content:var(--icon-content-re,"")}.next-icon-xin:before{content:"\e73c";content:var(--icon-content-xin,"")}.next-icon-huaban114:before{content:"\e73b";content:var(--icon-content-huaban114,"")}.next-icon-huaban69:before{content:"\e73a";content:var(--icon-content-huaban69,"")}.next-icon-huaban8fuben6:before{content:"\e739";content:var(--icon-content-huaban8fuben6,"")}.next-icon-huaban1281:before{content:"\e738";content:var(--icon-content-huaban1281,"")}.next-icon-huaban8fuben9:before{content:"\e737";content:var(--icon-content-huaban8fuben9,"")}.next-icon-huaban126:before{content:"\e736";content:var(--icon-content-huaban126,"")}.next-icon-huaban2fuben:before{content:"\e735";content:var(--icon-content-huaban2fuben,"")}.next-icon-huaban1221:before{content:"\e734";content:var(--icon-content-huaban1221,"")}.next-icon-huaban2fuben5:before{content:"\e733";content:var(--icon-content-huaban2fuben5,"")}.next-icon-huaban16:before{content:"\e732";content:var(--icon-content-huaban16,"")}.next-icon-huaban124:before{content:"\e731";content:var(--icon-content-huaban124,"")}.next-icon-huaban103:before{content:"\e730";content:var(--icon-content-huaban103,"")}.next-icon-huaban8fuben12:before{content:"\e72f";content:var(--icon-content-huaban8fuben12,"")}.next-icon-huaban1231:before{content:"\e72e";content:var(--icon-content-huaban1231,"")}.next-icon-huaban2fuben4:before{content:"\e72d";content:var(--icon-content-huaban2fuben4,"")}.next-icon-huaban125:before{content:"\e72c";content:var(--icon-content-huaban125,"")}.next-icon-huaban17:before{content:"\e72b";content:var(--icon-content-huaban17,"")}.next-icon-huaban1042:before{content:"\e72a";content:var(--icon-content-huaban1042,"")}.next-icon-huaban98:before{content:"\e729";content:var(--icon-content-huaban98,"")}.next-icon-huaban21:before{content:"\e728";content:var(--icon-content-huaban21,"")}.next-icon-huaban921:before{content:"\e727";content:var(--icon-content-huaban921,"")}.next-icon-huaban27:before{content:"\e726";content:var(--icon-content-huaban27,"")}.next-icon-huaban25:before{content:"\e725";content:var(--icon-content-huaban25,"")}.next-icon-huaban24:before{content:"\e724";content:var(--icon-content-huaban24,"")}.next-icon-huaban26:before{content:"\e723";content:var(--icon-content-huaban26,"")}.next-icon-huaban23:before{content:"\e722";content:var(--icon-content-huaban23,"")}.next-icon-huaban22:before{content:"\e721";content:var(--icon-content-huaban22,"")}.next-icon-huaban13:before{content:"\e720";content:var(--icon-content-huaban13,"")}.next-icon-huaban28:before{content:"\e71f";content:var(--icon-content-huaban28,"")}.next-icon-huaban121:before{content:"\e71e";content:var(--icon-content-huaban121,"")}.next-icon-huaban11:before{content:"\e71d";content:var(--icon-content-huaban11,"")}.next-icon-huaban10:before{content:"\e71c";content:var(--icon-content-huaban10,"")}.next-icon-huaban33:before{content:"\e71b";content:var(--icon-content-huaban33,"")}.next-icon-huaban35:before{content:"\e71a";content:var(--icon-content-huaban35,"")}.next-icon-huaban34:before{content:"\e719";content:var(--icon-content-huaban34,"")}.next-icon-huaban831:before{content:"\e718";content:var(--icon-content-huaban831,"")}.next-icon-huaban1071:before{content:"\e717";content:var(--icon-content-huaban1071,"")}.next-icon-huaban45:before{content:"\e716";content:var(--icon-content-huaban45,"")}.next-icon-dollar1:before{content:"\e715";content:var(--icon-content-dollar1,"")}.next-icon-huaban801:before{content:"\e714";content:var(--icon-content-huaban801,"")}.next-icon-huaban7:before{content:"\e713";content:var(--icon-content-huaban7,"")}.next-icon-inboxin-fill1:before{content:"\e712";content:var(--icon-content-inboxin-fill1,"")}.next-icon-huaban123:before{content:"\e711";content:var(--icon-content-huaban123,"")}.next-icon-box-fill1:before{content:"\e710";content:var(--icon-content-box-fill1,"")}.next-icon-huaban122:before{content:"\e70f";content:var(--icon-content-huaban122,"")}.next-icon-tag-fill1:before{content:"\e70e";content:var(--icon-content-tag-fill1,"")}.next-icon-tag-:before{content:"\e70d";content:var(--icon-content-tag-,"")}.next-icon-transanction1:before{content:"\e70c";content:var(--icon-content-transanction1,"")}.next-icon-huaban63:before{content:"\e70b";content:var(--icon-content-huaban63,"")}.next-icon-huaban64:before{content:"\e70a";content:var(--icon-content-huaban64,"")}.next-icon-huaban64-copy:before{content:"\e709";content:var(--icon-content-huaban64-copy,"")}.next-icon-huaban97:before{content:"\e6ee";content:var(--icon-content-huaban97,"")}.next-icon-huaban94:before{content:"\e6ed";content:var(--icon-content-huaban94,"")}.next-icon-huaban1041:before{content:"\e6ec";content:var(--icon-content-huaban1041,"")}.next-icon-huaban9:before{content:"\e6eb";content:var(--icon-content-huaban9,"")}.next-icon-huaban3:before{content:"\e6ea";content:var(--icon-content-huaban3,"")}.next-icon-huaban4:before{content:"\e6e9";content:var(--icon-content-huaban4,"")}.next-icon-huaban811:before{content:"\e6e8";content:var(--icon-content-huaban811,"")}.next-icon-huaban79:before{content:"\e6e7";content:var(--icon-content-huaban79,"")}.next-icon-jia:before{content:"\e6e6";content:var(--icon-content-jia,"")}.next-icon-huaban1131:before{content:"\e6e5";content:var(--icon-content-huaban1131,"")}.next-icon-huaban51:before{content:"\e6e4";content:var(--icon-content-huaban51,"")}.next-icon-huaban6:before{content:"\e6e3";content:var(--icon-content-huaban6,"")}.next-icon-huaban15:before{content:"\e6e1";content:var(--icon-content-huaban15,"")}.next-icon-huaban1111:before{content:"\e6e0";content:var(--icon-content-huaban1111,"")}.next-icon-huaban1081:before{content:"\e6df";content:var(--icon-content-huaban1081,"")}.next-icon-huaban1091:before{content:"\e6de";content:var(--icon-content-huaban1091,"")}.next-icon-huaban1121:before{content:"\e6dd";content:var(--icon-content-huaban1121,"")}.next-icon-huaban93:before{content:"\e6dc";content:var(--icon-content-huaban93,"")}.next-icon-huaban810:before{content:"\e6db";content:var(--icon-content-huaban810,"")}.next-icon-huaban99:before{content:"\e6da";content:var(--icon-content-huaban99,"")}.next-icon-huaban1051:before{content:"\e6d9";content:var(--icon-content-huaban1051,"")}.next-icon-huaban101:before{content:"\e6d8";content:var(--icon-content-huaban101,"")}.next-icon-huaban102:before{content:"\e6d7";content:var(--icon-content-huaban102,"")}.next-icon-huaban821:before{content:"\e6d6";content:var(--icon-content-huaban821,"")}.next-icon-huaban861:before{content:"\e6d5";content:var(--icon-content-huaban861,"")}.next-icon-huaban14:before{content:"\e6d4";content:var(--icon-content-huaban14,"")}.next-icon-huaban851:before{content:"\e6d3";content:var(--icon-content-huaban851,"")}.next-icon-huaban19:before{content:"\e6d2";content:var(--icon-content-huaban19,"")}.next-icon-alignright-fill:before{content:"\e7ba";content:var(--icon-content-alignright-fill,"")}.next-icon-alignleft-fill:before{content:"\e7bb";content:var(--icon-content-alignleft-fill,"")}.next-icon-borderbottom-fill:before{content:"\e7bc";content:var(--icon-content-borderbottom-fill,"")}.next-icon-bordertop-fill:before{content:"\e7bd";content:var(--icon-content-bordertop-fill,"")}.next-icon-aligncenter-fill:before{content:"\e7be";content:var(--icon-content-aligncenter-fill,"")}.next-icon-borderverticle-fill:before{content:"\e7bf";content:var(--icon-content-borderverticle-fill,"")}.next-icon-piccenter-fill:before{content:"\e7c0";content:var(--icon-content-piccenter-fill,"")}.next-icon-picside-fill:before{content:"\e7c1";content:var(--icon-content-picside-fill,"")}.next-icon-folderopen-fill:before{content:"\e7c2";content:var(--icon-content-folderopen-fill,"")}.next-icon-folderplus-fill:before{content:"\e7c3";content:var(--icon-content-folderplus-fill,"")}.next-icon-folder-fill:before{content:"\e7c4";content:var(--icon-content-folder-fill,"")}.next-icon-file-SQL:before{content:"\e7c5";content:var(--icon-content-file-SQL,"")}.next-icon-fileplus-fill:before{content:"\e7c6";content:var(--icon-content-fileplus-fill,"")}.next-icon-file-fill:before{content:"\e7c7";content:var(--icon-content-file-fill,"")}.next-icon-copy-fill:before{content:"\e7c8";content:var(--icon-content-copy-fill,"")}.next-icon-headset-fill:before{content:"\e7c9";content:var(--icon-content-headset-fill,"")}.next-icon-phone-fill:before{content:"\e7ca";content:var(--icon-content-phone-fill,"")}.next-icon-pausecircle-fill:before{content:"\e7cb";content:var(--icon-content-pausecircle-fill,"")}.next-icon-stopcircle-fill:before{content:"\e7cc";content:var(--icon-content-stopcircle-fill,"")}.next-icon-playcircle-fill:before{content:"\e7cd";content:var(--icon-content-playcircle-fill,"")}.next-icon-delete-fill:before{content:"\e7ce";content:var(--icon-content-delete-fill,"")}.next-icon-picture-fill:before{content:"\e7cf";content:var(--icon-content-picture-fill,"")}.next-icon-mail-fill:before{content:"\e7d0";content:var(--icon-content-mail-fill,"")}.next-icon-heart-fill:before{content:"\e7d1";content:var(--icon-content-heart-fill,"")}.next-icon-collection-fill:before{content:"\e7d2";content:var(--icon-content-collection-fill,"")}.next-icon-user-group-fill:before{content:"\e7d3";content:var(--icon-content-user-group-fill,"")}.next-icon-userplus-fill:before{content:"\e7d4";content:var(--icon-content-userplus-fill,"")}.next-icon-user-fill:before{content:"\e7d5";content:var(--icon-content-user-fill,"")}.next-icon-cog-fill:before{content:"\e7d6";content:var(--icon-content-cog-fill,"")}.next-icon-clock-fill:before{content:"\e7d7";content:var(--icon-content-clock-fill,"")}.next-icon-calendaralt-fill:before{content:"\e7d8";content:var(--icon-content-calendaralt-fill,"")}.next-icon-huaban891:before{content:"\e6d1";content:var(--icon-content-huaban891,"")}.next-icon-huaban20:before{content:"\e6d0";content:var(--icon-content-huaban20,"")}.next-icon-huaban901:before{content:"\e6cf";content:var(--icon-content-huaban901,"")}.next-icon-huaban18:before{content:"\e6ce";content:var(--icon-content-huaban18,"")}.next-icon-huaban871:before{content:"\e6cd";content:var(--icon-content-huaban871,"")}.next-icon-huaban881:before{content:"\e6cc";content:var(--icon-content-huaban881,"")}.next-icon-huaban841:before{content:"\e6cb";content:var(--icon-content-huaban841,"")}.next-icon-huaban91:before{content:"\e6ca";content:var(--icon-content-huaban91,"")}.next-icon-huaban90:before{content:"\e6c9";content:var(--icon-content-huaban90,"")}.next-icon-huaban92:before{content:"\e6c8";content:var(--icon-content-huaban92,"")}.next-icon-huaban86:before{content:"\e6c7";content:var(--icon-content-huaban86,"")}.next-icon-huaban85:before{content:"\e6c6";content:var(--icon-content-huaban85,"")}.next-icon-huaban88:before{content:"\e6c5";content:var(--icon-content-huaban88,"")}.next-icon-huaban89:before{content:"\e6c4";content:var(--icon-content-huaban89,"")}.next-icon-huaban87:before{content:"\e6c3";content:var(--icon-content-huaban87,"")}.next-icon-huaban68:before{content:"\e6c2";content:var(--icon-content-huaban68,"")}.next-icon-huaban67:before{content:"\e6c1";content:var(--icon-content-huaban67,"")}.next-icon-huaban541:before{content:"\e6c0";content:var(--icon-content-huaban541,"")}.next-icon-huaban83:before{content:"\e6bf";content:var(--icon-content-huaban83,"")}.next-icon-huaban80:before{content:"\e6be";content:var(--icon-content-huaban80,"")}.next-icon-huaban81:before{content:"\e6bd";content:var(--icon-content-huaban81,"")}.next-icon-huaban82:before{content:"\e6bc";content:var(--icon-content-huaban82,"")}.next-icon-huaban118:before{content:"\e6bb";content:var(--icon-content-huaban118,"")}.next-icon-huaban961:before{content:"\e6ba";content:var(--icon-content-huaban961,"")}.next-icon-huaban120:before{content:"\e6b8";content:var(--icon-content-huaban120,"")}.next-icon-huaban119:before{content:"\e6b7";content:var(--icon-content-huaban119,"")}.next-icon-huaban2fuben2:before{content:"\e6b6";content:var(--icon-content-huaban2fuben2,"")}.next-icon-huaban12fuben2:before{content:"\e6b5";content:var(--icon-content-huaban12fuben2,"")}.next-icon-huaban8:before{content:"\e6b4";content:var(--icon-content-huaban8,"")}.next-icon-huaban84:before{content:"\e6b2";content:var(--icon-content-huaban84,"")}.next-icon-huaban8fuben3:before{content:"\e6b1";content:var(--icon-content-huaban8fuben3,"")}.next-icon-huaban8fuben4:before{content:"\e6b0";content:var(--icon-content-huaban8fuben4,"")}.next-icon-huaban8fuben7:before{content:"\e6af";content:var(--icon-content-huaban8fuben7,"")}.next-icon-huaban96:before{content:"\e6ae";content:var(--icon-content-huaban96,"")}.next-icon-huaban61:before{content:"\e6ad";content:var(--icon-content-huaban61,"")}.next-icon-huaban62:before{content:"\e6ac";content:var(--icon-content-huaban62,"")}.next-icon-huaban12fuben4:before{content:"\e6ab";content:var(--icon-content-huaban12fuben4,"")}.next-icon-huaban5fuben:before{content:"\e6aa";content:var(--icon-content-huaban5fuben,"")}.next-icon-huaban5:before{content:"\e6a9";content:var(--icon-content-huaban5,"")}.next-icon-huaban12fuben6:before{content:"\e6a8";content:var(--icon-content-huaban12fuben6,"")}.next-icon-huaban12:before{content:"\e6a7";content:var(--icon-content-huaban12,"")}.next-icon-huaban8fuben10:before{content:"\e6a6";content:var(--icon-content-huaban8fuben10,"")}.next-icon-huaban8fuben8:before{content:"\e6a5";content:var(--icon-content-huaban8fuben8,"")}.next-icon-huaban1161:before{content:"\e6a4";content:var(--icon-content-huaban1161,"")}.next-icon-huaban1171:before{content:"\e6a1";content:var(--icon-content-huaban1171,"")}.next-icon-huaban110:before{content:"\e6a0";content:var(--icon-content-huaban110,"")}.next-icon-huaban112:before{content:"\e69f";content:var(--icon-content-huaban112,"")}.next-icon-huaban111:before{content:"\e69e";content:var(--icon-content-huaban111,"")}.next-icon-huaban113:before{content:"\e69a";content:var(--icon-content-huaban113,"")}.next-icon-huaban65:before{content:"\e699";content:var(--icon-content-huaban65,"")}.next-icon-huaban66:before{content:"\e691";content:var(--icon-content-huaban66,"")}.next-icon-huaban108:before{content:"\e68f";content:var(--icon-content-huaban108,"")}.next-icon-huaban109:before{content:"\e68e";content:var(--icon-content-huaban109,"")}.next-icon-huaban59:before{content:"\e68a";content:var(--icon-content-huaban59,"")}.next-icon-huaban60:before{content:"\e67f";content:var(--icon-content-huaban60,"")}.next-icon-huaban58:before{content:"\e67d";content:var(--icon-content-huaban58,"")}.next-icon-huaban57:before{content:"\e67c";content:var(--icon-content-huaban57,"")}.next-icon-huaban70:before{content:"\e67a";content:var(--icon-content-huaban70,"")}.next-icon-huaban55:before{content:"\e679";content:var(--icon-content-huaban55,"")}.next-icon-huaban42fuben2:before{content:"\e678";content:var(--icon-content-huaban42fuben2,"")}.next-icon-huaban50:before{content:"\e675";content:var(--icon-content-huaban50,"")}.next-icon-huaban42fuben:before{content:"\e672";content:var(--icon-content-huaban42fuben,"")}.next-icon-huaban49:before{content:"\e671";content:var(--icon-content-huaban49,"")}.next-icon-huaban104:before{content:"\e670";content:var(--icon-content-huaban104,"")}.next-icon-huaban48:before{content:"\e66f";content:var(--icon-content-huaban48,"")}.next-icon-huaban128:before{content:"\e66e";content:var(--icon-content-huaban128,"")}.next-icon-huaban106:before{content:"\e66d";content:var(--icon-content-huaban106,"")}.next-icon-huaban107:before{content:"\e66c";content:var(--icon-content-huaban107,"")}.next-icon-huaban105:before{content:"\e66b";content:var(--icon-content-huaban105,"")}.next-icon-huaban133:before{content:"\e66a";content:var(--icon-content-huaban133,"")}.next-icon-huaban130:before{content:"\e669";content:var(--icon-content-huaban130,"")}.next-icon-huaban132:before{content:"\e667";content:var(--icon-content-huaban132,"")}.next-icon-huaban129:before{content:"\e666";content:var(--icon-content-huaban129,"")}.next-icon-huaban137:before{content:"\e662";content:var(--icon-content-huaban137,"")}.next-icon-huaban136:before{content:"\e661";content:var(--icon-content-huaban136,"")}.next-icon-huaban134:before{content:"\e660";content:var(--icon-content-huaban134,"")}.next-icon-huaban135:before{content:"\e65c";content:var(--icon-content-huaban135,"")}.next-icon-huaban138:before{content:"\e65b";content:var(--icon-content-huaban138,"")}.next-icon-huaban140:before{content:"\e65a";content:var(--icon-content-huaban140,"")}.next-icon-huaban139:before{content:"\e658";content:var(--icon-content-huaban139,"")}.next-icon-yingyong:before{content:"\e653";content:var(--icon-content-yingyong,"")}.next-icon-yunjitianchong:before{content:"\e652";content:var(--icon-content-yunjitianchong,"")}.next-icon-yunji:before{content:"\e651";content:var(--icon-content-yunji,"")}.next-icon-zuojiantoujuxing:before{content:"\e64f";content:var(--icon-content-zuojiantoujuxing,"")}.next-icon-youjiantoujuxing:before{content:"\e64e";content:var(--icon-content-youjiantoujuxing,"")}.next-icon-zhenduan:before{content:"\e64d";content:var(--icon-content-zhenduan,"")}.next-icon-yunxiazai:before{content:"\e64c";content:var(--icon-content-yunxiazai,"")}.next-icon-yunshangchuan:before{content:"\e64b";content:var(--icon-content-yunshangchuan,"")}.next-icon-zhongduantianchong:before{content:"\e64a";content:var(--icon-content-zhongduantianchong,"")}.next-icon-zhongduan:before{content:"\e649";content:var(--icon-content-zhongduan,"")}.next-icon-peijian:before{content:"\e648";content:var(--icon-content-peijian,"")}.next-icon-luopan:before{content:"\e647";content:var(--icon-content-luopan,"")}.next-icon-fuzhi:before{content:"\e642";content:var(--icon-content-fuzhi,"")}.next-icon-bujinmoshi:before{content:"\e63e";content:var(--icon-content-bujinmoshi,"")}.next-icon-huaban46fuben:before{content:"\e638";content:var(--icon-content-huaban46fuben,"")}.next-icon-huaban46:before{content:"\e637";content:var(--icon-content-huaban46,"")}.next-icon-huaban52:before{content:"\e636";content:var(--icon-content-huaban52,"")}.next-icon-huaban53:before{content:"\e635";content:var(--icon-content-huaban53,"")}.next-icon-huaban54:before{content:"\e630";content:var(--icon-content-huaban54,"")}.next-icon-huaban127:before{content:"\e77d";content:var(--icon-content-huaban127,"")}.next-icon-huaban12fuben:before{content:"\e77c";content:var(--icon-content-huaban12fuben,"")}.next-icon-1688-copy:before{content:"\e77b";content:var(--icon-content-1688-copy,"")}.next-icon-taobao-copy:before{content:"\e77a";content:var(--icon-content-taobao-copy,"")}.next-icon-alipay-copy:before{content:"\e779";content:var(--icon-content-alipay-copy,"")}.next-icon-dingtalk-copy:before{content:"\e778";content:var(--icon-content-dingtalk-copy,"")}.next-icon-huaban931:before{content:"\e773";content:var(--icon-content-huaban931,"")}.next-icon-huaban95:before{content:"\e768";content:var(--icon-content-huaban95,"")}.next-icon-huaban941:before{content:"\e767";content:var(--icon-content-huaban941,"")}.next-icon-huaban1fuben341:before{content:"\e766";content:var(--icon-content-huaban1fuben341,"")}.next-icon-huaban1fuben30:before{content:"\e765";content:var(--icon-content-huaban1fuben30,"")}.next-icon-huaban1fuben19:before{content:"\e764";content:var(--icon-content-huaban1fuben19,"")}.next-icon-huaban1fuben21:before{content:"\e763";content:var(--icon-content-huaban1fuben21,"")}.next-icon-huaban1fuben67:before{content:"\e762";content:var(--icon-content-huaban1fuben67,"")}.next-icon-huaban1fuben45:before{content:"\e761";content:var(--icon-content-huaban1fuben45,"")}.next-icon-huaban1fuben47:before{content:"\e760";content:var(--icon-content-huaban1fuben47,"")}.next-icon-huaban1fuben41:before{content:"\e75f";content:var(--icon-content-huaban1fuben41,"")}.next-icon-huaban1fuben591:before{content:"\e75e";content:var(--icon-content-huaban1fuben591,"")}.next-icon-huaban1fuben36:before{content:"\e75d";content:var(--icon-content-huaban1fuben36,"")}.next-icon-huaban1fuben7:before{content:"\e75c";content:var(--icon-content-huaban1fuben7,"")}.next-icon-huaban1fuben91:before{content:"\e75b";content:var(--icon-content-huaban1fuben91,"")}.next-icon-huaban1fuben80:before{content:"\e75a";content:var(--icon-content-huaban1fuben80,"")}.next-icon-huaban1401:before{content:"\e759";content:var(--icon-content-huaban1401,"")}.next-icon-huaban101fuben:before{content:"\e758";content:var(--icon-content-huaban101fuben,"")}.next-icon-huaban1391:before{content:"\e757";content:var(--icon-content-huaban1391,"")}.next-icon-huaban8fuben:before{content:"\e756";content:var(--icon-content-huaban8fuben,"")}.next-icon-huaban1361:before{content:"\e755";content:var(--icon-content-huaban1361,"")}.next-icon-huaban1381:before{content:"\e754";content:var(--icon-content-huaban1381,"")}.next-icon-huaban144:before{content:"\e753";content:var(--icon-content-huaban144,"")}.next-icon-huaban1331:before{content:"\e752";content:var(--icon-content-huaban1331,"")}.next-icon-huaban1321:before{content:"\e751";content:var(--icon-content-huaban1321,"")}.next-icon-huaban1301:before{content:"\e750";content:var(--icon-content-huaban1301,"")}.next-icon-huaban1fuben101:before{content:"\e74f";content:var(--icon-content-huaban1fuben101,"")}.next-icon-huaban1141:before{content:"\e74e";content:var(--icon-content-huaban1141,"")}.next-icon-huaban1291:before{content:"\e74d";content:var(--icon-content-huaban1291,"")}.next-icon-huaban131:before{content:"\e74c";content:var(--icon-content-huaban131,"")}.next-icon-huaban1351:before{content:"\e74b";content:var(--icon-content-huaban1351,"")}.next-icon-3226:before{content:"\e708";content:var(--icon-content-3226,"")}.next-icon-3225:before{content:"\e707";content:var(--icon-content-3225,"")}.next-icon-3224:before{content:"\e706";content:var(--icon-content-3224,"")}.next-icon-3223:before{content:"\e705";content:var(--icon-content-3223,"")}.next-icon-3222:before{content:"\e704";content:var(--icon-content-3222,"")}.next-icon-3221:before{content:"\e703";content:var(--icon-content-3221,"")}.next-icon-3220:before{content:"\e702";content:var(--icon-content-3220,"")}.next-icon-3219:before{content:"\e701";content:var(--icon-content-3219,"")}.next-icon-3218:before{content:"\e700";content:var(--icon-content-3218,"")}.next-icon-3217:before{content:"\e6ff";content:var(--icon-content-3217,"")}.next-icon-3216:before{content:"\e6fe";content:var(--icon-content-3216,"")}.next-icon-3215:before{content:"\e6fd";content:var(--icon-content-3215,"")}.next-icon-3214:before{content:"\e6fc";content:var(--icon-content-3214,"")}.next-icon-3213:before{content:"\e6fb";content:var(--icon-content-3213,"")}.next-icon-3212:before{content:"\e6fa";content:var(--icon-content-3212,"")}.next-icon-3211:before{content:"\e6f9";content:var(--icon-content-3211,"")}.next-icon-3210:before{content:"\e6f8";content:var(--icon-content-3210,"")}.next-icon-329:before{content:"\e6f7";content:var(--icon-content-329,"")}.next-icon-328:before{content:"\e6f6";content:var(--icon-content-328,"")}.next-icon-327:before{content:"\e6f5";content:var(--icon-content-327,"")}.next-icon-326:before{content:"\e6f4";content:var(--icon-content-326,"")}.next-icon-324:before{content:"\e6f3";content:var(--icon-content-324,"")}.next-icon-323:before{content:"\e6f2";content:var(--icon-content-323,"")}.next-icon-322:before{content:"\e6f1";content:var(--icon-content-322,"")}.next-icon-321:before{content:"\e6f0";content:var(--icon-content-321,"")}.next-icon-32:before{content:"\e6ef";content:var(--icon-content-32,"")}@font-face{font-family:WindIcon;src:url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.eot);src:url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.woff2) format("woff2"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.woff) format("woff"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.ttf) format("truetype"),url(//at.alicdn.com/t/font_1435786_ccri5b3kw0n.svg#NextIcon) format("svg")}.next-icon{font-family:NextIcon;font-family:var(--xconsole-icon-font-family,NextIcon)}.next-icon-cart:before{content:var(--icon-content-shopping-cart)}.next-icon-account-circle:before{content:var(--icon-content-user-circle)}.next-icon-points:before,.next-icon-star-circle:before{content:var(--icon-content-star-circle1)}.next-icon-rights:before{content:var(--icon-content-gem)}.next-icon-alert:before{content:var(--icon-content-wind-warning)}.next-icon-caret-up:before{content:var(--icon-content-sort-up)}.next-icon-caret-down:before{content:var(--icon-content-sort-down)}.next-icon-arrow-alt-left:before{content:var(--icon-content-wind-arrow-left)}.next-icon-arrow-alt-right:before{content:var(--icon-content-wind-arrow-right)}.next-icon-export:before{content:var(--icon-content-wind-upload)}.next-icon-import:before{content:var(--icon-content-wind-download)}.next-icon-list-collapsed:before{content:var(--icon-content-outdent)}.next-icon-list-expansion:before{content:var(--icon-content-indent)}.next-icon-remove:before{content:var(--icon-content-times)}.next-icon-expand-arrows-alt:before{content:var(--icon-content-expand-alt)}.next-icon-heart-regular:before{content:var(--icon-content-like)}.next-icon-play:before{content:var(--icon-content-playcircle)}.next-icon-stop:before{content:var(--icon-content-stopcircle)}.next-icon-pause:before{content:var(--icon-content-pausecircle)}.next-icon-folder-add:before{content:var(--icon-content-folder-plus)}.next-icon-installation-package:before{content:var(--icon-content-inbox-in)}.next-icon-light:before{content:var(--icon-content-lightbulb)}.next-icon-fliter-list:before{content:var(--icon-content-wind-filter)}.next-icon-collapse-card1:before{content:var(--icon-content-expandalt-fill)}.next-icon-collapse-card:before{content:var(--icon-content-compressalt-fill)}.next-icon-cloud-upload:before{content:var(--icon-content-cloudupload-fill)}.next-icon-cloud-download:before{content:var(--icon-content-clouddownload-fill)}.next-icon-heart-soild:before{content:var(--icon-content-heart-fill)}.next-icon-service:before{content:var(--icon-content-headset-fill)}.next-icon-file-add:before{content:var(--icon-content-fileplus-fill)}.next-icon-file-sql:before{content:var(--icon-content-file-SQL)}.next-icon-lock-open:before{content:var(--icon-content-unlock-fill)}.next-icon-layers:before{content:var(--icon-content-layergroup-fill)}.next-icon-data-set:before{content:var(--icon-content-databaseset-fill)}.next-icon-label:before{content:var(--icon-content-tag-fill)}.next-icon-invisible:before{content:var(--icon-content-eyeslash-fill)}.next-icon-multiple-tips:before{content:var(--icon-content-commentdots-fill)}.next-icon-comment:before{content:var(--icon-content-commentlines-fill)}.next-icon-data:before{content:var(--icon-content-database-fill)}.next-icon-renewals:before{content:var(--icon-content-transanction)}.next-icon-cell-phone:before{content:var(--icon-content-mobile-alt)}.next-icon-phone-bingding:before{content:var(--icon-content-mobile-check)}.next-icon-phone-untie:before{content:var(--icon-content-mobile-error)}.next-icon-online:before{content:var(--icon-content-laptop-check)}.next-icon-Keys:before{content:var(--icon-content-key)}.next-icon-mains:before{content:var(--icon-content-poweroff)}.next-icon-scanning:before{content:var(--icon-content-scan)}.next-icon-more:before{content:var(--icon-content-ellipsis-vertical)}.next-icon-shoppingcart:before{content:var(--icon-content-shopping-cart)}.next-icon-annex:before{content:var(--icon-content-paperclip)}.next-icon-external-link-alt:before{content:var(--icon-content-external-link)}.next-icon-subtract:before{content:var(--icon-content-wind-minus)}.next-icon-filter-list:before{content:var(--icon-content-wind-filter)}.next-icon-account-add-solid:before{content:var(--icon-content-userplus-fill)}.next-icon-supervisor-account:before{content:var(--icon-content-user-group-fill)}.next-icon-star-solid:before{content:var(--icon-content-collection-fill)}.next-icon-heart-solid:before{content:var(--icon-content-heart-fill)}.next-icon-phone-binding:before{content:var(--icon-content-mobile-check)}.next-icon-scatter-plot:before{content:var(--icon-content-chart-scatter-plot)}.next-icon-chart-pie:before{content:var(--icon-content-chart-pie-alt)}.next-icon-long-arrow-left:before{content:var(--icon-content-wind-arrow-left)}.next-icon-long-arrow-right:before{content:var(--icon-content-wind-arrow-right)}.next-range-scale-item.next-range-scale-item.next-range-scale-item.next-range-scale-item{top:var(--range-scale-item-position-top,0);width:var(--range-scale-item-width,1px)}.next-range .next-range-slider-inner:hover,.next-range .next-range-slider-moving .next-range-slider-inner.next-range-slider-inner.next-range-slider-inner{transform:scale(1.38)}.next-timeline-item.next-timeline-item-done .next-timeline-item-dot{border-radius:50%;background:var(--timeline-item-done-background,#c0c6cc);border:var(--timeline-item-done-border)}.next-balloon.next-balloon.next-balloon:after{box-shadow:none}.next-balloon.next-balloon-bottom-left:after,.next-balloon.next-balloon-bottom-right:after,.next-balloon.next-balloon-bottom:after{border-bottom-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon.next-balloon-top-left:after,.next-balloon.next-balloon-top-right:after,.next-balloon.next-balloon-top:after{border-top-left-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon.next-balloon-right-bottom:after,.next-balloon.next-balloon-right-top:after,.next-balloon.next-balloon-right:after{border-top-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon.next-balloon-left-bottom:after,.next-balloon.next-balloon-left-top:after,.next-balloon.next-balloon-left:after{border-bottom-left-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip.next-balloon-tooltip:after{box-shadow:none}.next-balloon-tooltip.next-balloon-tooltip-bottom-left:after,.next-balloon-tooltip.next-balloon-tooltip-bottom-right:after,.next-balloon-tooltip.next-balloon-tooltip-bottom:after{border-bottom-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip-top-left:after,.next-balloon-tooltip.next-balloon-tooltip-top-right:after,.next-balloon-tooltip.next-balloon-tooltip-top:after{border-top-left-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip-right-bottom:after,.next-balloon-tooltip.next-balloon-tooltip-right-top:after,.next-balloon-tooltip.next-balloon-tooltip-right:after{border-top-right-radius:var(--balloon-arrow-border-radius,2px)}.next-balloon-tooltip.next-balloon-tooltip-left-bottom:after,.next-balloon-tooltip.next-balloon-tooltip-left-top:after,.next-balloon-tooltip.next-balloon-tooltip-left:after{border-bottom-left-radius:var(--balloon-arrow-border-radius,2px)}.next-btn{font-weight:var(--btn-font-weight,400);transition:all .1s}.next-btn[disabled]:hover{box-shadow:none}.next-btn-primary:focus-visible,.next-btn-primary:hover{box-shadow:var(--btn-primary-hover-shadow)}.next-btn-primary:active{box-shadow:var(--btn-primary-active-shadow)}.next-btn.next-btn-text:active,.next-btn.next-btn-text:focus-visible,.next-btn.next-btn-text:hover{box-shadow:none}.next-btn-normal:focus-visible,.next-btn-normal:hover{box-shadow:var(--btn-normal-hover-shadow)}.next-btn-normal:active{box-shadow:var(--btn-normal-active-shadow)}.next-btn.next-small:not(.isOnlyIcon):not(.next-btn-text){min-width:var(--btn-small-min-width,62px)}.next-btn.next-small.isTwoToThreeCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-small-cn2-3-width,62px);padding:0}.next-btn.next-small.isFourCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-small-cn4-width,72px);padding:0}.next-btn.next-small:not(.is-wind).isOnlyIcon{width:24px;padding:0}.next-btn.next-medium:not(.isOnlyIcon):not(.next-btn-text){min-width:var(--btn-medium-min-width,62px)}.next-btn.next-medium.isTwoToThreeCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-medium-cn2-3-width,62px);padding:0}.next-btn.next-medium.isFourCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-medium-cn4-width,80px);padding:0}.next-btn.next-medium:not(.is-wind).isOnlyIcon{width:32px;padding:0}.next-btn.next-large:not(.isOnlyIcon):not(.next-btn-text){min-width:var(--btn-large-min-width,64px)}.next-btn.next-large.isTwoToThreeCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-large-cn2-3-width,64px);padding:0}.next-btn.next-large.isFourCNCharBtn:not(.next-btn-loading):not(.next-btn-text){width:var(--btn-large-cn4-width,88px);padding:0}.next-btn.next-large:not(.is-wind).isOnlyIcon{width:36px;padding:0}.next-btn-group .next-btn.next-btn.next-btn.next-btn{min-width:unset}.next-btn-group .next-btn.next-btn-primary{border-style:solid;border-color:hsla(0,0%,100%,.2)}.next-btn .teamix-icon{vertical-align:middle}.next-btn .teamix-icon-first{margin-left:0;margin-right:4px}.next-btn .teamix-icon-last{margin-left:4px;margin-right:0}.next-btn.next-btn-normal.next-btn-text.next-btn-warning:hover{color:var(--color-error-5)}.next-btn.next-btn-normal.next-btn-text.next-btn-warning:active{color:var(--color-error-6)}.next-btn.next-btn-primary.next-btn-text.next-btn-warning{color:var(--color-error-5)}.next-btn.next-btn-primary.next-btn-text.next-btn-warning:hover{color:var(--color-error-4)}.next-btn.next-btn-primary.next-btn-text.next-btn-warning:active{color:var(--color-error-6)}.next-pagination{font-size:inherit}.next-pagination .next-pagination-item.next-current.next-current.next-current{z-index:2}.next-pagination .next-pagination-item:not(.next-current):focus-visible,.next-pagination .next-pagination-item:not(.next-current):hover{background-color:var(--pagination-item-hover-bg,#fff)}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn{min-width:32px}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-small{min-width:24px}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-next,.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-prev{border-color:var(--pagination-item-border-color,transparent)}.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-next[disabled]:hover,.next-pagination .next-pagination-item.next-pagination-item.next-pagination-item.next-btn.next-prev[disabled]:hover{background-color:var(--pagination-item-disabled-bg,#fff)}.next-pagination-size-selector-popup .next-select-menu-item.next-select-menu-item.next-select-menu-item.next-select-menu-item.next-select-menu-item{padding-right:0}.next-transfer.next-transfer .next-transfer-panel-list{padding:var(--transfer-panel-padding-mb,0) var(--transfer-panel-padding-lr,8px);margin:var(--transfer-panel-margin-mb,8px) 0}.next-transfer.next-transfer .next-transfer-panel-list::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-transfer.next-transfer .next-transfer-panel-list::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-transfer.next-transfer .next-transfer-panel-list::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation{padding:0;width:var(--transfer-operation-width,24px);height:var(--transfer-operation-height,24px)}.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation.next-btn{min-width:unset}.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation[disabled],.next-transfer-operations .next-transfer-operation.next-transfer-operation.next-transfer-operation[disabled]:hover{color:var(--btn-pure-primary-color-disabled,#fff);background-color:var(--btn-pure-primary-bg-disabled,#d1d5d9);border-color:var(--btn-pure-primary-border-color-disabled,transparent)}.next-transfer-operations .next-transfer-move:before{width:var(--transfer-operation-simple-move-size,16px);height:var(--transfer-operation-simple-move-size,16px);font-size:var(--transfer-operation-simple-move-size,16px)}.next-tabs-pure .next-tabs-tab.next-tabs-tab.next-tabs-tab.next-tabs-tab:hover{background-color:var(--tab-pure-hover-bg)}.next-date-picker .next-date-picker-trigger{transition:box-shadow var(--active-transition)}.next-date-picker .next-date-picker-trigger:hover,.next-date-picker .next-date-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-date-picker .next-date-picker-trigger .next-date-picker-trigger-input{box-shadow:none}.next-range-picker .next-range-picker-trigger{transition:box-shadow var(--active-transition)}.next-range-picker .next-range-picker-trigger:hover,.next-range-picker .next-range-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-range-picker .next-range-picker-trigger .next-range-picker-trigger-input{box-shadow:none}.next-month-picker .next-month-picker-trigger{transition:box-shadow var(--active-transition)}.next-month-picker .next-month-picker-trigger:hover,.next-month-picker .next-month-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-month-picker .next-month-picker-trigger .next-month-picker-trigger-input{box-shadow:none}.next-year-picker .next-year-picker-trigger{transition:box-shadow var(--active-transition)}.next-year-picker .next-year-picker-trigger:hover,.next-year-picker .next-year-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-year-picker .next-year-picker-trigger .next-year-picker-trigger-input{box-shadow:none}.next-week-picker .next-week-picker-trigger{transition:box-shadow var(--active-transition)}.next-week-picker .next-week-picker-trigger:hover,.next-week-picker .next-week-picker-trigger[aria-expanded=true]{box-shadow:var(--active-shadow)}.next-week-picker .next-week-picker-trigger .next-week-picker-trigger-input{box-shadow:none}.next-calendar-panel-header-full .next-calendar-btn,.next-calendar-panel-header-left .next-calendar-btn,.next-calendar-panel-header-right .next-calendar-btn{line-height:30px}.next-date-picker-panel-footer,.next-month-picker-panel-footer,.next-range-picker-panel-footer,.next-week-picker-panel-footer,.next-year-picker-panel-footer{--popup-local-border-width:1px}.next-date-picker-panel-header,.next-month-picker-panel-header,.next-range-picker-panel-header,.next-week-picker-panel-header,.next-year-picker-panel-header{padding:8px}.next-search{transition:box-shadow var(--active-transition)}.next-search.next-search.next-search.focusing,.next-search.next-search.next-search.visible,.next-search.next-search.next-search:hover{box-shadow:var(--active-shadow)}.next-search.next-search.next-search.disabled,.next-search.next-search.next-search .next-btn:hover,.next-search.next-search.next-search .next-input-group:hover,.next-search.next-search.next-search .next-input:hover{box-shadow:none}.next-search-simple:not(.is-wind) .next-input{display:flex}.next-search-simple:not(.is-wind) .next-input input{padding-left:0}.next-search-simple:not(.is-wind) .next-input .next-input-inner{width:auto;order:-1;display:flex;justify-content:center;align-items:center}.next-search-simple:not(.is-wind) .next-input .next-input-inner .next-search-icon{margin-right:0;padding:0 12px}.next-search-simple:not(.is-wind) .next-input .next-input-control{width:auto;order:10;display:flex;justify-content:center;align-items:center}.next-search-simple:not(.is-wind) .next-input .next-input-control .next-input-hint-wrap{padding-right:0;width:auto}.next-search.next-normal.disabled .next-input-group,.next-search.next-search-normal.disabled .next-input-group{border-color:var(--search-simple-normal-color,#dedede)}.next-search.next-normal .next-after .next-btn-normal,.next-search.next-search-normal .next-after .next-btn-normal{padding:0 8px;margin-right:-1px}.next-search.next-normal .next-after .next-btn-normal .next-icon-search,.next-search.next-search-normal .next-after .next-btn-normal .next-icon-search{margin-right:0}.next-search.next-normal.custom-search-text .next-after .next-btn-normal{padding:0 16px}.next-input.next-disabled,.next-input.next-disabled>input,.next-input.next-disabled>textarea,.next-search .next-input.next-disabled *{cursor:not-allowed}.next-input.next-focus,.next-input:hover{box-shadow:var(--active-shadow)}.next-input.next-disabled{box-shadow:none}.next-input-group{transition:box-shadow var(--active-transition)}.next-input-group:hover{box-shadow:var(--active-shadow)}.next-input-group.next-disabled,.next-input-group .next-input{box-shadow:none}.next-input-group>.next-number-picker:first-child .next-input{border-top-right-radius:0;border-bottom-right-radius:0}.next-input-group>.next-number-picker:first-child .next-input.next-focus{position:relative;z-index:1}.next-input-group>.next-number-picker:last-child .next-input{border-top-left-radius:0;border-bottom-left-radius:0}.next-input-group>.next-number-picker:last-child .next-input.next-focus{position:relative;z-index:1}.next-input.next-noborder.next-focus,.next-input.next-noborder:hover{box-shadow:none}.next-select.next-active .next-select-inner{box-shadow:var(--active-shadow);border-color:var(--input-focus-border-color,#0064c8)}.next-select-menu.next-select-multiple-menu .next-icon-select,.next-select-menu.next-select-multiple-menu .next-icon-selected,.next-select-menu.next-select-single-menu .next-icon-select,.next-select-menu.next-select-single-menu .next-icon-selected,.next-select-menu.next-select-tag-menu .next-icon-select,.next-select-menu.next-select-tag-menu .next-icon-selected{margin-left:var(--select-menu-select-icon-ml,-20px)}.next-select-menu.next-select-multiple-menu .next-select-menu-item.next-selected,.next-select-menu.next-select-single-menu .next-select-menu-item.next-selected,.next-select-menu.next-select-tag-menu .next-select-menu-item.next-selected{font-weight:var(--select-selected-font-weight,400)}.next-menu.next-menu{padding:var(--menu-padding)}.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected{height:100%;overflow:hidden}.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected,.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected:before{width:var(--menu-icon-selected-size,16px);font-size:var(--menu-icon-selected-size,16px)}.next-menu-item{border-radius:var(--corner-1)}.next-menu-selectable-multiple .next-menu-item:not([role=menuitemcheckbox]):not([role=menuitemradio]):not(.next-nav-item),.next-menu-selectable-single .next-menu-item:not([role=menuitemcheckbox]):not([role=menuitemradio]):not(.next-nav-item){padding:0 var(--menu-padding-horizontal) 0 var(--menu-padding-horizontal-selectable,var(--menu-padding-horizontal))}.next-menu-item-inner .next-checkbox,.next-menu-item-inner .next-radio{margin-right:var(--menu-checkbox-mr,8px)}.next-menu .next-menu-icon-selected.next-icon{margin-left:var(--select-menu-select-icon-ml,-20px)}.next-split-btn.next-split-btn>.next-btn{box-shadow:none}.next-number-picker>.next-input .next-number-picker-handler:focus-within{opacity:1}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn{min-width:unset;border:var(--number-picker-handler-btn-border,none)}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn:not(.disabled):hover{border:var(--number-picker-handler-btn-border-hover,none)}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn.next-btn:first-child{border-right:none;border-top:none}.next-number-picker>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn.next-btn:last-child{border-right:none;border-bottom:none}.next-number-picker-inline .next-input-group{border:var(--number-picker-inline-group-border,1px solid #c0c6cc);border-radius:var(--number-picker-border-radius,2px);padding:var(--number-picker-inline-group-padding,4px)}.next-number-picker-inline .next-input-group .next-input-group-addon .next-btn{border:var(--number-picker-inline-group-btn-border,none);border-radius:var(--number-picker-border-radius,2px)!important;min-width:unset}.next-number-picker-inline .next-input-group .next-input-group-addon .next-btn:not(.disabled):hover{border:var(--number-picker-inline-group-btn-border-hover,none)}.next-number-picker-inline .next-input-group .next-input{border:var(--number-picker-inline-group-btn-border,none)}.next-number-picker-inline .next-input-group .next-input:hover{border:var(--number-picker-inline-group-btn-border-hover,none)}.next-number-picker.next-disabled{background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-number-picker.next-disabled>.next-input{border:var(--number-picker-normal-border,1px solid #dedede)}.next-number-picker.next-disabled .next-input-group{box-shadow:none}.next-number-picker.next-disabled .next-input-group:hover{border:var(--number-picker-inline-group-border,1px solid #c0c6cc)}.next-number-picker.next-disabled .next-input-group .next-input-group-addon .next-btn{background-color:var(--input-disabled-bg-color,#f7f9fa)}.next-number-picker.next-disabled .next-input-group .next-input-group-addon .next-btn:hover,.next-number-picker.next-disabled .next-input-group .next-input:hover{border:var(--number-picker-inline-group-btn-border,none)}.next-number-picker-inline.next-medium .next-input-group .next-input-group-addon .next-btn{height:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px));width:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px));min-width:unset}.next-number-picker-inline.next-medium .next-input-group .next-input{display:inline-block;height:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px));line-height:var(--number-picker-final-height-medium,calc(var(--number-picker-height-medium) - 10px))}.next-number-picker-inline.next-medium .next-input-group .next-input input{display:inline-block;height:100%}.next-number-picker-inline.next-small .next-input-group .next-input-group-addon .next-btn{height:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px));width:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px));min-width:unset}.next-number-picker-inline.next-small .next-input-group .next-input{display:inline-block;height:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px));line-height:var(--number-picker-final-height-small,calc(var(--number-picker-height-small) - 10px))}.next-number-picker-inline.next-small .next-input-group .next-input input{display:inline-block;height:100%}.next-number-picker-inline.next-large .next-input-group .next-input-group-addon .next-btn{height:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px));width:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px));min-width:unset}.next-number-picker-inline.next-large .next-input-group .next-input{display:inline-block;height:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px));line-height:var(--number-picker-final-height-large,calc(var(--number-picker-height-large) - 10px))}.next-number-picker-inline.next-large .next-input-group .next-input input{display:inline-block;height:100%}.next-number-picker-normal.next-small.next-small.next-small .next-icon .next-icon-remote,.next-number-picker-normal.next-small.next-small.next-small .next-icon:before{line-height:inherit}.next-number-picker.next-medium>.next-input .next-number-picker-handler .next-btn.next-btn.next-btn.next-btn{height:calc(var(--form-element-medium-height, 32px)/2 - var(--input-border-width, 1px)*2/2)}.next-card{transition:box-shadow var(--active-transition)}.next-card:hover{box-shadow:var(--card-hover-shadow,1px 1px 4px 0 rgba(0,0,0,.13));background-color:var(--card-hover-background,var(--card-background));border-color:var(--card-hover-border-color,var(--card-border-color))}.next-card .next-card-header-extra .next-icon-ellipsis-vertical:before{vertical-align:text-bottom}.next-card .next-card-collapsable-tail{height:18px;line-height:18px;font-size:12px;padding:0 var(--card-padding-lr,16px) var(--card-body-padding-bottom,16px);margin-bottom:var(--card-body-padding-bottom,16px)}.next-card .next-card-collapsable-tail:hover{color:var(--color-brand1-6,#0064c8);cursor:pointer}.next-card .next-card-collapsable-tail .next-icon{margin-left:4px}.next-card .next-card-collapsable-tail .next-icon:before{width:18px;height:18px;line-height:18px}.next-card .next-card-collapsable-head{padding:0 var(--card-padding-lr,16px);margin:var(--card-body-padding-bottom,16px) 0;line-height:22px;font-size:14px}.next-card .next-card-collapsable-head:hover{color:var(--color-brand1-6,#0064c8);cursor:pointer}.next-cascader:not(.multiple) .next-cascader-menu .next-menu-item{--menu-padding-horizontal:var(--menu-padding-horizontal-selectable);padding:0 var(--menu-padding-horizontal) 0 var(--menu-padding-horizontal)}.next-cascader .next-cascader-menu-wrapper::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-cascader .next-cascader-menu-wrapper::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-cascader .next-cascader-menu-wrapper::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}.next-cascader-select-dropdown{background-color:var(--dropdown-bg-color,#fff)}.next-cascader-select-dropdown .next-cascader-menu-wrapper{border-left:none;overflow-y:scroll}.next-cascader-select-dropdown .next-cascader-menu-wrapper::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-cascader-select-dropdown .next-cascader-menu-wrapper::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-cascader-select-dropdown .next-cascader-menu-wrapper::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}.next-cascader-select-dropdown .next-menu{border:none}.next-table-fix-left,.next-table-fix-right{background-clip:padding-box}.next-message-title{font-weight:var(--message-title-weight,500)}.next-message .next-message-close .next-icon-close{display:flex;align-items:center;justify-content:center}.next-message .next-message-close .next-icon-close:before{width:var(--message-close-icon-size,12px);height:var(--message-close-icon-size,12px);font-size:var(--message-close-icon-size,12px);line-height:var(--message-close-icon-size,12px)}.next-dialog-footer .next-btn{margin-left:var(--s-2,8px)}.next-dialog-footer .next-btn:first-child{margin-left:0}.next-dialog.next-dialog-quick.quick-show .next-dialog-body{padding:var(--dialog-content-padding-top,0) var(--dialog-content-padding-left-right,24px) var(--dialog-content-padding-bottom,16px) var(--dialog-content-padding-left-right,24px)}.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner>.next-icon{transform:scale(var(--checkbox-icon-scale,.8));margin-top:0}.next-nav.next-nav.next-nav.next-nav.next-menu{padding:0}.next-modal,body.next-modal-open{overflow:hidden}.next-modal{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:1001;background:var(--color-fill1-2)}.next-modal-header{position:relative;background:var(--color-fill1-1);z-index:1;height:60px;box-shadow:var(--shadow-1);display:flex;box-sizing:border-box;padding:var(--s-2) var(--s-4);align-items:center;justify-content:space-between}.next-modal-header .left-part .next-modal-title{font-size:var(--font-size-body-2);line-height:var(--font-lineheight-1);color:var(--color-text1-3)}.next-modal-header .left-part .next-modal-title .next-modal-edit-icon{margin-left:var(--s-1);vertical-align:middle}.next-modal-header .left-part .next-modal-title .edit-title{display:inline-block;vertical-align:middle}.next-modal-header .left-part .next-modal-description{font-size:var(--font-size-body-1);line-height:var(--font-lineheight-1);color:var(--color-text1-1)}.next-modal-header .right-part{display:flex;justify-content:flex-end}.next-modal-header .right-part .next-modal-operations{line-height:var(--s-9)}.next-modal-header .right-part .next-modal-side-drawer-switch{box-sizing:border-box;height:var(--s-8);margin:2px var(--s-3);border-radius:var(--corner-1);border:1px solid var(--color-line1-3);padding:5px var(--s-3);font-size:var(--font-size-body-1);line-height:var(--font-lineheight-1);color:var(--color-text1-3)}.next-modal-header .right-part .next-modal-side-drawer-switch-label{vertical-align:middle;display:inline-block}.next-modal-header .right-part .next-modal-side-drawer-switch .next-switch{margin:2px 0 2px var(--s-2);vertical-align:middle}.next-modal-header .right-part .next-modal-close{height:var(--s-6);margin:6px 0}.next-modal-body{height:calc(100% - 60px);overflow:hidden;display:flex}.next-modal-body .next-modal-children,.next-modal-body .next-modal-side-drawer{height:100%;overflow:auto}.next-modal-body .next-modal-children{flex:1;background:var(--color-fill1-2)}.next-modal-body .next-modal-side-drawer{background:var(--color-fill1-1);overflow:hidden;transition:width .3s ease-out}.next-modal-body .next-modal-side-drawer.next-modal-side-drawer-visible{box-shadow:-1px 0 0 0 var(--color-fill1-3);overflow:auto}.next-modal-header .next-modal-title-box{display:flex;align-items:center}.next-modal-header .next-modal-title-box .next-modal-title-icon{color:var(--color-fill1-6,#8b8b8b);font-size:var(--font-size-body-2,12px);margin-right:var(--modal-title-icon-margin-right,12px);cursor:pointer;transform:translateY(var(--modal-title-icon-transform-top,2px))}.next-badge .next-badge-count,.next-badge .next-badge-dot{box-shadow:0 0 0 2px var(--badge-border-color,#fff)}.next-upload-dragable .next-upload-drag{transition:all .1s linear}.next-upload-dragable .next-upload-drag-over{background:var(--color-brand1-1)}.next-upload-card{border-radius:var(--corner-1)}.next-upload-list-card .next-upload-list-item-wrapper{border-style:dashed;border-radius:var(--corner-1)}.next-upload-list-card .next-upload-list-item-progress .next-progress-line-overlay{border-radius:0 var(--corner-1) var(--corner-1) var(--corner-1)}.next-calendar-card .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-card .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-panel .next-calendar-cell.next-selected .next-calendar-year,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-date,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-month,.next-calendar-range .next-calendar-cell.next-selected .next-calendar-year{animation:none}.next-drawer-footer{position:absolute;bottom:0;width:100%;padding:var(--drawer-footer-padding-top,10px) var(--drawer-footer-padding-right,16px) var(--drawer-footer-padding-bottom,10px) var(--drawer-footer-padding-left,16px);left:0;background:var(--drawer-title-bg-color,var(--drawer-bg));border-radius:0 0 4px 4px;z-index:3}.next-drawer-footer-has-shadow,.next-drawer-footer-line{border-top:var(--drawer-footer-border-width,1px) var(--line-solid,solid) var(--drawer-footer-border-color,var(--color-line1-1))}.next-drawer-footer-has-shadow{box-shadow:var(--shadow-1-up)}.next-drawer-footer-left,.next-drawer-footer-right{text-align:right}.next-drawer-footer-center{text-align:center}.next-drawer{overflow:hidden}.next-drawer .next-drawer-body{height:calc(100% - var(--drawer-has-footer-margin-bottom, 40px))}.next-drawer-has-footer .next-drawer-body{margin-bottom:var(--drawer-has-footer-margin-bottom,40px);padding-bottom:calc(var(--drawer-content-padding-bottom, 20px) + var(--drawer-has-footer-margin-bottom, 40px) + var(--drawer-footer-padding-bottom, 10px))}.next-overlay-wrapper .next-overlay-inner::-webkit-scrollbar{width:var(--scrollbar-width,4px);height:var(--scrollbar-height,4px)}.next-overlay-wrapper .next-overlay-inner::-webkit-scrollbar-track{opacity:.5;background:var(--scrollbar-track-bg,#eaedf0);border-radius:var(--scrollbar-track-border-radius,3px)}.next-overlay-wrapper .next-overlay-inner::-webkit-scrollbar-thumb{opacity:.5;background:var(--scrollbar-thumb-bg,#abb6c0);border-radius:var(--scrollbar-thumb-border-radius,3px)}body{line-height:1.5}code,kbd,pre,samp{font-family:Consolas,Menlo,Courier,monospace}a:active,a:hover,a:link,a:visited{text-decoration:none}body{color:var(--color-text1-9);background:#fff;background:var(--body-bg,var(--color-fill1-1))}body.lang-ja{font-family:Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,メイリオ,Meiryo,MS Pゴシック,Helvetica Neue,Helvetica,Arial,sans-serif}.next-checkbox-inner{position:relative}.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner>.next-icon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(var(--checkbox-icon-scale,.8));margin:0}.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner.next-checkbox-inner>.next-icon:before{display:inline-block;width:var(--checkbox-icon-size,16px);height:var(--checkbox-icon-size,16px);font-size:var(--checkbox-icon-size,16px);line-height:inherit}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon,.next-input .next-input-hint.next-input-hint.next-input-hint{color:var(--input-hint-icon-color,#333);border-radius:50%;width:var(--input-hint-icon-outer-size,16px);height:var(--input-hint-icon-outer-size,16px);display:flex;justify-content:center;align-items:center}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon:hover{background-color:var(--input-hint-icon-hover-color,#f7f9fa)}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon:before{transform:var(--input-clear-icon-transform,scale(.59))}.next-input .next-input-clear-icon.next-input-clear-icon.next-input-clear-icon:before,.next-input .next-input-hint.next-input-hint.next-input-hint:before{width:var(--input-hint-icon-inner-size,12px);font-size:var(--input-hint-icon-inner-size,12px);line-height:var(--input-hint-icon-inner-size,12px)}.next-balloon-close{display:inline-flex;justify-content:center;align-items:center;width:18px;height:18px;border-radius:50%}.next-balloon-close:hover{background-color:var(--balloon-hover-bg,#f7f9fa)}.next-breadcrumb-icon-sep:before{font-family:NextIcon}.next-dialog-header{padding-right:calc(var(--dialog-title-padding-left-right) + var(--dialog-close-right))}.next-dialog.next-closeable:not(.next-dialog-quick) .next-dialog-close{top:var(--dialog-close-top-normal,var(--dialog-close-top,24px))}.next-tag-large{border-radius:var(--tag-large-corner-radius,14px)}.next-tag:not([disabled]) .next-tag-body{cursor:var(--tag-cursor,pointer)}.next-tag:not([disabled]).next-tag.next-tag:focus{color:var(--tag-focus-color);background-color:var(--tag-focus-bg)}.next-tag:not([disabled]).next-tag.next-tag:hover{color:var(--tag-hover-color);background-color:var(--tag-hover-bg)}.next-tag:not([disabled]).next-tag.next-tag:hover .next-icon-close:before{content:var(--icon-content-delete-filling)}.next-tag.wind-tag-colored{border:0;cursor:default}.next-tag.wind-tag-colored .next-tag-body{top:0}.next-tag.wind-tag-colored-light-steel-blue,.next-tag.wind-tag-colored-light-steel-blue:hover{background:#edf3f7!important;color:#628099!important}.next-tag.wind-tag-colored-plum,.next-tag.wind-tag-colored-plum:hover{background:#f0edf7!important;color:#746299!important}.next-tag.wind-tag-colored-misty-rose,.next-tag.wind-tag-colored-misty-rose:hover{background:#f7eded!important;color:#996262!important}.next-tag.wind-tag-colored-light-goldenrod-yellow,.next-tag.wind-tag-colored-light-goldenrod-yellow:hover{background:#f7f6ed!important;color:#999062!important}.next-tag.wind-tag-colored-pale-green,.next-tag.wind-tag-colored-pale-green:hover{background:#edf7ed!important;color:#629962!important}.next-tag.wind-tag-colored-gray,.next-tag.wind-tag-colored-gray:hover{background:#e5e5e5!important;color:#595959!important}.next-tag.wind-tag-colored-silver{box-sizing:border-box;border:1px solid #bfbfbf}.next-tag.wind-tag-colored-silver,.next-tag.wind-tag-colored-silver:hover{background:#fafafa!important;color:#595959!important}.next-tag.wind-tag-colored-silver .next-tag-body{top:-1px}.next-tag.wind-tag-colored-silver:hover{border-color:#bfbfbf!important}.next-tag.is-wind.next-tag-small{border-radius:calc(var(--size-base)*5/2);cursor:pointer}.next-tag.is-wind.next-tag-small,.next-tag.is-wind.next-tag-small .next-tag-body{height:calc(var(--size-base)*5);line-height:calc(var(--size-base)*5);vertical-align:middle}.next-tag.is-wind.next-tag-small .next-tag-body{font-size:calc(var(--size-base)*3);top:-1px}.next-tag.is-wind.next-tag-medium{border-radius:calc(var(--size-base)*6/2);cursor:pointer}.next-tag.is-wind.next-tag-medium,.next-tag.is-wind.next-tag-medium .next-tag-body{height:calc(var(--size-base)*6);line-height:calc(var(--size-base)*6);vertical-align:middle}.next-tag.is-wind.next-tag-medium .next-tag-body{font-size:calc(var(--size-base)*3);top:-1px}.next-tag.is-wind.next-tag-large{border-radius:calc(var(--size-base)*7/2);cursor:pointer}.next-tag.is-wind.next-tag-large,.next-tag.is-wind.next-tag-large .next-tag-body{height:calc(var(--size-base)*7);line-height:calc(var(--size-base)*7);vertical-align:middle}.next-tag.is-wind.next-tag-large .next-tag-body{font-size:calc(var(--size-base)*3 + 2px);top:-1px}.next-tag.is-wind.next-tag-closable>.next-tag-close-btn{color:var(--color-text1-2);height:auto;position:relative;top:-1px}.next-tag.is-wind.next-tag-closable>.next-tag-close-btn .next-icon:before{transform:scale(.84)}.next-tag.is-wind .next-tag-body .next-icon{vertical-align:baseline}.next-message.next-message-success.next-toast{border-left:var(--message-border-width,4px) solid var(--message-success-border-color,#00a700)}.next-message.next-message-warning.next-toast{border-left:var(--message-border-width,4px) solid var(--message-warning-border-color,#fac800)}.next-message.next-message-error.next-toast{border-left:var(--message-border-width,4px) solid var(--message-error-border-color,#c80000)}.next-message.next-message-notice.next-toast{border-left:var(--message-border-width,4px) solid var(--message-notice-border-color,#0064c8)}.next-message.next-message-help.next-toast{border-left:var(--message-border-width,4px) solid var(--message-help-border-color,#888)}.next-message.next-medium{padding-left:16px;padding-right:12px}.next-message.next-medium.next-inline:not(.next-message-loading){border:0}.next-message.next-medium .next-message-symbol{line-height:var(--message-line-height,21px)}.next-message.next-medium .next-message-symbol:before{font-size:14px;width:14px;line-height:inherit}.next-message.next-medium.next-title-content .next-message-title{font-weight:600;line-height:var(--message-line-height,22px)}.next-message.next-medium .next-message-content{line-height:var(--message-line-height,20px);margin-top:0}.next-message.next-medium.next-only-content .next-message-symbol{line-height:var(--message-line-height,19px)}.next-message.next-medium.next-only-content .next-message-symbol:before{font-size:14px;width:14px;line-height:inherit}.next-message.next-medium.next-only-content .next-message-content{line-height:var(--message-line-height,20px)}.next-message.next-toast.next-overlay-inner.next-message-wrapper{z-index:1031}.next-menu-btn.next-btn-text.next-btn-normal:hover .next-menu-btn-arrow{color:var(--btn-text-normal-color-hover,#555)}.next-menu-btn.next-btn-text.next-btn-primary .next-menu-btn-arrow{color:var(--btn-text-primary-color,#555)}.next-menu-btn.next-btn-text.next-btn-primary:hover .next-menu-btn-arrow{color:var(--btn-text-primary-color-hover,#555)}.next-menu-btn.next-btn-text.next-btn-secondary .next-menu-btn-arrow{color:var(--btn-text-secondary-color,#555)}.next-menu-btn.next-btn-text.next-btn-secondary:hover .next-menu-btn-arrow{color:var(--btn-text-secondary-color-hover,#555)}.next-number-picker.is-wind.next-number-picker-inline.next-medium{min-width:calc(var(--size-base)*30)}.next-number-picker.is-wind.next-number-picker-inline .next-input{position:relative;left:-1px;z-index:1}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-before{position:relative}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-before:hover{z-index:2}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-before .next-btn{margin:0}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-after{position:relative;left:-2px}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-after:hover{z-index:2}.next-number-picker.is-wind.next-number-picker-inline .next-input-group-addon.next-after .next-btn{margin:0}.next-number-picker>.next-input{border:var(--number-picker-normal-border,1px solid #dedede)}.next-number-picker>.next-input:hover{border:var(--number-picker-normal-border-hover,1px solid #737373)}.next-pagination.is-wind .next-btn:not(.next-pagination-jump-go):not(.next-current){background:#fff}.next-pagination.is-wind .next-btn.next-btn-normal:not([disabled]):not(.next-current):not(.next-pagination-jump-go):hover{color:var(--color-text1-5);border-color:var(--color-line1-4);z-index:1}.next-pagination.is-wind .next-btn.next-btn-normal:not([disabled]):not(.next-current):not(.next-pagination-jump-go):hover .next-icon{color:var(--color-text1-5)}.next-pagination.is-wind .next-btn.next-current{border-color:var(--color-brand1-6);z-index:1}.next-pagination.is-wind .next-btn.next-pagination-jump-go{margin-left:calc(var(--size-base)*2)}.next-pagination.is-wind .next-btn.next-small{min-width:calc(var(--size-base)*6)}.next-pagination.is-wind .next-btn.next-medium{min-width:calc(var(--size-base)*8)}.next-pagination.is-wind .next-btn.next-large{min-width:calc(var(--size-base)*9)}.next-pagination.is-wind .next-btn.next-btn[disabled]{border:1px solid #ebebeb;color:#c1c1c1;background:#fafafa}.next-pagination.is-wind .next-btn.next-btn[disabled] .next-icon{color:#dedede}.next-pagination.is-wind .next-pagination-item.next-next,.next-pagination.is-wind .next-pagination-list,.next-pagination.is-wind .next-pagination-list .next-btn{margin:0 0 0 -1px!important}.next-pagination.is-wind .next-pagination-jump-input.next-input{margin:0 8px}.next-pagination.is-wind .next-pagination-jump-input.next-input input{padding:0 4px;text-align:center}.next-pagination.is-wind .next-pagination-size-selector .next-select{margin:0}.next-step.is-wind .next-step-item-content{color:var(--color-text1-2)!important}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-horizontal .next-step-item-node-placeholder,.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-node-placeholder{height:24px;width:24px}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-horizontal .next-step-item-node-placeholder .next-step-item-node-circle,.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-node-placeholder .next-step-item-node-circle{height:24px;width:24px;line-height:22px}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-horizontal .next-step-item-node-placeholder .next-step-item-node-circle .next-icon:before,.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-node-placeholder .next-step-item-node-circle .next-icon:before{font-size:12px}.next-step.is-wind.next-step-circle.next-enhanced-step-size-small.next-step-vertical .next-step-item-body>.next-step-item-title{margin-top:4px}.next-step.is-wind.next-step-circle.next-step-dot-circle-hoz-placement.next-step-label-horizontal.next-enhanced-step-size-small>.next-step-item .next-step-item-body .next-step-item-title{margin-top:3px}.next-step.is-wind.next-step-vertical>.next-step-item{height:auto}.next-step.is-wind.next-step-vertical>.next-step-item>.next-step-item-tail{margin:8px auto}.next-step.is-wind.next-step-dot-circle-hoz{display:flex;justify-content:space-between}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item{flex:1 0 auto;box-sizing:content-box}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-last{flex:0 0 auto}.next-step.is-wind.next-step-dot-circle-hoz.next-step-dot>.next-step-item-first{padding-left:40px}.next-step.is-wind.next-step-dot-circle-hoz.next-step-dot>.next-step-item-last{padding-right:40px}.next-step.is-wind.next-step-dot-circle-hoz.next-step-dot>.next-step-item-last>.next-step-item-body{left:-30px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-first{padding-left:25px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-first .next-step-item-body{left:2px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-last{padding-right:25px}.next-step.is-wind.next-step-dot-circle-hoz .next-step-item-last .next-step-item-body{left:-23px}.next-step.is-wind.next-step-dot-circle-hoz-placement{display:flex;justify-content:space-between;padding:0}.next-step.is-wind.next-step-dot-circle-hoz-placement .next-step-item{flex:1 0 auto;box-sizing:content-box}.next-step.is-wind.next-step-dot-circle-hoz-placement .next-step-item-last{flex:0 0 auto}.next-step.is-wind.next-step-dot-circle-hoz-placement.next-step-dot>.next-step-item-first{padding-left:40px}.next-step.is-wind.next-step-dot-circle-hoz-placement.next-step-dot>.next-step-item-last{padding-right:40px}.next-step.is-wind.next-step-dot-circle-hoz-placement.next-step-dot>.next-step-item-last>.next-step-item-body{left:-30px}.next-step.is-wind.next-step-dot-circle-hoz-placement .next-step-item-first>.next-step-item-container{padding-left:0}.next-tabs.next-tabs-pure .next-tabs-tab{border-bottom:var(--line-solid,solid) var(--tab-pure-divider-line-width,1px) var(--tab-pure-divider-border-color,#e3e4e6)}.next-tabs.next-tabs-pure .next-tabs-tab.active:before{bottom:-1px}.next-table .next-table-expanded-row{background-color:#ebebeb}.next-table td .next-table-cell-wrapper,.next-table th .next-table-cell-wrapper{word-break:normal}.next-table td.next-table-selection .next-table-cell-wrapper,.next-table th.next-table-selection .next-table-cell-wrapper{line-height:14px}.next-table .next-table-empty{height:20px;line-height:20px;margin:16px 0;padding:0}.next-table.is-wind th:not(.next-table-selection) .next-icon{color:#888}.next-table.is-wind .next-table-sort.next-table.is-wind .next-table-sort:hover .next-icon,.next-table.is-wind th:not(.next-table-selection) .next-icon:hover{color:#555}.next-table.is-wind .next-table-sort.next-table.is-wind .next-table-sort .current .next-icon{color:#0070cc}.next-table-expanded-ctrl .next-table-expand-fold .next--icon-remote,.next-table-expanded-ctrl .next-table-expand-fold:before,.next-table-expanded-ctrl .next-table-expand-unfold .next--icon-remote,.next-table-expanded-ctrl .next-table-expand-unfold:before{width:var(--table-expand-icon-size,16px);font-size:var(--table-expand-icon-size,16px)}.next-menu{padding:var(--menu-padding)}.next-menu.next-menu.next-menu.next-menu.next-menu .next-menu-symbol-icon-selected{color:var(--menu-icon-selected-color)}.next-menu-item:focus-visible{background-color:var(--menu-background-hover,#f7f9fa)}.next-menu .next-menu-group-label{color:var(--menu-group-label-color,#888)}.next-search.next-normal .next-after .next-btn-normal,.next-search.next-search-normal .next-after .next-btn-normal{--btn-medium-min-width:32px}.next-form .next-form-item.next-left .next-form-item-label{padding-right:calc(var(--size-base, 4px)*4)}.next-form .next-form-item.next-top .next-form-item-label{line-height:calc(var(--size-base, 4px)*5);margin-bottom:var(--size-base,4px)}.next-form .next-form-item .next-form-item-label label[required]:before{display:inline}.next-form .next-form-item .next-form-item-label label[required]:after{display:none}.next-form .next-form-item-control .next-select{margin:0}.next-form .next-form-item-control .next-checkbox-group.next-checkbox-group-ver .next-checkbox-wrapper,.next-form .next-form-item-control .next-checkbox-group.next-checkbox-group-ver .next-radio-wrapper,.next-form .next-form-item-control .next-radio-group.next-radio-group-ver .next-checkbox-wrapper,.next-form .next-form-item-control .next-radio-group.next-radio-group-ver .next-radio-wrapper{margin-top:var(--size-base,4px);line-height:calc(var(--size-base, 4px)*5)}.next-radio-label{margin-left:calc(var(--size-base, 4px)*2)}.next-radio-wrapper{display:inline-block;vertical-align:middle;line-height:.5}.next-radio-wrapper .next-radio-inner{width:var(--radio-box-size,14px)!important;height:var(--radio-box-size,14px)!important}.next-radio-wrapper .next-radio-inner>.next-icon{display:inline-block;line-height:var(--radio-box-size,14px);position:static;margin:0;vertical-align:top}.next-radio-wrapper input[type=radio]{width:var(--radio-box-size,14px)!important;height:var(--radio-box-size,14px)!important}.next-radio-group.next-radio-button .next-radio-wrapper{text-align:center}.next-btn-secondary:focus-visible,.next-btn-secondary:hover{box-shadow:var(--btn-normal-hover-shadow)}.next-btn-secondary:active{box-shadow:var(--btn-normal-active-shadow)}.next-btn-secondary.next-btn-text:focus-visible,.next-btn-secondary.next-btn-text:hover{background-color:var(--btn-text-secondary-bg-hover)}.next-btn-secondary.next-btn-text:active{background-color:var(--btn-text-secondary-bg-active)}.next-btn-secondary.next-btn-text[disabled]{background-color:initial}.next-btn-secondary.next-btn-text.next-small{border-radius:var(--btn-size-s-corner,2px);padding:0 var(--btn-size-s-padding,8px);height:var(--btn-size-s-height,24px);font-size:var(--btn-size-s-font,12px);border-width:var(--btn-size-s-border-width,1px)}.next-btn-secondary.next-btn-text.next-medium{border-radius:var(--btn-size-m-corner,2px);padding:0 var(--btn-size-m-padding,16px);height:var(--btn-size-m-height,32px);font-size:var(--btn-size-m-font,12px);border-width:var(--btn-size-m-border-width,1px)}.next-btn-secondary.next-btn-text.next-large{border-radius:var(--btn-size-l-corner,2px);padding:0 var(--btn-size-l-padding,16px);height:var(--btn-size-l-height,36px);font-size:var(--btn-size-l-font,14px);border-width:var(--btn-size-l-border-width,1px)}.next-collapse-panel-expanded>.next-collapse-panel-content{padding-bottom:8px}.next-range-picker{width:auto}.next-range-picker-trigger-input.next-input{min-width:200px}.next-date-picker2,.next-range-picker2-panel{--color-brand1-9:#0064c8}.next-date-picker2 .next-date-picker2-input-range .next-input{box-shadow:none}.next-time-picker2,.next-time-picker2-panel{--color-brand1-1:#0064c8}.next-time-picker2 .next-time-picker2-menu-item.next-selected,.next-time-picker2-panel .next-time-picker2-menu-item.next-selected{color:#fff}.next-calendar2,.next-calendar2-panel{--color-brand1-9:#0064c8}.next-dialog-message.next-message{margin-top:var(--dialog-message-padding,0)}:root{--range-scale-item-position-top:initial;--range-size-m-scale-height:initial;--range-size-m-scale-item-border-width:initial;--timeline-item-done-background:initial;--timeline-item-done-border:initial;--switch-size-s-width:initial;--balloon-size-arrow-expose:initial;--pagination-item-hover-bg:initial;--active-shadow:initial;--active-transition:initial;--btn-font-weight:initial;--btn-pure-primary-bg-disabled:initial;--btn-pure-primary-color-disabled:initial;--btn-pure-primary-border-style:initial;--btn-primary-hover-shadow:initial;--btn-primary-active-shadow:initial;--btn-normal-hover-shadow:initial;--btn-normal-active-shadow:initial;--btn-text-secondary-bg-hover:initial;--btn-text-secondary-bg-active:initial;--btn-small-min-width:initial;--btn-small-cn-width:initial;--btn-medium-min-width:initial;--btn-medium-cn-width:initial;--btn-large-cn-width:initial;--tab-pure-text-color-hover:initial;--tab-pure-text-color-normal:initial;--tab-pure-hover-bg:initial;--search-normal-normal-btn-bg-color:initial;--search-btn-hover-bg:initial;--menu-icon-selected-color:initial;--select-selected-font-weight:initial;--tag-hover-color:initial;--tag-focus-color:initial;--tag-focus-bg:initial;--tag-hover-bg:initial;--number-picker-height-small:initial;--number-picker-height-medium:initial;--number-picker-height-large:initial;--cascader-menu-width:initial;--dialog-footer-align-default:initial;--message-line-height:initial;--balloon-arrow-border-radius:initial;--dialog-close-top-normal:initial;--select-hint-color:initial;--balloon-hover-bg:initial;--card-hover-shadow:initial;--card-background:initial;--card-hover-background:initial;--card-header-background:initial;--card-hover-border-color:initial;--card-corner:initial;--input-hint-color:initial;--input-hint-icon-color:initial;--input-hint-icon-hover-color:initial;--input-bg-color:initial;--dropdown-bg-color:initial;--tree-select-background:initial;--tree-node-normal-background:initial;--icon-font-path:"//at.alicdn.com/t/font_1435786_ccri5b3kw0n";--icon-content-undo-fill:"";--icon-content-info-for-component:"";--icon-content-questionnaire-line:"";--icon-content-accesskey-line:"";--icon-content-management-fill:"";--icon-content-hourglass-fill:"";--icon-content-chart-relation-fill:"";--icon-content-screen-code-line:"";--icon-content-map-line:"";--icon-content-display-arrow-right-line:"";--icon-content-database-plus-line:"";--icon-content-wangwang-line:"";--icon-content-alipay-fill:"";--icon-content-image-line:"";--icon-content-key-line:"";--icon-content-hatch-line:"";--icon-content-scan-line:"";--icon-content-balance-line:"";--icon-content-align-vertical-bottom-fill:"";--icon-content-align-horizontal-left-line:"";--icon-content-chart-bar-line:"";--icon-content-align-vertical-top-fill:"";--icon-content-pic-center-line:"";--icon-content-cloud-machine-line:"";--icon-content-chart-scatter-plot-line:"";--icon-content-all-line:"";--icon-content-border-verticle-line:"";--icon-content-cut-line:"";--icon-content-balance-fill:"";--icon-content-layer-line:"";--icon-content-box-line:"";--icon-content-chart-area-fill:"";--icon-content-mobile-check-line:"";--icon-content-pic-side-line:"";--icon-content-up-to-top-line:"";--icon-content-enlarge-line:"";--icon-content-double-up-line:"";--icon-content-page-first-line:"";--icon-content-naver-fill:"";--icon-content-sina-fill:"";--icon-content-cloud-upload-fill:"";--icon-content-stackoverflow-fill:"";--icon-content-youtube-fill:"";--icon-content-WeChat-fill:"";--icon-content-button-right-fill:"";--icon-content-page-last-line:"";--icon-content-authentication-line:"";--icon-content-dollar-line:"";--icon-content-applets-fill:"";--icon-content-hot-fill:"";--icon-content-server-fault-fill:"";--icon-content-gallery-view-line:"";--icon-content-authentication-fill:"";--icon-content-linkedin-fill:"";--icon-content-align-horizontal-left-fill:"";--icon-content-button-down-fill:"";--icon-content-button-up-fill:"";--icon-content-align-vertical-top-line:"";--icon-content-screen-arrow-left-line:"";--icon-content-googleplus-fill:"";--icon-content-play-outline-fill:"";--icon-content-comment-fill:"";--icon-content-document-task-line:"";--icon-content-calculator-fill:"";--icon-content-database-plus-fill:"";--icon-content-twitter-fill:"";--icon-content-chart-scatter-plot-fill:"";--icon-content-copy-line:"";--icon-content-border-verticle-fill:"";--icon-content-folders-line:"";--icon-content-check-line:"";--icon-content-star-fill:"";--icon-content-chevron-sort-line:"";--icon-content-user-certification-line:"";--icon-content-help-fill:"";--icon-content-like-fill:"";--icon-content-arrow-up-line:"";--icon-content-info-line:"";--icon-content-refresh-line:"";--icon-content-checkmark-line:"";--icon-content-list-line:"";--icon-content-calculator-line:"";--icon-content-minus-fill:"";--icon-content-forbidden-line:"";--icon-content-warning-line:"";--icon-content-caution-line:"";--icon-content-a-1688-fill:"";--icon-content-like-line:"";--icon-content-closemark-line:"";--icon-content-warning-fill:"";--icon-content-help-line:"";--icon-content-plus-fill:"";--icon-content-info-fill:"";--icon-content-caution-fill:"";--icon-content-ascending-line:"";--icon-content-double-down-line:"";--icon-content-arrow-down-line:"";--icon-content-arrow-left-line:"";--icon-content-double-left-line:"";--icon-content-button-sort-fill:"";--icon-content-down-to-bottom-line:"";--icon-content-star-line:"";--icon-content-forward-line:"";--icon-content-sort-line:"";--icon-content-enlarge-fill:"";--icon-content-double-right-line:"";--icon-content-GitHub-fill:"";--icon-content-expand-line:"";--icon-content-switch-line:"";--icon-content-descending-line:"";--icon-content-play-fill:"";--icon-content-back-line:"";--icon-content-stop-outline-line:"";--icon-content-email-fill:"";--icon-content-pause-outline-line:"";--icon-content-unlock-line:"";--icon-content-pause-fill:"";--icon-content-discount-line:"";--icon-content-sub-account-line:"";--icon-content-navigation-line:"";--icon-content-plus-circle-line:"";--icon-content-user-avatar-full-fill:"";--icon-content-close-line:"";--icon-content-notification-line:"";--icon-content-taobao-fill:"";--icon-content-notification-fill:"";--icon-content-flow-line:"";--icon-content-download-line:"";--icon-content-international-line:"";--icon-content-notification-off-fill:"";--icon-content-compress-fill:"";--icon-content-document-add-line:"";--icon-content-notification-off-line:"";--icon-content-lock-line:"";--icon-content-forbidden-fill:"";--icon-content-user-avatar-line:"";--icon-content-partner-line:"";--icon-content-et-line:"";--icon-content-international-fill:"";--icon-content-customer-sercive-line:"";--icon-content-user-follow-line:"";--icon-content-screen-arrow-right-line:"";--icon-content-more-line:"";--icon-content-close-fill:"";--icon-content-minus-circle-line:"";--icon-content-facebook-fill:"";--icon-content-check-fill:"";--icon-content-user-admin-line:"";--icon-content-collapse-line:"";--icon-content-bug-report-line:"";--icon-content-credits-line:"";--icon-content-view-off-fill:"";--icon-content-upload-line:"";--icon-content-setting-line:"";--icon-content-message-line:"";--icon-content-edit-line:"";--icon-content-message-unread-line:"";--icon-content-view-off-line:"";--icon-content-phonecall-line:"";--icon-content-edit-fill:"";--icon-content-document-download-line:"";--icon-content-order-unread-line:"";--icon-content-view-line:"";--icon-content-document-line:"";--icon-content-credits-fill:"";--icon-content-chart-pie-line:"";--icon-content-folder-line:"";--icon-content-time-fill:"";--icon-content-renew-line:"";--icon-content-order-line:"";--icon-content-cart-empty-line:"";--icon-content-zoom-out-line:"";--icon-content-play-outline-line:"";--icon-content-share-fill:"";--icon-content-time-line:"";--icon-content-arrow-right-line:"";--icon-content-button-left-fill:"";--icon-content-cart-with-line:"";--icon-content-user-profile-line:"";--icon-content-zoom-in-line:"";--icon-content-cart-fill:"";--icon-content-search-line:"";--icon-content-phonecall-off-line:"";--icon-content-location-line:"";--icon-content-stop-fill:"";--icon-content-user-avatar-fill:"";--icon-content-compress-line:"";--icon-content-share-line:"";--icon-content-trainin-line:"";--icon-content-paper-plane-fill:"";--icon-content-recharge-line:"";--icon-content-print-fill:"";--icon-content-scroll-mode-line:"";--icon-content-sort-circle-line:"";--icon-content-drag-line:"";--icon-content-arrow-circular-line:"";--icon-content-calendar-line:"";--icon-content-external-link-line:"";--icon-content-remote-control-line:"";--icon-content-backspace-fill:"";--icon-content-compass-line:"";--icon-content-cloud-download-fill:"";--icon-content-diagnose-line:"";--icon-content-management-line:"";--icon-content-display-arrow-left-line:"";--icon-content-resource-setting-fill:"";--icon-content-plus-line:"";--icon-content-minus-line:"";--icon-content-backspace-line:"";--icon-content-terminal-line:"";--icon-content-home-line:"";--icon-content-structured-data-line:"";--icon-content-step-mode-line:"";--icon-content-database-line:"";--icon-content-pic-center-fill:"";--icon-content-transanction-line:"";--icon-content-package-fill:"";--icon-content-inbox-line:"";--icon-content-align-horizontal-center-line:"";--icon-content-comment-line:"";--icon-content-pin-fill:"";--icon-content-gift-line:"";--icon-content-filter-line:"";--icon-content-flag-line:"";--icon-content-package-line:"";--icon-content-power-off-line:"";--icon-content-screen-check-line:"";--icon-content-cloud-download-line:"";--icon-content-wifi-line:"";--icon-content-screen-error-line:"";--icon-content-save-line:"";--icon-content-mobile-line:"";--icon-content-charging-pile-line:"";--icon-content-application-group-fill:"";--icon-content-outdent-line:"";--icon-content-screen-line:"";--icon-content-pin-fixed-fill:"";--icon-content-layer-fill:"";--icon-content-cloud-upload-line:"";--icon-content-screen-monitoring-line:"";--icon-content-tag-line:"";--icon-content-qrcode-line:"";--icon-content-pic-side-fill:"";--icon-content-mobile-error-line:"";--icon-content-paperclip-line:"";--icon-content-delete-line:"";--icon-content-indent-line:"";--icon-content-application-line:"";--icon-content-align-horizontal-right-fill:"";--icon-content-email-line:"";--icon-content-align-horizontal-center-fill:"";--icon-content-sql-line:"";--icon-content-dingtalk-fill:"";--icon-content-inbox-fill:"";--icon-content-folder-add-line:"";--icon-content-align-horizontal-right-line:"";--icon-content-align-vertical-bottom-line:"";--icon-content-connection-line:"";--icon-content-new-fill:"";--icon-content-hourglass-line:"";--icon-content-terminal-fill:"";--icon-content-alert-fill:"";--icon-content-rank-line:"";--icon-content-new-releases-fill:"";--icon-content-news-line:"";--icon-reset:"";--icon-xxxl:var(--s-16,64px);--icon-xxl:var(--s-12,48px);--icon-xl:var(--s-8,32px);--icon-l:var(--s-6,24px);--icon-m:var(--s-5,20px);--icon-s:var(--s-4,16px);--icon-xs:var(--s-3,12px);--icon-xxs:var(--s-2,8px);--icon-font-name:"icon";--icon-content-dashboard:"";--icon-content-list:"";--icon-content-detail:"";--icon-content-form:"";--icon-content-chart-pie:"";--icon-content-exit:"";--icon-content-eye-close:"";--icon-content-toggle-right:"";--icon-content-toggle-left:"";--icon-content-wind-loading:"";--icon-content-shoppingcart:"";--icon-content-Group:"";--icon-content-Group1:"";--icon-content-Xconsole:"";--icon-content-Directory-tree:"";--icon-content-cry1:"";--icon-content-email1:"";--icon-content-help1:"";--icon-content-refresh1:"";--icon-content-set1:"";--icon-content-account1:"";--icon-content-atm1:"";--icon-content-clock1:"";--icon-content-attachment1:"";--icon-content-filter1:"";--icon-content-download1:"";--icon-content-ellipsis1:"";--icon-content-favorites-filling1:"";--icon-content-smile1:"";--icon-content-arrow-right1:"";--icon-content-arrow-down1:"";--icon-content-arrow-up1:"";--icon-content-add1:"";--icon-content-minus1:"";--icon-content-edit1:"";--icon-content-error1:"";--icon-content-select1:"";--icon-content-ashbin1:"";--icon-content-calendar1:"";--icon-content-success1:"";--icon-content-warning1:"";--icon-content-search1:"";--icon-content-prompt1:"";--icon-content-sorting1:"";--icon-content-ascending1:"";--icon-content-descending1:"";--icon-content-upload1:"";--icon-content-success-filling1:"";--icon-content-picture1:"";--icon-content-close1:"";--icon-content-semi-select1:"";--icon-content-loading1:"";--icon-content-arrow-double-left1:"";--icon-content-arrow-double-right1:"";--icon-content-delete-filling1:"";--icon-content-arrow-left1:"";--icon-content-accesskeys:"";--icon-content-management:"";--icon-content-aliyun-logo:"";--icon-content-drag:"";--icon-content-ellipsis-vertical:"";--icon-content-gallery-view:"";--icon-content-WIFI:"";--icon-content-bug-report:"";--icon-content-qrcode:"";--icon-content-scan:"";--icon-content-cut:"";--icon-content-gift:"";--icon-content-link:"";--icon-content-poweroff:"";--icon-content-key:"";--icon-content-safety-certificate:"";--icon-content-supervise:"";--icon-content-tag-subscipt:"";--icon-content-chart-pie-alt:"";--icon-content-chart-relation:"";--icon-content-chart-scatter-plot:"";--icon-content-chart-area:"";--icon-content-chart-line:"";--icon-content-display-code:"";--icon-content-display-arrow-right:"";--icon-content-display-arrow-left:"";--icon-content-laptop-error:"";--icon-content-laptop-check:"";--icon-content-laptop:"";--icon-content-mobile-error:"";--icon-content-mobile-check:"";--icon-content-mobile-alt:"";--icon-content-aliwangwang:"";--icon-content-nail:"";--icon-content-nail-fixed:"";--icon-content-wind-edit:"";--icon-content-dollar:"";--icon-content-transanction:"";--icon-content-filter-fill:"";--icon-content-all-fill:"";--icon-content-databaseplus-fill:"";--icon-content-database-fill:"";--icon-content-commentlines-fill:"";--icon-content-commentdots-fill:"";--icon-content-paperplane-fill:"";--icon-content-eyeslash-fill:"";--icon-content-eye-fill:"";--icon-content-lightbulb-fill:"";--icon-content-flag-fill:"";--icon-content-tag-fill:"";--icon-content-position-fill:"";--icon-content-location-fill:"";--icon-content-map-fill:"";--icon-content-inboxin-fill:"";--icon-content-box-fill:"";--icon-content-databaseset-fill:"";--icon-content-layergroup-fill:"";--icon-content-cry-fill:"";--icon-content-smile-fill:"";--icon-content-unlock-fill:"";--icon-content-lock-fill:"";--icon-content-alignright-fill:"";--icon-content-alignleft-fill:"";--icon-content-borderbottom-fill:"";--icon-content-bordertop-fill:"";--icon-content-aligncenter-fill:"";--icon-content-borderverticle-fill:"";--icon-content-piccenter-fill:"";--icon-content-picside-fill:"";--icon-content-folderopen-fill:"";--icon-content-folderplus-fill:"";--icon-content-folder-fill:"";--icon-content-file-SQL:"";--icon-content-fileplus-fill:"";--icon-content-file-fill:"";--icon-content-copy-fill:"";--icon-content-headset-fill:"";--icon-content-phone-fill:"";--icon-content-pausecircle-fill:"";--icon-content-stopcircle-fill:"";--icon-content-playcircle-fill:"";--icon-content-delete-fill:"";--icon-content-picture-fill:"";--icon-content-mail-fill:"";--icon-content-heart-fill:"";--icon-content-collection-fill:"";--icon-content-user-group-fill:"";--icon-content-userplus-fill:"";--icon-content-user-fill:"";--icon-content-cog-fill:"";--icon-content-clock-fill:"";--icon-content-calendaralt-fill:"";--icon-content-clouddownload-fill:"";--icon-content-cloudupload-fill:"";--icon-content-exchange-fill:"";--icon-content-info-circle-fill:"";--icon-content-question-circle-fill:"";--icon-content-exclamationcircle-f:"";--icon-content-chart-bar:"";--icon-content-atm:"";--icon-content-email:"";--icon-content-account:"";--icon-content-attachment:"";--icon-content-filter:"";--icon-content-refresh:"";--icon-content-edit:"";--icon-content-set:"";--icon-content-download:"";--icon-content-upload:"";--icon-content-ashbin:"";--icon-content-calendar:"";--icon-content-picture:"";--icon-content-ellipsis:"";--icon-content-close:"";--icon-content-search:"";--icon-content-loading:"";--icon-content-semi-select:"";--icon-content-select:"";--icon-content-ascending:"";--icon-content-descending:"";--icon-content-sorting:"";--icon-content-switch:"";--icon-content-arrow-double-right:"";--icon-content-arrow-double-left:"";--icon-content-arrow-right:"";--icon-content-arrow-left:"";--icon-content-arrow-down:"";--icon-content-arrow-up:"";--icon-content-minus:"";--icon-content-add:"";--icon-content-favorites-filling:"";--icon-content-delete-filling:"";--icon-content-success-filling:"";--icon-content-clock:"";--icon-content-help:"";--icon-content-error:"";--icon-content-prompt:"";--icon-content-warning:"";--icon-content-success:"";--icon-content-cry:"";--icon-content-smile:"";--icon-content-minus-circle-fill:"";--icon-content-plus-circle-fill:"";--icon-content-times-circle-fill:"";--icon-content-check-circle-fill:"";--icon-content-compressalt-fill:"";--icon-content-expandalt-fill:"";--icon-content-wind-filter:"";--icon-content-all:"";--icon-content-database-plus:"";--icon-content-database:"";--icon-content-comment-lines:"";--icon-content-comment-dots:"";--icon-content-paper-plane:"";--icon-content-eye-slash:"";--icon-content-lightbulb:"";--icon-content-flag:"";--icon-content-tag:"";--icon-content-position:"";--icon-content-location:"";--icon-content-map:"";--icon-content-inbox-in:"";--icon-content-box:"";--icon-content-database-set:"";--icon-content-layer-group:"";--icon-content-wind-cry:"";--icon-content-wind-smile:"";--icon-content-align-right:"";--icon-content-align-left:"";--icon-content-border-bottom:"";--icon-content-border-top:"";--icon-content-align-center:"";--icon-content-border-verticle:"";--icon-content-pic-center:"";--icon-content-pic-side:"";--icon-content-folder-plus:"";--icon-content-folder:"";--icon-content-file-SQL1:"";--icon-content-file-plus:"";--icon-content-file:"";--icon-content-headset:"";--icon-content-phone:"";--icon-content-pausecircle:"";--icon-content-stopcircle:"";--icon-content-playcircle:"";--icon-content-delete:"";--icon-content-wind-picture:"";--icon-content-mail:"";--icon-content-like:"";--icon-content-collection:"";--icon-content-user-group:"";--icon-content-account-plus:"";--icon-content-wind-account:"";--icon-content-cog:"";--icon-content-wind-clock:"";--icon-content-calendar-alt:"";--icon-content-clouddownload:"";--icon-content-cloudupload:"";--icon-content-exchange:"";--icon-content-info-circle:"";--icon-content-question-circle:"";--icon-content-exclamation-circle:"";--icon-content-minus-circle:"";--icon-content-plus-circle:"";--icon-content-times-circle:"";--icon-content-check-circle:"";--icon-content-compress-alt:"";--icon-content-expand-alt:"";--icon-content-ban:"";--icon-content-wind-minus:"";--icon-content-plus:"";--icon-content-times:"";--icon-content-check:"";--icon-content-search-minus:"";--icon-content-search-plus:"";--icon-content-wind-search:"";--icon-content-reply:"";--icon-content-undo:"";--icon-content-redo:"";--icon-content-external-link:"";--icon-content-arrows-alt:"";--icon-content-indent:"";--icon-content-outdent:"";--icon-content-wind-sorting:"";--icon-content-wind-switch:"";--icon-content-wind-ascending:"";--icon-content-wind-descending:"";--icon-content-wind-download:"";--icon-content-wind-upload:"";--icon-content-arrow-to-bottom:"";--icon-content-arrow-to-top:"";--icon-content-long-arrow-down:"";--icon-content-long-arrow-up:"";--icon-content-wind-arrow-right:"";--icon-content-wind-arrow-left:"";--icon-content-sort:"";--icon-content-sort-down:"";--icon-content-sort-up:"";--icon-content-caret-right:"";--icon-content-caret-left:"";--icon-content-arrows-v:"";--icon-content-angle-double-down:"";--icon-content-angle-double-up:"";--icon-content-angle-double-right:"";--icon-content-angle-double-left:"";--icon-content-angle-down:"";--icon-content-angle-up:"";--icon-content-angle-right:"";--icon-content-angle-left:"";--icon-content-paperclip:"";--icon-content-connection:"";--icon-content-training:"";--icon-content-process:"";--icon-content-news:"";--icon-content-save:"";--icon-content-print:"";--icon-content-new-releases:"";--icon-content-release:"";--icon-content-wind-warning:"";--icon-content-backspace:"";--icon-content-gem:"";--icon-content-integral:"";--icon-content-star-circle1:"";--icon-content-user-circle:"";--icon-content-cloud-machine-fill:"";--icon-content-cloud-machine:"";--icon-content-terminal:"";--icon-content-shopping-cart:"";--icon-content-folder-open:"";--icon-content-resource:"";--icon-content-rank:"";--icon-content-sync-alt:"";--icon-content-compass:"";--icon-content-arrow-alt-from-top:"";--icon-content-arrow-alt-from-bottom:"";--icon-content-menu:"";--icon-content-icon-drag:"";--icon-content-share:"";--icon-content-arrow-sortdown-smal:"";--icon-content-minus-square-fill:"";--icon-content-plus-square-fill:"";--icon-content-minus-square:"";--icon-content-plus-square:"";--icon-content-stepmode:"";--icon-content-scrollingmode:"";--icon-content-HOT:"";--icon-content-NEW:"";--icon-content-waiting-fill:"";--icon-content-waiting:"";--icon-content-right-arrow-rect:"";--icon-content-left-arrow-rect:"";--icon-content-bell:"";--icon-content-structured-data:"";--icon-content-vector:"";--icon-content-home:"";--icon-content-monitoring:"";--icon-content-diagnose:"";--icon-content-add-subset:"";--icon-content-lock:"";--icon-content-unlock:"";--icon-content-eye:"";--icon-content-copy:"";--line-dotted:dotted;--line-dashed:dashed;--line-solid:solid;--line-zero:0px;--line-3:3px;--line-2:2px;--line-1:1px;--popup-global-shadow:var(--shadow-2-down,0px 2px 8px 0px rgba(0,0,0,0.13));--popup-global-corner:var(--corner-1,0px);--popup-global-border-color:var(--color-line1-2,#c9c9c9);--popup-global-border-style:var(--line-solid,solid);--popup-global-border-width:var(--line-zero,0px);--popup-local-corner:var(--corner-1,0px);--popup-local-border-style:var(--line-solid,solid);--popup-local-border-width:var(--line-1,1px);--popup-local-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--popup-local-border-color:var(--color-line1-5,#ebebeb);--mask-background:var(--color-black,#000);--mask-opacity:0.45;--form-element-large-corner:var(--corner-1,0px);--form-element-medium-corner:var(--corner-1,0px);--form-element-small-corner:var(--corner-1,0px);--form-element-large-icon-size:var(--icon-s,16px);--form-element-medium-icon-size:var(--icon-xs,12px);--form-element-small-icon-size:var(--icon-xs,12px);--form-element-large-preview-font-size:var(--font-size-subhead,14px);--form-element-large-preview-label-font-size:var(--font-size-subhead,14px);--form-element-medium-preview-font-size:var(--font-size-body-1,12px);--form-element-medium-preview-label-font-size:var(--font-size-body-1,12px);--form-element-small-preview-font-size:var(--font-size-caption,12px);--form-element-small-preview-label-font-size:var(--font-size-caption,12px);--form-element-large-preview-height:var(--s-10,40px);--form-element-medium-preview-height:var(--s-7,28px);--form-element-small-preview-height:var(--s-5,20px);--form-element-medium-font-size:var(--font-size-body-1,12px);--form-element-small-font-size:var(--font-size-caption,12px);--form-element-large-font-size:var(--font-size-body-2,14px);--form-element-large-height:var(--s-9,36px);--form-element-medium-height:var(--s-8,32px);--form-element-small-height:var(--s-6,24px);--s-50:200px;--s-49:196px;--s-48:192px;--s-47:188px;--s-46:184px;--s-45:180px;--s-44:176px;--s-43:172px;--s-42:168px;--s-41:164px;--s-40:160px;--s-39:156px;--s-38:152px;--s-37:148px;--s-36:144px;--s-35:140px;--s-34:136px;--s-33:132px;--s-32:128px;--s-31:124px;--s-30:120px;--s-29:116px;--s-28:112px;--s-27:108px;--s-26:104px;--s-25:100px;--s-24:96px;--s-23:92px;--s-22:88px;--s-21:84px;--s-20:80px;--s-19:76px;--s-18:72px;--s-17:68px;--s-16:64px;--s-15:60px;--s-14:56px;--s-13:52px;--s-12:48px;--s-11:44px;--s-10:40px;--s-9:36px;--s-8:32px;--s-7:28px;--s-6:24px;--s-5:20px;--s-4:16px;--s-3:12px;--s-2:8px;--s-1:4px;--s-zero:0px;--size-base:4px;--shadow-3-left:-4px 0px 16px 0px rgba(0,0,0,0.21);--shadow-3-down:0px 4px 16px 0px rgba(0,0,0,0.21);--shadow-3-right:4px 0px 16px 0px rgba(0,0,0,0.21);--shadow-3-up:0px -4px 16px 0px rgba(0,0,0,0.21);--shadow-3:4px 4px 16px 0px rgba(0,0,0,0.21);--shadow-2-left:-2px 0px 8px 0px rgba(0,0,0,0.13);--shadow-2-down:0px 2px 8px 0px rgba(0,0,0,0.13);--shadow-2-right:2px 0px 8px 0px rgba(0,0,0,0.13);--shadow-2-up:0px -2px 8px 0px rgba(0,0,0,0.13);--shadow-2:2px 2px 8px 0px rgba(0,0,0,0.13);--shadow-1-left:-1px 0px 4px 0px rgba(0,0,0,0.13);--shadow-1-down:0px 1px 4px 0px rgba(0,0,0,0.13);--shadow-1-right:1px 0px 4px 0px rgba(0,0,0,0.13);--shadow-1-up:0px -1px 4px 0px rgba(0,0,0,0.13);--shadow-1:1px 1px 4px 0px rgba(0,0,0,0.13);--shadow-zero:none;--shadow-spread-sd3:0;--shadow-spread-sd2:0;--shadow-spread-sd1:0;--shadow-blur-sd3:16;--shadow-blur-sd2:8;--shadow-blur-sd1:4;--shadow-color-sd3:var(--color-black,#000);--shadow-color-sd2:var(--color-black,#000);--shadow-color-sd1:var(--color-black,#000);--shadow-opacity-sd3:0.21;--shadow-opacity-sd2:0.13;--shadow-opacity-sd1:0.13;--shadow-distance-sd3y:4;--shadow-distance-sd2y:2;--shadow-distance-sd1y:1;--shadow-distance-sd3:4;--shadow-distance-sd2:2;--shadow-distance-sd1:1;--shadow-sides-left:"left";--shadow-sides-down:"down";--shadow-sides-right:"right";--shadow-sides-up:"up";--shadow-sides-base:"base";--font-weight-ultra-bold:900;--font-weight-extra-bold:800;--font-weight-semi-bold:600;--font-weight-medium:500;--font-weight-light:300;--font-weight-thin:200;--font-family-base:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;--font-lineheight-5:2;--font-lineheight-4:1.8;--font-weight-3:bold;--font-weight-2:normal;--font-weight-1:lighter;--font-size-caption:12px;--font-size-body-1:12px;--font-size-body-2:14px;--font-size-subhead:14px;--font-size-title:16px;--font-size-headline:18px;--font-size-display-1:24px;--font-size-display-2:28px;--font-size-display-3:32px;--font-lineheight-3:1.6;--font-lineheight-2:1.5;--font-lineheight-1:1;--corner-zero:0;--corner-semicircle:500px;--corner-circle:50%;--corner-4:16px;--corner-3:12px;--corner-0:0px;--corner-2:2px;--corner-1:0px;--color-data1-8:#18b1f7;--color-data1-7:#4dde6d;--color-data1-6:#ffd74d;--color-data1-5:#ff934d;--color-data1-4:#ff445f;--color-data1-3:#ae66fc;--color-data1-2:#506fed;--color-data1-1:#00dccd;--color-brand1-2:#e0f1ff;--color-fill1-9:#1c1c1c;--color-fill1-8:#737373;--color-line1-5:#ebebeb;--color-brand1-10:#001a2f;--color-brand1-8:#00457e;--color-brand1-7:#005aa5;--color-brand1-5:#43aaff;--color-brand1-4:#7ec5ff;--color-brand1-3:#b8dfff;--color-brand2-6:#ff6a00;--color-brand7-9:#2d559c;--color-brand7-6:#4f74b3;--color-brand7-4:#a9bad0;--color-brand7-5:#657c99;--color-text1-5:#333;--color-success-5:#acdcba;--color-fill1-7:#a8a8a8;--color-fill1-6:#c9c9c9;--color-fill1-5:#dedede;--color-text1-4:#111;--color-text1-3:#555;--color-text1-2:#888;--color-text1-1:#c1c1c1;--color-fill1-4:#ebebeb;--color-fill1-3:#f5f5f5;--color-fill1-2:#f7f7f7;--color-fill1-1:#fafafa;--color-line1-4:#737373;--color-line1-3:#a8a8a8;--color-line1-2:#c9c9c9;--color-line1-1:#dedede;--color-other-3:#fff;--color-other-2:#fff;--color-other-1:#0070cc;--color-link-3:#0070cc;--color-link-2:#0070cc;--color-link-1:#0070cc;--color-help-4:#333;--color-help-3:#888;--color-help-2:#c9c9c9;--color-help-1:#f5f5f5;--color-error-4:#b82920;--color-error-3:#d93026;--color-error-2:#ffc4c0;--color-error-1:#fcebea;--color-warning-4:#f1a600;--color-warning-3:#ffc440;--color-warning-2:#ffe2a2;--color-warning-1:#fff7db;--color-notice-4:#005aa5;--color-notice-3:#0070cc;--color-notice-2:#a0cded;--color-notice-1:#e5f3ff;--color-success-4:#176e30;--color-success-3:#1e8e3e;--color-success-2:#acdcba;--color-success-1:#dff4e5;--color-transparent:transparent;--color-black:#000;--color-white:#fff;--color-brand1-9:#003a6a;--color-brand1-6:#0070cc;--color-brand1-1:#f3faff;--balloon-primary-color:var(--color-warning-3,#ffc440);--balloon-size-padding-top:var(--s-2,8px);--balloon-size-padding-closable-right:var(--s-10,40px);--balloon-size-close-margin-top:var(--s-2,8px);--balloon-size-close-margin-right:var(--s-3,12px);--balloon-size-arrow-size:var(--s-2,8px);--balloon-tooltip-size-padding-right:var(--s-4,16px);--balloon-tooltip-size-padding-left:var(--s-4,16px);--balloon-normal-color-border:var(--color-line1-5,#ebebeb);--balloon-normal-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--balloon-normal-color:var(--color-text1-5,#333);--balloon-primary-color-bg:var(--color-white,#fff);--balloon-primary-color-border:var(--color-line1-5,#ebebeb);--balloon-tooltip-color-bg:var(--color-white,#fff);--balloon-tooltip-color-border:var(--color-line1-5,#ebebeb);--balloon-tooltip-color:var(--color-text1-5,#333);--balloon-normal-color-bg:var(--color-white,#fff);--balloon-size-max-width:300px;--balloon-size-padding-right:var(--s-4,16px);--balloon-content-font-size:var(--font-size-body-1,12px);--balloon-content-font-weight:var(--font-weight-2,normal);--balloon-normal-border-width:var(--line-1,1px);--balloon-primary-border-width:var(--line-1,1px);--balloon-tooltip-border-width:var(--line-1,1px);--balloon-tooltip-content-font-size:var(--font-size-body-1,12px);--balloon-tooltip-content-font-weight:var(--font-weight-2,normal);--balloon-size-close:var(--icon-xs,12px);--balloon-size-arrow-margin:var(--s-3,12px);--balloon-tooltip-size-padding-top:var(--s-2,8px);--balloon-tooltip-size-padding-bottom:var(--s-2,8px);--balloon-border-style:var(--line-solid,solid);--balloon-corner:var(--corner-1,0px);--balloon-normal-color-close:var(--color-text1-2,#888);--balloon-normal-color-close-hover:var(--color-text1-3,#555);--balloon-primary-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--balloon-primary-color-close:var(--color-text1-2,#888);--balloon-primary-color-close-hover:var(--color-text1-4,#111);--balloon-tooltip-shadow:var(--shadow-zero,none);--balloon-tooltip-border-style:var(--line-solid,solid);--btn-size-s-height:var(--s-6,24px);--btn-size-s-icon-size:var(--icon-xs,12px);--btn-size-s-icon-margin:var(--s-2,8px);--btn-size-m-height:var(--s-8,32px);--btn-size-m-padding:var(--s-4,16px);--btn-size-m-icon-size:var(--icon-xs,12px);--btn-size-m-icon-margin:var(--s-2,8px);--btn-size-l-height:var(--s-9,36px);--btn-size-l-padding:var(--s-6,24px);--btn-size-l-font:var(--font-size-body-2,14px);--btn-size-l-icon-size:var(--icon-s,16px);--btn-size-l-icon-margin:var(--s-2,8px);--btn-pure-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-border-color-disabled:var(--color-transparent,transparent);--btn-pure-normal-color:var(--color-text1-5,#333);--btn-pure-normal-color-hover:var(--color-text1-5,#333);--btn-pure-normal-bg:var(--color-fill1-1,#fafafa);--btn-pure-normal-bg-hover:var(--color-white,#fff);--btn-pure-normal-border-color:var(--color-line1-1,#dedede);--btn-pure-normal-border-color-hover:var(--color-line1-4,#737373);--btn-pure-secondary-color:var(--color-brand1-6,#0070cc);--btn-pure-secondary-bg:var(--color-transparent,transparent);--btn-pure-secondary-bg-hover:var(--color-brand1-6,#0070cc);--btn-pure-secondary-border-color:var(--color-brand1-6,#0070cc);--btn-pure-secondary-border-color-hover:var(--color-transparent,transparent);--btn-pure-primary-bg:var(--color-brand1-6,#0070cc);--btn-pure-primary-bg-hover:var(--color-brand1-7,#005aa5);--btn-ghost-dark-bg-hover-opacity:0.29;--btn-ghost-dark-color-disabled-opacity:0.25;--btn-ghost-dark-border-color-disabled-opacity:0.15;--btn-ghost-light-color:var(--color-brand1-6,#0070cc);--btn-ghost-light-border-color:var(--color-brand1-6,#0070cc);--btn-ghost-light-bg:var(--color-white,#fff);--btn-ghost-light-bg-opacity:1;--btn-ghost-light-color-hover:var(--color-white,#fff);--btn-ghost-light-border-color-hover:var(--color-transparent,transparent);--btn-ghost-light-bg-hover-rgb:var(--color-brand1-7,#005aa5);--btn-ghost-light-bg-hover-opacity:1;--btn-ghost-light-color-disabled-rgb:var(--color-text1-1,#c1c1c1);--btn-ghost-light-color-disabled-opacity:1;--btn-ghost-light-bg-disabled:var(--color-fill1-2,#f7f7f7);--btn-ghost-light-border-color-disabled-rgb:var(--color-white,#fff);--btn-ghost-light-border-color-disabled-opacity:1;--btn-warning-primary-border-color:var(--color-error-3,#d93026);--btn-warning-primary-color-disabled:var(--color-text1-1,#c1c1c1);--btn-warning-primary-border-color-disabled:var(--color-white,#fff);--btn-warning-primary-bg-disabled:var(--color-fill1-2,#f7f7f7);--btn-warning-normal-border-color-hover:var(--color-error-4,#b82920);--btn-warning-normal-bg:var(--color-transparent,transparent);--btn-warning-normal-bg-hover:var(--color-error-4,#b82920);--btn-warning-normal-color-disabled:var(--color-text1-1,#c1c1c1);--btn-warning-normal-border-color-disabled:var(--color-white,#fff);--btn-warning-normal-bg-disabled:var(--color-fill1-2,#f7f7f7);--btn-text-primary-color-hover:var(--color-link-3,#0070cc);--btn-text-secondary-color:var(--color-text1-3,#555);--btn-text-secondary-color-hover:var(--color-text1-2,#888);--btn-text-normal-color:var(--color-text1-5,#333);--btn-text-normal-color-hover:var(--color-text1-3,#555);--btn-pure-normal-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-normal-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-normal-border-color-disabled:var(--color-transparent,transparent);--btn-pure-normal-color-active:var(--color-text1-5,#333);--btn-pure-normal-bg-active:var(--color-white,#fff);--btn-pure-normal-border-color-active:var(--color-line1-4,#737373);--btn-pure-secondary-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-secondary-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-secondary-border-color-disabled:var(--color-transparent,transparent);--btn-pure-secondary-bg-active:var(--color-brand1-6,#0070cc);--btn-pure-secondary-border-color-active:var(--color-transparent,transparent);--btn-pure-primary-color-disabled:var(--color-text1-1,#c1c1c1);--btn-pure-primary-bg-disabled:var(--color-fill1-4,#ebebeb);--btn-pure-primary-border-color-disabled:var(--color-transparent,transparent);--btn-pure-primary-bg-active:var(--color-brand1-7,#005aa5);--btn-warning-normal-border-color-active:var(--color-error-4,#b82920);--btn-warning-normal-bg-active:var(--color-error-4,#b82920);--btn-shadow:var(--shadow-zero,none);--btn-shadow-hover:var(--shadow-zero,none);--btn-size-s-padding:var(--s-2,8px);--btn-size-s-border-width:var(--line-1,1px);--btn-size-s-font:var(--font-size-caption,12px);--btn-size-s-icon-split-size:var(--icon-xs,12px);--btn-size-s-corner:var(--corner-1,0px);--btn-size-m-border-width:var(--line-1,1px);--btn-size-m-font:var(--font-size-body-1,12px);--btn-size-m-icon-split-size:var(--icon-xs,12px);--btn-size-m-corner:var(--corner-1,0px);--btn-size-l-border-width:var(--line-1,1px);--btn-size-l-icon-split-size:var(--icon-s,16px);--btn-size-l-corner:var(--corner-1,0px);--btn-pure-normal-border-style:var(--line-solid,solid);--btn-pure-secondary-color-hover:var(--color-white,#fff);--btn-pure-secondary-color-active:var(--color-white,#fff);--btn-pure-secondary-border-style:var(--line-solid,solid);--btn-pure-primary-color:var(--color-white,#fff);--btn-pure-primary-color-hover:var(--color-white,#fff);--btn-pure-primary-color-active:var(--color-white,#fff);--btn-pure-primary-border-color:var(--color-transparent,transparent);--btn-pure-primary-border-color-hover:var(--color-transparent,transparent);--btn-pure-primary-border-color-active:var(--color-transparent,transparent);--btn-pure-primary-border-style:var(--line-solid,solid);--btn-ghost-border-style:var(--line-solid,solid);--btn-ghost-dark-color:var(--color-white,#fff);--btn-ghost-dark-border-color:var(--color-white,#fff);--btn-ghost-dark-color-hover:var(--color-white,#fff);--btn-ghost-dark-bg:var(--color-transparent,transparent);--btn-ghost-dark-bg-opacity:0;--btn-ghost-dark-bg-hover-rgb:var(--color-white,#fff);--btn-ghost-dark-border-color-hover:var(--color-white,#fff);--btn-ghost-dark-color-disabled-rgb:var(--color-white,#fff);--btn-ghost-dark-bg-disabled:var(--color-transparent,transparent);--btn-ghost-dark-border-color-disabled-rgb:var(--color-white,#fff);--btn-warning-border-style:var(--line-solid,solid);--btn-warning-primary-color:var(--color-white,#fff);--btn-warning-primary-color-hover:var(--color-white,#fff);--btn-warning-primary-color-active:var(--color-white,#fff);--btn-warning-primary-border-color-hover:var(--color-error-4,#b82920);--btn-warning-primary-border-color-active:var(--color-error-4,#b82920);--btn-warning-primary-bg:var(--color-error-3,#d93026);--btn-warning-primary-bg-hover:var(--color-error-4,#b82920);--btn-warning-primary-bg-active:var(--color-error-4,#b82920);--btn-warning-normal-color:var(--color-error-3,#d93026);--btn-warning-normal-color-hover:var(--color-white,#fff);--btn-warning-normal-color-active:var(--color-white,#fff);--btn-warning-normal-border-color:var(--color-error-3,#d93026);--btn-text-primary-color:var(--color-link-1,#0070cc);--btn-text-disabled-color:var(--color-text1-1,#c1c1c1);--btn-text-loading-color:var(--color-text1-4,#111);--btn-text-size-s-height:var(--s-4,16px);--btn-text-size-s-font:var(--font-size-caption,12px);--btn-text-icon-size-s:var(--icon-s,16px);--btn-text-icon-s-margin:var(--s-1,4px);--btn-text-size-m-height:var(--s-5,20px);--btn-text-size-m-font:var(--font-size-body-1,12px);--btn-text-icon-size-m:var(--icon-m,20px);--btn-text-icon-m-margin:var(--s-1,4px);--btn-text-size-l-height:var(--s-6,24px);--btn-text-size-l-font:var(--font-size-body-2,14px);--btn-text-icon-size-l:var(--icon-l,24px);--btn-text-icon-l-margin:var(--s-1,4px);--calendar-card-table-cell-font-size:var(--font-size-body-1,12px);--calendar-panel-header-background:var(--color-white,#fff);--calendar-btn-arrow-size:var(--icon-s,16px);--calendar-btn-arrow-color:var(--color-text1-2,#888);--calendar-btn-arrow-color-hover:var(--color-text1-3,#555);--calendar-btn-date-color:var(--color-text1-3,#555);--calendar-fullscreen-table-head-color:var(--color-text1-2,#888);--calendar-fullscreen-table-cell-normal-color:var(--color-text1-5,#333);--calendar-fullscreen-table-cell-normal-border-color:var(--color-line1-1,#dedede);--calendar-fullscreen-table-cell-hover-background:var(--color-brand1-1,#f3faff);--calendar-fullscreen-table-cell-hover-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-hover-border-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-select-background:var(--color-brand1-1,#f3faff);--calendar-fullscreen-table-cell-select-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-select-border-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-current-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-current-border-color:var(--color-brand1-6,#0070cc);--calendar-fullscreen-table-cell-disabled-background:var(--color-fill1-2,#f7f7f7);--calendar-card-table-cell-hover-background:var(--color-brand1-1,#f3faff);--calendar-card-table-cell-hover-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-hover-border-color:var(--color-transparent,transparent);--calendar-card-table-cell-select-background:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-select-border-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-disabled-background:var(--color-fill1-2,#f7f7f7);--calendar-card-table-cell-disabled-border-color:var(--color-transparent,transparent);--calendar-card-table-cell-current-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-current-border-color:var(--color-line1-1,#dedede);--calendar-card-table-cell-inrange-background:var(--color-brand1-1,#f3faff);--calendar-card-table-cell-inrange-color:var(--color-brand1-6,#0070cc);--calendar-card-table-cell-inrange-border-color:var(--color-transparent,transparent);--calendar-panel-header-border-bottom-color:var(--color-white,#fff);--calendar-btn-date-color-hover:var(--color-brand1-6,#0070cc);--calendar-fullscreen-header-margin-bottom:var(--s-2,8px);--calendar-fullscreen-table-head-font-weight:var(--font-weight-3,bold);--calendar-fullscreen-table-head-font-size:var(--font-size-subhead,14px);--calendar-fullscreen-table-head-padding-r:var(--s-3,12px);--calendar-fullscreen-table-head-padding-b:var(--s-1,4px);--calendar-fullscreen-table-cell-font-size:var(--font-size-body-2,14px);--calendar-fullscreen-table-cell-boder-top-width:var(--line-2,2px);--calendar-fullscreen-table-cell-margin-tb:var(--s-zero,0px);--calendar-fullscreen-table-cell-margin-lr:var(--s-1,4px);--calendar-fullscreen-table-cell-padding-tb:var(--s-1,4px);--calendar-fullscreen-table-cell-padding-lr:var(--s-2,8px);--calendar-fullscreen-table-cell-min-height:var(--s-20,80px);--calendar-fullscreen-table-cell-normal-background:var(--color-white,#fff);--calendar-fullscreen-table-cell-select-font-weight:var(--font-weight-3,bold);--calendar-fullscreen-table-cell-current-background:var(--color-white,#fff);--calendar-fullscreen-table-cell-current-font-weight:var(--font-weight-3,bold);--calendar-fullscreen-table-cell-other-background:var(--color-transparent,transparent);--calendar-fullscreen-table-cell-other-color:var(--color-text1-1,#c1c1c1);--calendar-fullscreen-table-cell-other-border-color:var(--color-transparent,transparent);--calendar-fullscreen-table-cell-disabled-color:var(--color-text1-1,#c1c1c1);--calendar-fullscreen-table-cell-disabled-border-color:var(--color-line1-1,#dedede);--calendar-card-header-margin-bottom:var(--s-2,8px);--calendar-card-table-head-font-size:var(--font-size-caption,12px);--calendar-card-table-head-font-weight:var(--font-weight-2,normal);--calendar-card-table-cell-date-border-radius:var(--corner-1,0px);--calendar-card-table-cell-date-width:var(--s-6,24px);--calendar-card-table-cell-date-height:var(--s-6,24px);--calendar-card-table-cell-month-border-radius:var(--corner-1,0px);--calendar-card-table-cell-month-width:var(--s-15,60px);--calendar-card-table-cell-month-height:var(--s-6,24px);--calendar-card-table-cell-year-border-radius:var(--corner-1,0px);--calendar-card-table-cell-year-width:var(--s-12,48px);--calendar-card-table-cell-year-height:var(--s-6,24px);--calendar-card-table-head-color:var(--color-text1-2,#888);--calendar-card-table-cell-corner:var(--corner-zero,0);--calendar-card-table-cell-normal-background:var(--color-white,#fff);--calendar-card-table-cell-normal-color:var(--color-text1-3,#555);--calendar-card-table-cell-normal-border-color:var(--color-white,#fff);--calendar-card-table-cell-select-color:var(--color-white,#fff);--calendar-card-table-cell-select-font-weight:var(--font-weight-3,bold);--calendar-card-table-cell-other-background:var(--color-white,#fff);--calendar-card-table-cell-other-color:var(--color-text1-1,#c1c1c1);--calendar-card-table-cell-other-border-color:var(--color-white,#fff);--calendar-card-table-cell-disabled-color:var(--color-text1-1,#c1c1c1);--calendar-card-table-cell-current-background:var(--color-white,#fff);--calendar-card-table-cell-current-font-weight:var(--font-weight-3,bold);--calendar-panel-header-margin-bottom:var(--s-2,8px);--calendar-panel-header-height:var(--s-8,32px);--calendar-panel-header-border-bottom-width:var(--line-1,1px);--calendar-btn-date-font-weight:var(--font-weight-3,bold);--calendar-btn-date-margin-lr:var(--s-1,4px);--calendar-btn-arrow-single-offset-lr:var(--s-7,28px);--calendar-btn-arrow-double-offset-lr:var(--s-2,8px);--calendar-btn-arrow-content-prev:var(--icon-content-arrow-left,"");--calendar-btn-arrow-content-next:var(--icon-content-arrow-right,"");--calendar-btn-arrow-content-prev-super:var(--icon-content-arrow-double-left,"");--calendar-btn-arrow-content-next-super:var(--icon-content-arrow-double-right,"");--breadcrumb-text-color:var(--color-text1-5,#333);--breadcrumb-text-current-color:var(--color-text1-2,#888);--breadcrumb-text-keyword-color:var(--color-link-1,#0070cc);--breadcrumb-icon-color:var(--color-text1-2,#888);--breadcrumb-text-color-hover:var(--color-link-3,#0070cc);--breadcrumb-size-m-font-size:var(--font-size-caption,12px);--breadcrumb-size-ellipsis-font-size:var(--font-size-caption,12px);--breadcrumb-size-m-icon-size:var(--icon-xxs,8px);--breadcrumb-size-m-icon-margin:var(--s-2,8px);--breadcrumb-text-current-weight:var(--font-weight-2,normal);--breadcrumb-text-ellipsis-color:var(--color-text1-3,#555);--breadcrumb-icon-sep-content:var(--icon-content-arrow-right,"");--breadcrumb-text-current-color-hover:var(--color-brand1-6,#0070cc);--breadcrumb-text-keyword-color-hover:var(--color-brand1-6,#0070cc);--checkbox-size:var(--s-3,12px);--checkbox-circle-size:var(--icon-xs,12px);--checkbox-border-color:var(--color-line1-1,#dedede);--checkbox-hovered-border-color:var(--color-line1-4,#737373);--checkbox-disabled-border-color:var(--color-line1-1,#dedede);--checkbox-checked-bg-color:var(--color-brand1-6,#0070cc);--checkbox-hovered-bg-color:var(--color-transparent,transparent);--checkbox-checked-hovered-bg-color:var(--color-brand1-7,#005aa5);--checkbox-disabled-bg-color:var(--color-fill1-4,#ebebeb);--checkbox-border-radius:var(--corner-1,0px);--checkbox-border-width:var(--line-1,1px);--checkbox-shadow:var(--shadow-zero,none);--checkbox-checked-border-color:var(--color-transparent,transparent);--checkbox-checked-hovered-border-color:var(--color-transparent,transparent);--checkbox-checked-circle-color:var(--color-white,#fff);--checkbox-label-color:var(--color-text1-4,#111);--checkbox-disabled-label-color:var(--color-text1-1,#c1c1c1);--checkbox-disabled-circle-color:var(--color-text1-1,#c1c1c1);--checkbox-checked-hovered-circle-color:var(--color-white,#fff);--checkbox-bg-color:var(--color-white,#fff);--checkbox-font-size:var(--font-size-body-1,12px);--checkbox-margin-left:var(--s-1,4px);--checkbox-semi-select-icon-content:var(--icon-content-semi-select,"");--checkbox-select-icon-content:var(--icon-content-select,"");--cascader-menu-icon-expand-size:var(--icon-xs,12px);--cascader-menu-border-color:var(--color-line1-1,#dedede);--cascader-menu-icon-expand-color:var(--color-text1-2,#888);--cascader-menu-icon-hover-expand-color:var(--color-text1-3,#555);--cascader-menu-item-expanded-color:var(--color-text1-5,#333);--cascader-menu-border-width:var(--line-1,1px);--cascader-menu-width:var(--s-25,100px);--cascader-menu-height:var(--s-48,192px);--cascader-menu-border-radius:var(--corner-1,0px);--cascader-menu-item-expanded-background-color:var(--color-fill1-2,#f7f7f7);--card-head-bottom-border-width:var(--line-1,1px);--card-head-main-height:var(--s-6,24px);--card-head-main-margin-top:var(--s-3,12px);--card-head-main-margin-bottom:var(--s-3,12px);--card-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--card-border-color:var(--color-line1-1,#dedede);--card-title-color:var(--color-text1-5,#333);--card-corner:var(--corner-1,0px);--card-padding-lr:var(--s-4,16px);--card-border-width:var(--line-1,1px);--card-head-padding-bottom:var(--s-3,12px);--card-title-font-size:var(--font-size-subhead,14px);--card-title-font-weight:var(--font-weight-2,normal);--card-sub-title-font-size:var(--font-size-caption,12px);--card-title-extra-font-size:var(--font-size-body-1,12px);--card-title-bullet-width:var(--line-3,3px);--card-title-bullet-height:var(--s-4,16px);--card-title-padding-left:var(--s-2,8px);--card-sub-title-padding-left:var(--s-2,8px);--card-body-show-divider-padding-top:var(--s-3,12px);--card-body-hide-divider-padding-top:var(--s-zero,0px);--card-content-font-size:var(--font-size-body-1,12px);--card-content-line-height:var(--font-lineheight-2,1.5);--card-body-padding-bottom:var(--s-3,12px);--card-more-btn-height:var(--s-4,16px);--card-more-btn-padding-top:var(--s-2,8px);--card-more-btn-font-size:var(--font-size-body-1,12px);--card-border-style:var(--line-solid,solid);--card-background:var(--color-white,#fff);--card-header-background:var(--color-white,#fff);--card-sub-title-color:var(--color-text1-3,#555);--card-title-extra-color:var(--color-link-1,#0070cc);--card-title-bullet-color:var(--color-brand1-6,#0070cc);--card-content-color:var(--color-text1-3,#555);--card-head-bottom-border-color:var(--color-line1-1,#dedede);--card-more-btn-color:var(--color-link-1,#0070cc);--card-more-btn-background:var(--color-white,#fff);--collapse-border-color:var(--color-white,#fff);--collapse-panel-border-color:var(--color-white,#fff);--collapse-disabled-border-color:var(--color-white,#fff);--collapse-title-border-width:var(--line-2,2px);--collapse-title-height:var(--s-6,24px);--collapse-title-bg-color:var(--color-fill1-2,#f7f7f7);--collapse-title-hover-bg-color:var(--color-fill1-4,#ebebeb);--collapse-title-font-color:var(--color-text1-5,#333);--collapse-title-hover-font-color:var(--color-text1-5,#333);--collapse-title-font-size:var(--font-size-body-1,12px);--collapse-icon-size:var(--icon-xs,12px);--collapse-icon-color:var(--color-text1-2,#888);--collapse-icon-hover-color:var(--color-text1-2,#888);--collapse-icon-margin-l:var(--s-4,16px);--collapse-content-padding-y:var(--s-2,8px);--collapse-content-color:var(--color-text1-5,#333);--collapse-border-width:var(--line-zero,0px);--collapse-border-corner:var(--corner-1,0px);--collapse-title-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--collapse-title-font-disabled-color:var(--color-text1-1,#c1c1c1);--collapse-title-font-weight:var(--font-weight-2,normal);--collapse-title-hover-font-weight:var(--font-weight-2,normal);--collapse-title-padding-tb:var(--s-2,8px);--collapse-icon-margin-r:var(--s-2,8px);--collapse-content-bg-color:var(--color-white,#fff);--collapse-content-padding-x:var(--s-4,16px);--collapse-content-font-size:var(--font-size-body-1,12px);--collapse-fold-icon-content:var(--icon-content-arrow-right,"");--collapse-unfold-icon-content:var(--icon-reset,var(--icon-reset));--menu-btn-pure-text-secondary-icon-color:var(--color-brand1-6,#0070cc);--menu-btn-ghost-light-icon-color:var(--color-brand1-6,#0070cc);--menu-btn-text-text-normal-icon-color:var(--color-text1-5,#333);--menu-btn-disabled-icon-color:var(--color-text1-1,#c1c1c1);--menu-btn-ghost-light-disabled-icon-color:var(--btn-ghost-light-color-disabled,#c1c1c1);--menu-btn-ghost-dark-disabled-icon-color:var(--btn-ghost-dark-color-disabled,hsla(0,0%,100%,0.25));--menu-btn-pure-text-normal-icon-color:var(--color-text1-2,#888);--menu-btn-pure-text-primary-icon-color:var(--color-white,#fff);--menu-btn-text-text-primary-icon-color:var(--color-link-1,#0070cc);--menu-btn-ghost-dark-icon-color:var(--color-white,#fff);--menu-btn-fold-icon-content:var(--icon-content-arrow-down,"");--menu-btn-unfold-icon-content:var(--icon-reset,var(--icon-reset));--input-text-color:var(--color-text1-5,#333);--input-border-color:var(--color-line1-1,#dedede);--input-focus-border-color:var(--color-line1-4,#737373);--input-disabled-border-color:var(--color-fill1-3,#f5f5f5);--input-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--input-multiple-padding-lr:var(--s-4,16px);--input-multiple-padding-tb:var(--s-3,12px);--input-addon-bg-color:var(--color-fill1-1,#fafafa);--input-l-padding:var(--s-4,16px);--input-m-padding:var(--s-4,16px);--input-feedback-loading-color:var(--color-text1-2,#888);--input-s-padding:var(--s-2,8px);--input-l-label-padding-left:var(--s-4,16px);--input-m-label-padding-left:var(--s-4,16px);--input-label-color:var(--color-text1-3,#555);--input-hover-border-color:var(--color-line1-4,#737373);--input-hover-bg-color:var(--color-white,#fff);--input-focus-bg-color:var(--color-white,#fff);--input-focus-shadow-spread:var(--line-2,2px);--input-border-width:var(--line-1,1px);--input-bg-color:var(--color-white,#fff);--input-placeholder-color:var(--color-text1-2,#888);--input-disabled-color:var(--color-text1-1,#c1c1c1);--input-multiple-font-size:var(--font-size-body-1,12px);--input-multiple-corner:var(--corner-1,0px);--input-addon-text-color:var(--color-text1-2,#888);--input-addon-padding:var(--s-2,8px);--input-l-icon-padding-right:var(--s-2,8px);--input-m-icon-padding-right:var(--s-2,8px);--input-s-label-padding-left:var(--s-2,8px);--input-s-icon-padding-right:var(--s-1,4px);--input-feedback-warning-border-color:var(--color-warning-3,#ffc440);--input-feedback-warning-bg-color:var(--color-white,#fff);--input-feedback-warning-color:var(--color-warning-3,#ffc440);--input-feedback-success-color:var(--color-success-3,#1e8e3e);--input-feedback-loading-icon:var(--icon-content-loading,"");--input-feedback-error-border-color:var(--color-error-3,#d93026);--input-feedback-error-bg-color:var(--color-white,#fff);--input-maxlen-error-color:var(--color-error-3,#d93026);--input-maxlen-warning-color:var(--color-warning-3,#ffc440);--input-maxlen-color:var(--color-text1-2,#888);--input-maxlen-font-size:var(--font-size-caption,12px);--input-hint-color:var(--color-text1-2,#888);--input-hint-hover-color:var(--color-text1-3,#555);--input-feedback-warning-icon:var(--icon-content-warning-fill,"");--input-feedback-success-icon:var(--icon-content-check-fill,"");--input-feedback-clear-icon:var(--icon-content-close-fill,"");--form-label-padding-r:var(--s-2,8px);--form-item-l-margin-b:var(--s-4,16px);--form-help-color:var(--color-text1-2,#888);--form-label-color:var(--color-text1-3,#555);--form-item-m-margin-b:var(--s-4,16px);--form-item-s-margin-b:var(--s-3,12px);--form-inline-l-item-margin-r:var(--s-6,24px);--form-inline-m-item-margin-r:var(--s-5,20px);--form-inline-s-item-margin-r:var(--s-4,16px);--form-help-margin-top:var(--s-1,4px);--form-help-font-size:var(--font-size-caption,12px);--form-error-color:var(--color-error-3,#d93026);--form-warning-color:var(--color-warning-3,#ffc440);--form-top-label-margin-b:2px;--loading-dot-color:var(--color-brand1-6,#0070cc);--loading-icon-size:var(--icon-xl,32px);--loading-large-size:var(--s-12,48px);--loading-large-dot-size:var(--icon-xs,12px);--loading-medium-size:var(--s-8,32px);--loading-medium-dot-size:var(--icon-xxs,8px);--message-size-l-border-width:var(--line-1,1px);--message-size-l-title-content-padding-left:var(--s-2,8px);--message-size-l-title-content-padding-right:var(--s-4,16px);--message-size-l-title-font:var(--font-size-title,16px);--message-size-l-icon:var(--icon-m,20px);--message-size-m-padding:var(--s-2,8px);--message-size-m-title-content-padding-right:var(--s-4,16px);--message-size-m-title-font:var(--font-size-body-2,14px);--message-success-color-border-inline:var(--color-transparent,transparent);--message-success-color-title-inline:var(--color-text1-5,#333);--message-success-color-content-inline:var(--color-text1-3,#555);--message-success-color-icon-inline:var(--color-success-3,#1e8e3e);--message-error-color-border-inline:var(--color-transparent,transparent);--message-error-color-title-inline:var(--color-error-3,#d93026);--message-error-color-content-inline:var(--color-error-3,#d93026);--message-warning-color-border-inline:var(--color-transparent,transparent);--message-warning-color-title-inline:var(--color-text1-5,#333);--message-warning-color-icon-inline:var(--color-warning-3,#ffc440);--message-notice-color-bg-inline:var(--color-notice-1,#e5f3ff);--message-notice-color-border-inline:var(--color-transparent,transparent);--message-notice-color-title-inline:var(--color-text1-5,#333);--message-help-color-border-inline:var(--color-transparent,transparent);--message-help-color-icon-inline:var(--color-help-3,#888);--message-help-color-icon-addon:var(--color-help-3,#888);--message-help-color-icon-toast:var(--color-help-3,#888);--message-loading-color-icon-inline:var(--color-text1-3,#555);--message-size-l-padding:var(--s-2,8px);--message-size-l-close-top:var(--s-2,8px);--message-size-l-close-right:var(--s-2,8px);--message-size-m-title-content-padding-left:var(--s-2,8px);--message-size-m-close-top:var(--s-2,8px);--message-size-m-close-right:var(--s-2,8px);--message-success-color-title-addon:var(--color-text1-5,#333);--message-success-color-title-toast:var(--color-text1-5,#333);--message-error-color-title-addon:var(--color-text1-5,#333);--message-error-color-title-toast:var(--color-text1-5,#333);--message-warning-color-title-addon:var(--color-text1-5,#333);--message-warning-color-title-toast:var(--color-text1-5,#333);--message-notice-color-title-toast:var(--color-text1-5,#333);--message-help-color-title-addon:var(--color-text1-5,#333);--message-help-color-title-toast:var(--color-text1-5,#333);--message-loading-color-border-inline:var(--color-line1-1,#dedede);--message-loading-color-title-inline:var(--color-text1-5,#333);--message-loading-color-title-addon:var(--color-text1-5,#333);--message-loading-color-title-toast:var(--color-text1-5,#333);--message-loading-color-icon-addon:var(--color-fill1-8,#737373);--message-loading-color-icon-toast:var(--color-text1-2,#888);--message-size-m-icon:var(--icon-m,20px);--message-size-l-content-margin-top:var(--s-2,8px);--message-size-l-content-font:var(--font-size-body-1,12px);--message-size-m-border-width:var(--line-1,1px);--message-size-m-content-margin-top:var(--s-2,8px);--message-size-m-content-font:var(--font-size-body-1,12px);--message-close-icon-size:var(--icon-xs,12px);--message-size-l-border-radius:var(--corner-1,0px);--message-size-m-border-radius:var(--corner-1,0px);--message-size-l-border-radius-toast:var(--corner-1,0px);--message-size-m-border-radius-toast:var(--corner-1,0px);--message-border-style:var(--line-solid,solid);--message-border-style-toast:var(--line-solid,solid);--message-shadow-toast:var(--shadow-2-down,0px 2px 8px 0px rgba(0,0,0,0.13));--message-success-color-bg-inline:var(--color-success-1,#dff4e5);--message-success-color-bg-addon:var(--color-transparent,transparent);--message-success-color-bg-toast:var(--color-white,#fff);--message-success-color-border-toast:var(--color-white,#fff);--message-success-color-content-addon:var(--color-text1-3,#555);--message-success-color-content-toast:var(--color-text1-3,#555);--message-success-color-icon-addon:var(--color-success-3,#1e8e3e);--message-success-color-icon-toast:var(--color-success-3,#1e8e3e);--message-error-color-bg-inline:var(--color-error-1,#fcebea);--message-error-color-bg-addon:var(--color-transparent,transparent);--message-error-color-bg-toast:var(--color-white,#fff);--message-error-color-border-toast:var(--color-white,#fff);--message-error-color-content-addon:var(--color-text1-3,#555);--message-error-color-content-toast:var(--color-text1-3,#555);--message-error-color-icon-inline:var(--color-error-3,#d93026);--message-error-color-icon-addon:var(--color-error-3,#d93026);--message-error-color-icon-toast:var(--color-error-3,#d93026);--message-warning-color-bg-inline:var(--color-warning-1,#fff7db);--message-warning-color-bg-addon:var(--color-transparent,transparent);--message-warning-color-bg-toast:var(--color-white,#fff);--message-warning-color-border-toast:var(--color-white,#fff);--message-warning-color-content-inline:var(--color-text1-3,#555);--message-warning-color-content-addon:var(--color-text1-3,#555);--message-warning-color-content-toast:var(--color-text1-3,#555);--message-warning-color-icon-addon:var(--color-warning-3,#ffc440);--message-warning-color-icon-toast:var(--color-warning-3,#ffc440);--message-notice-color-bg-addon:var(--color-transparent,transparent);--message-notice-color-bg-toast:var(--color-white,#fff);--message-notice-color-border-toast:var(--color-white,#fff);--message-notice-color-title-addon:var(--color-text1-4,#111);--message-notice-color-content-inline:var(--color-text1-3,#555);--message-notice-color-content-addon:var(--color-text1-3,#555);--message-notice-color-content-toast:var(--color-text1-3,#555);--message-notice-color-icon-inline:var(--color-notice-3,#0070cc);--message-notice-color-icon-addon:var(--color-notice-3,#0070cc);--message-notice-color-icon-toast:var(--color-notice-3,#0070cc);--message-help-color-bg-inline:var(--color-help-1,#f5f5f5);--message-help-color-bg-addon:var(--color-transparent,transparent);--message-help-color-bg-toast:var(--color-white,#fff);--message-help-color-border-toast:var(--color-white,#fff);--message-help-color-title-inline:var(--color-text1-4,#111);--message-help-color-content-inline:var(--color-text1-3,#555);--message-help-color-content-addon:var(--color-text1-3,#555);--message-help-color-content-toast:var(--color-text1-3,#555);--message-loading-color-bg-inline:var(--color-white,#fff);--message-loading-color-bg-addon:var(--color-transparent,transparent);--message-loading-color-bg-toast:var(--color-white,#fff);--message-loading-color-border-toast:var(--color-white,#fff);--message-loading-color-content-inline:var(--color-text1-3,#555);--message-loading-color-content-addon:var(--color-text1-3,#555);--message-loading-color-content-toast:var(--color-text1-3,#555);--message-close-icon-color:var(--color-text1-2,#888);--message-hover-close-icon-color:var(--color-text1-3,#555);--message-success-icon-content:var(--icon-content-success,"");--message-warning-icon-content:var(--icon-content-warning,"");--message-error-icon-content:var(--icon-content-error,"");--message-notice-icon-content:var(--icon-content-prompt,"");--message-help-icon-content:var(--icon-content-help,"");--message-loading-icon-content:var(--icon-content-loading,"");--dialog-title-font-size:var(--font-size-title,16px);--dialog-title-padding-bottom:var(--s-4,16px);--dialog-title-padding-left-right:var(--s-6,24px);--dialog-content-font-size:var(--font-size-body-2,14px);--dialog-content-padding-top:var(--s-4,16px);--dialog-content-padding-bottom:var(--s-4,16px);--dialog-footer-padding-top:var(--s-4,16px);--dialog-close-size:var(--icon-s,16px);--dialog-border-color:var(--color-transparent,transparent);--dialog-shadow:var(--shadow-3-down,0px 4px 16px 0px rgba(0,0,0,0.21));--dialog-title-color:var(--color-text1-5,#333);--dialog-title-bg-color:var(--color-white,#fff);--dialog-title-border-color:var(--color-white,#fff);--dialog-content-color:var(--color-text1-5,#333);--dialog-footer-bg-color:var(--color-white,#fff);--dialog-footer-border-color:var(--color-white,#fff);--dialog-close-color-hovered:var(--color-text1-3,#555);--dialog-close-bg-hovered:var(--color-white,#fff);--dialog-message-title-padding-top:var(--s-4,16px);--dialog-message-title-padding-bottom:var(--s-4,16px);--dialog-message-title-padding-left-right:var(--s-6,24px);--dialog-close-top:var(--s-5,20px);--dialog-close-right:var(--s-6,24px);--dialog-footer-padding-left-right:var(--s-6,24px);--dialog-content-padding-left-right:var(--s-6,24px);--dialog-border-width:var(--line-1,1px);--dialog-title-border-width:var(--line-zero,0px);--dialog-message-content-padding-top:var(--s-5,20px);--dialog-message-content-padding-bottom:var(--s-5,20px);--dialog-message-content-padding-left-right:var(--s-5,20px);--dialog-footer-border-width:var(--line-zero,0px);--dialog-footer-button-spacing:var(--s-1,4px);--dialog-close-width:var(--s-4,16px);--dialog-bg:var(--color-white,#fff);--dialog-border-style:var(--line-solid,solid);--dialog-corner:var(--corner-1,0px);--dialog-close-color:var(--color-text1-2,#888);--dialog-title-padding-top:var(--s-6,24px);--dialog-footer-padding-bottom:var(--s-6,24px);--menu-icon-selected-size:var(--icon-xs,12px);--menu-icon-size:var(--icon-xs,12px);--menu-color:var(--color-text1-5,#333);--menu-arrow-color:var(--color-fill1-7,#a8a8a8);--menu-background-selected:var(--color-brand1-1,#f3faff);--menu-background-hover:var(--color-fill1-4,#ebebeb);--menu-color-hover:var(--color-text1-5,#333);--menu-arrow-color-hover:var(--color-text1-3,#555);--menu-icon-selected-hover-color:var(--color-brand1-6,#0070cc);--menu-padding-horizontal:var(--s-4,16px);--menu-item-padding-ver-padding-l:var(--s-4,16px);--menu-item-padding-ver-padding-r:var(--s-4,16px);--menu-item-padding-hoz-padding-lr:var(--s-4,16px);--menu-icon-selected-color:var(--color-brand1-6,#0070cc);--menu-padding-ver-padding-lr:var(--s-zero,0px);--menu-padding-ver-padding-tb:var(--s-2,8px);--menu-padding-hoz-padding-lr:var(--s-zero,0px);--menu-padding-hoz-padding-tb:var(--s-2,8px);--menu-line-height:var(--s-8,32px);--menu-font-size:var(--font-size-body-1,12px);--menu-submenu-title-size:var(--font-size-body-1,12px);--menu-padding-title-horizontal:var(--s-3,12px);--menu-divider-width:var(--line-1,1px);--menu-divider-margin-ver:var(--s-2,8px);--menu-divider-margin-hoz:var(--s-3,12px);--menu-icon-selected-right:var(--s-1,4px);--menu-hoz-icon-size:var(--icon-xs,12px);--menu-icon-margin:var(--s-1,4px);--menu-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--menu-divider-style:var(--line-solid,solid);--menu-divider-color:var(--color-line1-1,#dedede);--menu-background:var(--color-white,#fff);--menu-color-selected:var(--color-text1-4,#111);--menu-color-disabled:var(--color-text1-1,#c1c1c1);--menu-select-icon-content:var(--icon-content-select,"");--menu-fold-icon-content:var(--icon-content-arrow-down,"");--menu-unfold-icon-content:var(--icon-reset,var(--icon-reset));--menu-popupfold-icon-content:var(--icon-content-arrow-right,"");--date-picker-panel-footer-padding-lr:var(--s-4,16px);--date-picker-panel-footer-padding-tb:var(--s-2,8px);--date-picker-panel-background:var(--color-white,#fff);--date-picker-panel-time-panel-separator-color:var(--color-line1-2,#c9c9c9);--date-picker-calendar-icon:var(--icon-content-calendar,"");--range-normal-unselected-color:var(--color-fill1-3,#f5f5f5);--range-normal-selected-color:var(--color-brand1-6,#0070cc);--range-normal-unselected-color-hover:var(--color-fill1-3,#f5f5f5);--range-normal-selected-color-hover:var(--color-brand1-6,#0070cc);--range-size-m-slider-shadow-hover:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--range-normal-unselected-color-disabled:var(--color-fill1-4,#ebebeb);--range-normal-selected-color-disabled:var(--color-line1-2,#c9c9c9);--range-normal-slider-bg-color-disabled:var(--color-fill1-4,#ebebeb);--range-normal-slider-border-color:var(--color-line1-1,#dedede);--range-normal-slider-border-color-disabled:var(--color-line1-1,#dedede);--range-size-m-track-height:var(--s-1,4px);--range-size-m-scale-height:var(--s-3,12px);--range-size-m-scale-item-border-width:var(--line-1,1px);--range-size-m-slider-hw:var(--s-4,16px);--range-size-slider-border-style:var(--line-solid,solid);--range-size-slider-border-width:var(--line-1,1px);--range-size-m-mark-top:30px;--range-size-m-mark-font-size:var(--font-size-body-1,12px);--range-size-m-mark-font-weight:var(--font-weight-2,normal);--range-size-m-mark-font-lineheight:20px;--range-size-m-track-radius:var(--corner-zero,0);--range-size-m-scale-radius:var(--corner-zero,0);--range-size-m-slider-shadow-moving:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--range-normal-slider-bg-color:var(--color-white,#fff);--range-normal-mark-color:var(--color-text1-2,#888);--range-normal-mark-selected-color:var(--color-text1-4,#111);--range-normal-slider-bg-color-hover:var(--color-white,#fff);--range-size-m-slider-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--range-normal-mark-color-hover:var(--color-text1-2,#888);--range-normal-mark-selected-color-hover:var(--color-text1-4,#111);--range-normal-slider-border-color-hover:var(--color-transparent,transparent);--range-normal-mark-color-disabled:var(--color-text1-1,#c1c1c1);--range-normal-mark-selected-color-disabled:var(--color-text1-2,#888);--rating-normal-underlay-color:var(--color-fill1-5,#dedede);--rating-normal-overlay-hover-color:var(--color-brand1-6,#0070cc);--rating-grade-low-overlay-color:var(--color-brand1-6,#0070cc);--rating-grade-high-overlay-color:var(--color-brand1-6,#0070cc);--rating-grade-high-overlay-hover-color:var(--color-brand1-6,#0070cc);--rating-small-text-margin-left:var(--s-2,8px);--rating-small-icon-size:var(--icon-xs,12px);--rating-small-font-size:var(--font-size-caption,12px);--rating-medium-text-margin-left:var(--s-3,12px);--rating-medium-icon-size:var(--icon-s,16px);--rating-medium-font-size:var(--font-size-body-1,12px);--rating-large-text-margin-left:var(--s-4,16px);--rating-large-icon-size:var(--icon-m,20px);--rating-large-font-size:var(--font-size-subhead,14px);--rating-normal-overlay-color:var(--color-brand1-6,#0070cc);--rating-grade-low-overlay-hover-color:var(--color-text1-2,#888);--rating-grade-icon-content:var(--icon-content-favorites-filling,"");--search-normal-primary-border-width:var(--line-1,1px);--search-normal-primary-l-height:var(--s-9,36px);--search-normal-primary-l-icon-size:var(--icon-s,16px);--search-normal-primary-m-height:var(--s-8,32px);--search-normal-secondary-color:var(--color-line1-1,#dedede);--search-normal-secondary-hover-color:var(--color-brand1-7,#005aa5);--search-normal-secondary-btn-hover-bg-color:var(--color-brand1-7,#005aa5);--search-normal-secondary-l-height:var(--s-9,36px);--search-normal-secondary-l-icon-size:var(--icon-s,16px);--search-normal-secondary-m-height:var(--s-8,32px);--search-normal-normal-l-height:var(--s-9,36px);--search-normal-normal-l-icon-size:var(--icon-s,16px);--search-normal-normal-m-height:var(--s-8,32px);--search-normal-dark-btn-hover-bg-color:var(--color-brand1-7,#005aa5);--search-normal-dark-l-height:var(--s-9,36px);--search-normal-dark-l-icon-size:var(--icon-s,16px);--search-normal-dark-m-height:var(--s-8,32px);--search-simple-normal-color:var(--color-line1-1,#dedede);--search-simple-normal-m-icon-size:var(--icon-s,16px);--search-simple-dark-m-icon-size:var(--icon-s,16px);--search-normal-primary-color:var(--color-brand1-6,#0070cc);--search-normal-primary-hover-color:var(--color-brand1-7,#005aa5);--search-normal-secondary-btn-bg-color:var(--color-brand1-6,#0070cc);--search-normal-normal-color:var(--color-line1-1,#dedede);--search-normal-normal-btn-text-color:var(--color-text1-5,#333);--search-normal-normal-btn-hover-bg-color:var(--color-fill1-1,#fafafa);--search-normal-normal-btn-hover-text-color:var(--color-text1-5,#333);--search-normal-dark-color:var(--color-brand1-6,#0070cc);--search-normal-dark-hover-color:var(--color-brand1-7,#005aa5);--search-simple-normal-split-color:var(--color-line1-1,#dedede);--search-simple-normal-icon-text-color:var(--color-text1-2,#888);--search-simple-normal-l-icon-size:var(--icon-s,16px);--search-simple-dark-l-icon-size:var(--icon-s,16px);--search-normal-primary-btn-hover-bg-color:var(--color-brand1-7,#005aa5);--search-normal-corner:var(--corner-1,0px);--search-normal-primary-split-color:var(--color-line1-1,#dedede);--search-normal-primary-shadow:var(--shadow-zero,none);--search-normal-primary-btn-text-color:var(--color-white,#fff);--search-normal-primary-btn-hover-text-color:var(--color-white,#fff);--search-normal-primary-btn-text-padding-left:var(--s-zero,0px);--search-normal-primary-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-primary-m-icon-size:var(--icon-s,16px);--search-normal-primary-m-btn-text-size:var(--font-size-subhead,14px);--search-normal-secondary-split-color:var(--color-line1-1,#dedede);--search-normal-secondary-shadow:var(--shadow-zero,none);--search-normal-secondary-btn-text-color:var(--color-white,#fff);--search-normal-secondary-btn-hover-text-color:var(--color-white,#fff);--search-normal-secondary-border-width:var(--line-1,1px);--search-normal-secondary-btn-text-padding-left:var(--s-zero,0px);--search-normal-secondary-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-secondary-m-icon-size:var(--icon-s,16px);--search-normal-secondary-m-btn-text-size:var(--font-size-subhead,14px);--search-normal-normal-split-color:var(--color-line1-1,#dedede);--search-normal-normal-hover-color:var(--color-line1-4,#737373);--search-normal-normal-shadow:var(--shadow-zero,none);--search-normal-normal-btn-bg-color:var(--color-fill1-1,#fafafa);--search-normal-normal-border-width:var(--line-1,1px);--search-normal-normal-btn-text-padding-left:var(--s-zero,0px);--search-normal-normal-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-normal-m-icon-size:var(--icon-s,16px);--search-normal-normal-m-btn-text-size:var(--font-size-subhead,14px);--search-normal-dark-text-color:var(--color-white,#fff);--search-normal-dark-bg-color:var(--color-white,#fff);--search-normal-dark-bg-opacity:0;--search-normal-dark-shadow:var(--shadow-zero,none);--search-normal-dark-btn-text-color:var(--color-white,#fff);--search-normal-dark-btn-hover-text-color:var(--color-white,#fff);--search-normal-dark-border-width:var(--line-1,1px);--search-normal-dark-btn-text-padding-left:var(--s-zero,0px);--search-normal-dark-l-btn-text-size:var(--font-size-subhead,14px);--search-normal-dark-m-icon-size:var(--icon-s,16px);--search-normal-dark-m-btn-text-size:var(--font-size-subhead,14px);--search-simple-corner:var(--corner-1,0px);--search-simple-l-icon-margin-right:var(--s-3,12px);--search-simple-m-icon-margin-right:var(--s-2,8px);--search-simple-normal-hover-color:var(--color-line1-4,#737373);--search-simple-normal-shadow:var(--shadow-zero,none);--search-simple-normal-icon-hover-text-color:var(--color-text1-3,#555);--search-simple-normal-border-width:var(--line-1,1px);--search-simple-normal-btn-text-padding-left:var(--s-zero,0px);--search-simple-dark-color:var(--color-line1-3,#a8a8a8);--search-simple-dark-hover-color:var(--color-line1-3,#a8a8a8);--search-simple-dark-bg-color:var(--color-white,#fff);--search-simple-dark-bg-opacity:0;--search-simple-dark-text-color:var(--color-white,#fff);--search-simple-dark-shadow:var(--shadow-zero,none);--search-simple-dark-icon-text-color:var(--color-text1-2,#888);--search-simple-dark-icon-hover-text-color:var(--color-text1-3,#555);--search-simple-dark-btn-text-padding-left:var(--s-zero,0px);--search-simple-dark-split-color:var(--color-line1-3,#a8a8a8);--search-simple-dark-border-width:var(--line-1,1px);--search-search-icon-content:var(--icon-content-search,"");--progress-line-underlay-color:var(--color-fill1-3,#f5f5f5);--progress-line-radius-l:var(--corner-1,0px);--progress-line-radius-m:var(--corner-1,0px);--progress-line-radius-s:var(--corner-1,0px);--progress-line-normal-color:var(--color-brand1-6,#0070cc);--progress-line-started-color:var(--color-brand1-6,#0070cc);--progress-line-middle-color:var(--color-brand1-6,#0070cc);--progress-line-finishing-color:var(--color-brand1-6,#0070cc);--progress-circle-started-color:var(--color-brand1-6,#0070cc);--progress-circle-middle-color:var(--color-brand1-6,#0070cc);--progress-circle-finishing-color:var(--color-brand1-6,#0070cc);--progress-line-height-size-l:var(--s-3,12px);--progress-line-height-size-m:var(--s-2,8px);--progress-line-height-size-s:var(--s-1,4px);--progress-line-underlay-border-width:var(--line-1,1px);--progress-line-font-l:var(--font-size-body-1,12px);--progress-line-font-m:var(--font-size-caption,12px);--progress-line-font-s:var(--font-size-caption,12px);--progress-line-underlay-border-color:var(--color-line1-2,#c9c9c9);--progress-line-font-color:var(--color-text1-4,#111);--progress-line-error-color:var(--color-error-3,#d93026);--progress-line-success-color:var(--color-success-3,#1e8e3e);--progress-circle-size-l:var(--s-33,132px);--progress-circle-size-m:var(--s-29,116px);--progress-circle-size-s:var(--s-25,100px);--progress-circle-underlay-width:var(--s-2,8px);--progress-circle-overlay-width:var(--s-2,8px);--progress-circle-font-l:var(--font-size-display-1,24px);--progress-circle-font-m:var(--font-size-headline,18px);--progress-circle-font-s:var(--font-size-title,16px);--progress-circle-underlay-color:var(--color-fill1-3,#f5f5f5);--progress-circle-text-color:var(--color-text1-4,#111);--progress-circle-corner:round;--progress-circle-normal-color:var(--color-brand1-6,#0070cc);--progress-circle-error-color:var(--color-error-3,#d93026);--progress-circle-success-color:var(--color-success-3,#1e8e3e);--pagination-large-item-split:var(--s-2,8px);--pagination-small-item-split:var(--s-1,4px);--pagination-current-color:var(--color-brand1-6,#0070cc);--pagination-total-color:var(--color-text1-5,#333);--pagination-size-selector-filter-current-color:var(--color-brand1-6,#0070cc);--pagination-item-border-color:var(--color-line1-1,#dedede);--pagination-item-color:var(--color-text1-5,#333);--pagination-item-bg:var(--color-fill1-1,#fafafa);--pagination-item-current-border-color:var(--color-brand1-6,#0070cc);--pagination-item-current-color:var(--color-brand1-6,#0070cc);--pagination-item-current-bg:var(--color-white,#fff);--pagination-item-hover-border-color:var(--color-line1-4,#737373);--pagination-item-hover-color:var(--color-text1-5,#333);--pagination-item-hover-bg:var(--color-white,#fff);--pagination-arrow-color:var(--color-text1-2,#888);--pagination-item-current-hover-border-color:var(--color-brand1-6,#0070cc);--pagination-item-current-hover-color:var(--color-brand1-6,#0070cc);--pagination-item-current-hover-bg:var(--color-white,#fff);--pagination-arrow-hover-color:var(--color-text1-3,#555);--pagination-item-border-style:var(--line-solid,solid);--pagination-item-border-width:var(--line-1,1px);--pagination-item-corner:var(--corner-1,0px);--pagination-ellipsis-size:var(--icon-xs,12px);--pagination-ellipsis-margin:var(--s-2,8px);--pagination-current-font-size:var(--font-size-body-1,12px);--pagination-total-font-size:var(--font-size-body-1,12px);--pagination-jump-font-size:var(--font-size-body-1,12px);--pagination-input-width:var(--s-9,36px);--pagination-size-selector-title-margin-right:var(--s-1,4px);--pagination-size-selector-number-padding:var(--s-3,12px);--pagination-large-item-border-width:var(--line-1,1px);--pagination-large-item-corner:var(--corner-1,0px);--pagination-large-ellipsis-size:var(--icon-s,16px);--pagination-large-current-font-size:var(--font-size-subhead,14px);--pagination-large-total-font-size:var(--font-size-subhead,14px);--pagination-large-input-width:var(--s-12,48px);--pagination-large-jump-font-size:var(--font-size-subhead,14px);--pagination-large-size-selector-number-padding:var(--s-4,16px);--pagination-small-item-border-width:var(--line-1,1px);--pagination-small-item-corner:var(--corner-1,0px);--pagination-small-ellipsis-size:var(--icon-xs,12px);--pagination-small-current-font-size:var(--font-size-caption,12px);--pagination-small-total-font-size:var(--font-size-caption,12px);--pagination-small-input-width:var(--s-7,28px);--pagination-small-jump-font-size:var(--font-size-caption,12px);--pagination-small-size-selector-number-padding:var(--s-2,8px);--pagination-ellipsis-color:var(--color-text1-2,#888);--pagination-jump-color:var(--color-text1-2,#888);--pagination-size-selector-title-color:var(--color-text1-2,#888);--pagination-size-selector-filter-color:var(--color-text1-3,#555);--pagination-item-shadow:var(--shadow-zero,none);--pagination-item-current-shadow:var(--shadow-zero,none);--pagination-item-hover-shadow:var(--shadow-zero,none);--pagination-icon-prev-content:var(--icon-content-arrow-left,"");--pagination-icon-next-content:var(--icon-content-arrow-right,"");--pagination-icon-ellipsis-content:var(--icon-content-ellipsis,"");--pagination-item-current-hover-shadow:var(--shadow-zero,none);--pagination-arrow-hover-color-noboder:var(--color-brand1-6,#0070cc);--pagination-item-split:var(--s-1,4px);--pagination-input-margin:var(--s-1,4px);--radio-width:var(--s-4,16px);--radio-circle-size:var(--s-2,8px);--radio-hovered-bg-color:var(--color-transparent,transparent);--radio-checked-bg-color:var(--color-white,#fff);--radio-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--radio-checked-hovered-bg-color:var(--color-white,#fff);--radio-hovered-border-color:var(--color-line1-4,#737373);--radio-checked-border-color:var(--color-brand1-6,#0070cc);--radio-disabled-border-color:var(--color-fill1-4,#ebebeb);--radio-checked-disabled-border-color:var(--color-fill1-4,#ebebeb);--radio-checked-hovered-border-color:var(--color-brand1-7,#005aa5);--radio-checked-circle-color:var(--color-brand1-6,#0070cc);--radio-checked-hovered-circle-color:var(--color-brand1-7,#005aa5);--radio-button-height-large:var(--s-9,36px);--radio-button-height-medium:var(--s-8,32px);--radio-button-height-small:var(--s-6,24px);--radio-button-font-size-large:var(--font-size-body-2,14px);--radio-button-bg-color-hovered:var(--color-white,#fff);--radio-button-bg-color-checked-disabled:var(--color-fill1-4,#ebebeb);--radio-button-border-color:var(--color-line1-2,#c9c9c9);--radio-button-border-color-hovered:var(--color-line1-4,#737373);--radio-button-border-color-checked:var(--color-brand1-6,#0070cc);--radio-button-font-color:var(--color-text1-3,#555);--radio-button-font-color-checked:var(--color-brand1-6,#0070cc);--radio-checked-disabled-bg-color:var(--color-fill1-2,#f7f7f7);--radio-circle-border-width:var(--line-1,1px);--radio-font-margin-left:var(--s-1,4px);--radio-font-size:var(--font-size-body-1,12px);--radio-shadow:var(--shadow-zero,none);--radio-radius-size:var(--corner-circle,50%);--radio-bg-color:var(--color-white,#fff);--radio-border-color:var(--color-line1-3,#a8a8a8);--radio-disabled-circle-color:var(--color-text1-1,#c1c1c1);--radio-checked-disabled-circle-color:var(--color-text1-1,#c1c1c1);--radio-normal-font-color:var(--color-text1-4,#111);--radio-normal-font-color-disabled:var(--color-text1-1,#c1c1c1);--radio-button-padding-large:var(--s-2,8px);--radio-button-padding-medium:var(--s-2,8px);--radio-button-padding-small:var(--s-2,8px);--radio-button-corner-large:var(--corner-1,0px);--radio-button-corner-medium:var(--corner-1,0px);--radio-button-corner-small:var(--corner-1,0px);--radio-button-font-size-medium:var(--font-size-body-1,12px);--radio-button-font-size-small:var(--font-size-caption,12px);--radio-button-bg-color:var(--color-white,#fff);--radio-button-bg-color-checked:var(--color-white,#fff);--radio-button-bg-color-disabled:var(--color-fill1-1,#fafafa);--radio-button-border-color-disabled:var(--color-line1-1,#dedede);--radio-button-border-color-checked-disabled:var(--color-line1-1,#dedede);--radio-button-font-color-hovered:var(--color-text1-4,#111);--radio-button-font-color-disabled:var(--color-text1-1,#c1c1c1);--radio-button-font-color-checked-disabled:var(--color-text1-1,#c1c1c1);--switch-size-m-width:var(--s-11,44px);--switch-size-m-trigger:var(--s-5,20px);--switch-size-m-radius-trigger:var(--corner-circle,50%);--switch-size-s-width:var(--s-8,32px);--switch-size-s-radius-trigger:var(--corner-circle,50%);--switch-disabled-on-trigger-bg-color:var(--color-white,#fff);--switch-normal-off-bg-color:var(--color-text1-2,#888);--switch-hover-off-bg-color:var(--color-fill1-8,#737373);--switch-disabled-off-bg-color:var(--color-fill1-4,#ebebeb);--switch-handle-disabled-border-color:var(--color-transparent,transparent);--switch-normal-off-color-font:var(--color-fill1-1,#fafafa);--switch-normal-off-border-color:var(--color-transparent,transparent);--switch-hover-off-border-color:var(--color-transparent,transparent);--switch-disabled-on-bg-color:var(--color-brand1-4,#7ec5ff);--switch-size-s-trigger:var(--s-4,16px);--switch-border-width-container:var(--line-1,1px);--switch-normal-on-bg-color:var(--color-success-3,#1e8e3e);--switch-hover-on-bg-color:var(--color-success-4,#176e30);--switch-size-m-radius-container:var(--corner-3,12px);--switch-size-s-radius-container:var(--corner-3,12px);--switch-text-on-left:var(--s-2,8px);--switch-size-s-text-on-left:var(--s-1,4px);--switch-text-off-right:var(--s-2,8px);--switch-size-s-text-off-right:var(--s-1,4px);--switch-border-width-trigger:var(--line-1,1px);--switch-normal-on-trigger-bg-color:var(--color-white,#fff);--switch-hover-on-trigger-bg-color:var(--color-white,#fff);--switch-normal-on-color-font:var(--color-white,#fff);--switch-disabled-on-color-font:var(--color-text1-1,#c1c1c1);--switch-disabled-on-border-color:var(--color-line1-3,#a8a8a8);--switch-handle-on-border-color:var(--color-transparent,transparent);--switch-on-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--switch-normal-off-trigger-bg-color:var(--color-white,#fff);--switch-hover-off-trigger-bg-color:var(--color-white,#fff);--switch-disabled-off-trigger-bg-color:var(--color-fill1-1,#fafafa);--switch-disabled-off-color-font:var(--color-line1-3,#a8a8a8);--switch-handle-off-border-color:var(--color-transparent,transparent);--switch-off-shadow:var(--shadow-1,1px 1px 4px 0px rgba(0,0,0,0.13));--switch-rtl-on-shadow:var(--shadow-1-left,-1px 0px 4px 0px rgba(0,0,0,0.13));--select-color:var(--color-text1-5,#333);--select-s-lineheight:16px;--select-hint-color:var(--color-text1-2,#888);--select-highlight-color:var(--color-brand1-6,#0070cc);--select-highlight-font:var(--font-size-body-1,12px);--select-l-lineheight:var(--s-6,24px);--select-m-lineheight:var(--s-5,20px);--select-fold-icon-content:var(--icon-content-arrow-down,"");--select-unfold-icon-content:var(--icon-reset,var(--icon-reset));--slick-arrow-bg-color-disabled:var(--color-black,#000);--slick-arrow-bg-opacity-disabled:0.05;--slick-dots-position-bottom:var(--s-3,12px);--slick-dots-position-right:var(--s-5,20px);--slick-dots-width:var(--s-2,8px);--slick-dots-height:var(--s-2,8px);--slick-dots-margin-lr:var(--s-1,4px);--slick-dots-margin-tb:var(--s-zero,0px);--slick-arrow-width-m:var(--s-7,28px);--slick-arrow-width-l:var(--s-12,48px);--slick-arrow-height-m:var(--s-14,56px);--slick-arrow-height-l:var(--s-24,96px);--slick-ver-arrow-width-m:var(--s-14,56px);--slick-ver-arrow-width-l:var(--s-24,96px);--slick-ver-arrow-height-m:var(--s-7,28px);--slick-ver-arrow-height-l:var(--s-12,48px);--slick-arrow-icon-m:var(--icon-m,20px);--slick-arrow-icon-l:var(--icon-xl,32px);--slick-arrow-position-lr-m:var(--s-1,4px);--slick-arrow-position-lr-l:var(--s-2,8px);--slick-ver-arrow-position-tb-m:var(--s-1,4px);--slick-ver-arrow-position-tb-l:var(--s-4,16px);--slick-track-padding-lr:var(--s-6,24px);--slick-ver-track-padding-tb:var(--s-6,24px);--slick-dots-background-color-normal:var(--color-black,#000);--slick-dots-background-color-hover:var(--color-black,#000);--slick-dots-background-color-selected:var(--color-brand1-6,#0070cc);--slick-dots-background-opacity-normal:.32;--slick-dots-background-opacity-hover:.32;--slick-dots-background-opacity-selected:1;--slick-dots-border-width:var(--line-zero,0px);--slick-dots-border-radius:var(--corner-circle,50%);--slick-dots-border-color-normal:var(--color-white,#fff);--slick-dots-border-color-hover:var(--color-white,#fff);--slick-dots-border-color-selected:var(--color-white,#fff);--slick-dots-border-opacity-normal:1;--slick-dots-border-opacity-hover:1;--slick-dots-border-opacity-selected:1;--slick-arrow-icon-color-normal:var(--color-white,#fff);--slick-arrow-icon-color-normal-outer:var(--color-text1-3,#555);--slick-arrow-icon-color-hover:var(--color-white,#fff);--slick-arrow-icon-color-hover-outer:var(--color-text1-4,#111);--slick-arrow-icon-color-disabled:var(--color-text1-1,#c1c1c1);--slick-arrow-icon-color-disabled-outer:var(--color-text1-1,#c1c1c1);--slick-arrow-bg-color-normal:var(--color-black,#000);--slick-arrow-bg-color-hover:var(--color-black,#000);--slick-arrow-bg-opacity-normal:.2;--slick-arrow-bg-opacity-hover:.4;--slick-arrow-bg-color-normal-outer:var(--color-transparent,transparent);--slick-arrow-bg-color-hover-outer:var(--color-transparent,transparent);--slick-arrow-bg-color-disabled-outer:var(--color-transparent,transparent);--slick-arrow-bg-opacity-normal-outer:.32;--slick-arrow-bg-opacity-hover-outer:.32;--slick-arrow-bg-opacity-disabled-outer:.32;--slick-arrow-corner-radius-outer:var(--s-zero,0px);--step-arrow-item-title-weight:var(--font-weight-2,normal);--step-arrow-item-wait-background:var(--color-fill1-2,#f7f7f7);--step-arrow-item-process-background:var(--color-brand1-6,#0070cc);--step-arrow-item-finish-background:var(--color-brand1-6,#0070cc);--step-arrow-item-title-finish-color:var(--color-white,#fff);--step-circle-item-node-padding:var(--s-3,12px);--step-circle-item-node-icon-size:var(--icon-s,16px);--step-circle-item-node-font-size:var(--font-size-body-1,12px);--step-circle-item-content-font-size:var(--font-size-body-1,12px);--step-circle-item-body-width:var(--s-24,96px);--step-circle-item-tail-wait-color:var(--color-line1-1,#dedede);--step-circle-item-tail-process-color:var(--color-line1-1,#dedede);--step-circle-item-tail-finish-color:var(--color-brand1-6,#0070cc);--step-circle-item-title-wait-color:var(--color-text1-2,#888);--step-circle-item-title-process-color:var(--color-text1-5,#333);--step-circle-item-title-finish-color:var(--color-text1-5,#333);--step-circle-item-title-disabled-color:var(--color-fill1-4,#ebebeb);--step-circle-item-node-wait-border-color:var(--color-line1-1,#dedede);--step-circle-item-node-wait-color:var(--color-text1-2,#888);--step-circle-item-node-process-border-color:var(--color-brand1-6,#0070cc);--step-circle-item-node-process-background:var(--color-brand1-6,#0070cc);--step-circle-item-node-process-percent-color:var(--color-brand1-6,#0070cc);--step-circle-item-node-process-percent-size:var(--font-size-body-1,12px);--step-circle-item-node-finish-border-color:var(--color-brand1-6,#0070cc);--step-circle-item-node-finish-color:var(--color-brand1-6,#0070cc);--step-dot-item-dot-icon-size:var(--icon-s,16px);--step-dot-item-body-width:var(--s-24,96px);--step-dot-item-tail-wait-color:var(--color-line1-1,#dedede);--step-dot-item-tail-process-color:var(--color-line1-1,#dedede);--step-dot-item-tail-finish-color:var(--color-brand1-6,#0070cc);--step-dot-item-title-wait-color:var(--color-text1-2,#888);--step-dot-item-title-process-color:var(--color-text1-5,#333);--step-dot-item-title-finish-color:var(--color-text1-5,#333);--step-dot-item-node-wait-border-color:var(--color-line1-1,#dedede);--step-dot-item-node-process-color:var(--color-brand1-6,#0070cc);--step-dot-item-node-finish-border-color:var(--color-brand1-6,#0070cc);--step-dot-item-node-finish-color:var(--color-brand1-6,#0070cc);--step-dot-item-tail-bg-color:var(--color-fill1-1,#fafafa);--step-arrow-item-height:var(--s-8,32px);--step-arrow-item-title-size:var(--font-size-body-2,14px);--step-arrow-item-title-wait-color:var(--color-text1-2,#888);--step-arrow-item-title-process-color:var(--color-white,#fff);--step-arrow-item-disabled-background:var(--color-fill1-1,#fafafa);--step-arrow-item-title-disabled-color:var(--color-text1-1,#c1c1c1);--step-circle-item-node-border-width:var(--line-1,1px);--step-circle-item-node-corner:var(--corner-circle,50%);--step-circle-item-tail-size:var(--line-1,1px);--step-circle-item-title-margin-top:var(--s-2,8px);--step-circle-item-content-margin-top:var(--s-1,4px);--step-circle-item-title-size:var(--font-size-body-2,14px);--step-circle-item-title-weight:var(--font-weight-3,bold);--step-circle-item-node-wait-size:var(--s-8,32px);--step-circle-item-node-process-size:var(--s-8,32px);--step-circle-item-node-finish-size:var(--s-8,32px);--step-circle-item-node-disabled-size:var(--s-8,32px);--step-circle-item-tail-disabled-color:var(--color-line1-1,#dedede);--step-circle-item-node-wait-font-weight:var(--font-weight-2,normal);--step-circle-item-node-process-font-weight:var(--font-weight-2,normal);--step-circle-item-node-disabled-font-weight:var(--font-weight-2,normal);--step-circle-item-node-finish-font-weight:var(--font-weight-2,normal);--step-circle-item-node-wait-background:var(--color-white,#fff);--step-circle-item-node-process-color:var(--color-white,#fff);--step-circle-item-node-finish-background:var(--color-white,#fff);--step-circle-item-node-disabled-border-color:var(--color-line1-1,#dedede);--step-circle-item-node-disabled-background:var(--color-white,#fff);--step-circle-item-node-disabled-color:var(--color-text1-1,#c1c1c1);--step-circle-vertical-item-node-padding:var(--s-2,8px);--step-circle-vertical-item-body-margin-left:var(--s-4,16px);--step-circle-vertical-item-title-margin-top:var(--s-2,8px);--step-circle-vertical-item-content-margin-top:var(--s-1,4px);--step-circle-item-content-color:var(--color-text1-3,#555);--step-circle-item-tail-bg-color:var(--color-line1-1,#dedede);--step-circle-vertical-item-tail-size:var(--line-1,1px);--step-dot-item-dot-padding:var(--s-2,8px);--step-dot-item-dot-border-width:var(--line-1,1px);--step-dot-item-content-margin-top:var(--s-1,4px);--step-dot-item-dot-corner:var(--corner-circle,50%);--step-dot-item-title-size:var(--font-size-body-1,12px);--step-dot-item-title-weight:var(--font-weight-3,bold);--step-dot-item-title-margin-top:var(--s-2,8px);--step-dot-item-tail-size:var(--line-1,1px);--step-dot-item-dot-wait-size:var(--s-3,12px);--step-dot-item-dot-process-size:var(--s-3,12px);--step-dot-item-dot-finish-size:var(--s-3,12px);--step-dot-item-dot-disabled-size:var(--s-3,12px);--step-dot-item-tail-disabled-color:var(--color-line1-1,#dedede);--step-dot-item-title-disabled-color:var(--color-text1-1,#c1c1c1);--step-dot-item-node-wait-background:var(--color-white,#fff);--step-dot-item-node-wait-color:var(--color-text1-2,#888);--step-dot-item-node-process-border-color:var(--color-brand1-6,#0070cc);--step-dot-item-node-process-background:var(--color-brand1-6,#0070cc);--step-dot-item-node-finish-background:var(--color-white,#fff);--step-dot-item-node-disabled-border-color:var(--color-line1-2,#c9c9c9);--step-dot-item-node-disabled-background:var(--color-white,#fff);--step-dot-item-node-disabled-color:var(--color-line1-1,#dedede);--step-dot-vertical-item-node-padding:var(--s-2,8px);--step-dot-vertical-item-body-margin-left:var(--s-4,16px);--step-dot-vertical-item-title-margin-top:var(--s-zero,0px);--step-dot-vertical-item-content-margin-top:var(--s-2,8px);--step-dot-item-content-font-size:var(--font-size-caption,12px);--step-dot-item-content-color:var(--color-text1-3,#555);--step-dot-vertical-item-tail-size:var(--line-1,1px);--tab-nav-tab-icon-size-s:var(--icon-xs,12px);--tab-nav-arrow-right-positon-right:var(--s-3,12px);--tab-item-padding-tb-size-m:var(--s-2,8px);--tab-item-text-size-m:var(--font-size-body-2,14px);--tab-item-text-size-s:var(--font-size-body-1,12px);--tab-pure-text-color-hover:var(--color-brand1-6,#0070cc);--tab-wrapped-border-line-color:var(--color-line1-1,#dedede);--tab-wrapped-bg-color:var(--color-white,#fff);--tab-wrapped-bg-color-hover:var(--color-fill1-1,#fafafa);--tab-wrapped-border-line-color-hover:var(--color-line1-1,#dedede);--tab-capsule-text-color:var(--color-text1-3,#555);--tab-capsule-text-color-selected:var(--color-brand1-6,#0070cc);--tab-capsule-bg-color:var(--color-white,#fff);--tab-capsule-bg-color-hover:var(--color-fill1-1,#fafafa);--tab-capsule-bg-color-selected:var(--color-white,#fff);--tab-capsule-tab-border-line-color:var(--color-line1-1,#dedede);--tab-item-padding-tb-size-s:var(--s-1,4px);--tab-nav-arrow-color-normal:var(--color-text1-2,#888);--tab-nav-arrow-color-hover:var(--color-text1-3,#555);--tab-nav-arrow-color-disabled:var(--color-text1-1,#c1c1c1);--tab-pure-text-color-selected:var(--color-brand1-6,#0070cc);--tab-pure-ink-bar-color:var(--color-brand1-6,#0070cc);--tab-pure-divider-border-color:var(--color-line1-1,#dedede);--tab-wrapped-bar-bg-color:var(--color-transparent,transparent);--tab-wrapped-ink-bar-color:var(--color-brand1-6,#0070cc);--tab-wrapped-text-color-hover:var(--color-text1-5,#333);--tab-wrapped-text-color-selected:var(--color-brand1-6,#0070cc);--tab-wrapped-bg-color-selected:var(--color-white,#fff);--tab-capsule-text-color-hover:var(--color-text1-5,#333);--tab-capsule-tab-border-line-color-active:var(--color-brand1-6,#0070cc);--tab-text-item-sep-height:var(--s-3,12px);--tab-text-text-color-hover:var(--color-brand1-6,#0070cc);--tab-text-text-color-selected:var(--color-brand1-6,#0070cc);--tab-capsule-tab-border-line-color-hover:var(--color-brand1-6,#0070cc);--tab-wrapped-tab-margin-right:-1px;--tab-nav-scroll-padding-right-m:var(--s-15,60px);--tab-nav-scroll-padding-right-s:var(--s-14,56px);--tab-nav-tab-icon-size-m:var(--icon-s,16px);--tab-nav-close-icon-size-m:var(--icon-xs,12px);--tab-nav-close-icon-size-s:var(--icon-xxs,8px);--tab-nav-close-icon-padding-l-size-m:var(--s-2,8px);--tab-nav-close-icon-padding-l-size-s:var(--s-2,8px);--tab-nav-arrow-left-positon-right:var(--s-8,32px);--tab-nav-arrow-down-positon-right:var(--s-2,8px);--tab-item-padding-lr-size-m:var(--s-4,16px);--tab-item-padding-lr-size-s:var(--s-3,12px);--tab-close-icon-color:var(--color-text1-3,#555);--tab-close-icon-color-hover:var(--color-text1-4,#111);--tab-close-icon-color-selected:var(--color-brand1-6,#0070cc);--tab-close-icon-color-disabled:var(--color-line1-2,#c9c9c9);--tab-item-font-weight-selected:var(--font-weight-2,normal);--tab-pure-divider-line-width:var(--line-1,1px);--tab-pure-ink-bar-width:var(--line-2,2px);--tab-pure-text-color-normal:var(--color-text1-3,#555);--tab-pure-bg-color:var(--color-transparent,transparent);--tab-pure-text-color-disabled:var(--color-line1-2,#c9c9c9);--tab-pure-divider-shadow:var(--shadow-zero,none);--tab-wrapped-border-line-style:var(--line-solid,solid);--tab-wrapped-border-line-width:var(--line-1,1px);--tab-wrapped-border-side-width:var(--line-1,1px);--tab-wrapped-tab-corner-radius:var(--corner-1,0px);--tab-wrapped-tab-margin-bottom:var(--s-1,4px);--tab-wrapped-ink-bar-width:var(--line-2,2px);--tab-wrapped-nav-item-border-color-active:var(--color-brand1-6,#0070cc);--tab-wrapped-content-border-line-width:var(--line-1,1px);--tab-wrapped-content-border-line-style:var(--line-solid,solid);--tab-wrapped-content-border-line-color:var(--color-line1-2,#c9c9c9);--tab-wrapped-text-color:var(--color-text1-3,#555);--tab-wrapped-text-color-disabled:var(--color-text1-1,#c1c1c1);--tab-wrapped-bg-color-disabled:var(--color-fill1-1,#fafafa);--tab-capsule-text-color-disabled:var(--color-text1-1,#c1c1c1);--tab-capsule-bg-color-disabled:var(--color-fill1-1,#fafafa);--tab-capsule-tab-border-line-color-disabled:var(--color-line1-1,#dedede);--tab-capsule-corner-radius:var(--corner-1,0px);--tab-capsule-tab-border-line-width:var(--line-1,1px);--tab-capsule-tab-border-line-style:var(--line-solid,solid);--tab-text-item-sep-width:var(--line-1,1px);--tab-text-item-sep-color:var(--color-line1-2,#c9c9c9);--tab-text-text-color-normal:var(--color-text1-3,#555);--tab-text-text-color-disabled:var(--color-text1-1,#c1c1c1);--tab-icon-dropdown-content:var(--icon-content-arrow-down,"");--tab-icon-prev-content:var(--icon-content-arrow-left,"");--tab-icon-next-content:var(--icon-content-arrow-right,"");--timeline-item-icon-size:var(--icon-s,16px);--timeline-item-content-margin-left:var(--s-4,16px);--timeline-item-time-margin-bottom:var(--s-2,8px);--timeline-item-body-font-size:var(--font-size-body-1,12px);--timeline-item-title-color:var(--color-text1-5,#333);--timeline-item-tail-color:var(--color-line1-1,#dedede);--timeline-item-done-background:var(--color-fill1-4,#ebebeb);--timeline-item-process-background:var(--color-brand1-6,#0070cc);--timeline-item-node-size:var(--s-4,16px);--timeline-item-custom-node-size:var(--s-10,40px);--timeline-item-custom-node-font-size:var(--font-size-caption,12px);--timeline-item-node-padding:var(--s-1,4px);--timeline-item-dot-size:var(--s-2,8px);--timeline-item-tail-size:var(--line-1,1px);--timeline-item-left-content-width:var(--s-20,80px);--timeline-item-body-margin-top:var(--s-2,8px);--timeline-item-title-font-size:var(--font-size-body-1,12px);--timeline-item-title-font-weight:var(--font-weight-3,bold);--timeline-item-title-margin-top:var(--s-1,4px);--timeline-item-time-margin-top:var(--s-1,4px);--timeline-item-left-body-font-size:var(--font-size-caption,12px);--timeline-item-time-font-size:var(--font-size-caption,12px);--timeline-item-folder-font-size:var(--font-size-caption,12px);--timeline-item-folder-margin-top:var(--s-1,4px);--timeline-item-folder-margin-bottom:var(--s-1,4px);--timeline-item-body-color:var(--color-text1-3,#555);--timeline-item-left-body-color:var(--color-text1-2,#888);--timeline-item-time-color:var(--color-text1-2,#888);--timeline-item-done-dot-size:var(--s-2,8px);--timeline-item-done-color:var(--color-white,#fff);--timeline-item-process-dot-size:var(--s-2,8px);--timeline-item-process-color:var(--color-white,#fff);--timeline-item-success-dot-size:var(--s-2,8px);--timeline-item-success-background:var(--color-success-3,#1e8e3e);--timeline-item-success-color:var(--color-white,#fff);--timeline-item-error-dot-size:var(--s-2,8px);--timeline-item-error-background:var(--color-error-3,#d93026);--timeline-item-error-color:var(--color-white,#fff);--tree-switch-icon-size:var(--icon-xs,12px);--tree-switch-margint-right:var(--s-1,4px);--tree-node-normal-color:var(--color-text1-5,#333);--tree-switch-icon-color:var(--color-text1-3,#555);--tree-switch-border-color:var(--color-fill1-7,#a8a8a8);--tree-line-color:var(--color-line1-1,#dedede);--tree-node-hover-color:var(--color-text1-5,#333);--tree-node-hover-bg-color:var(--color-fill1-4,#ebebeb);--tree-switch-hover-arrow-color:var(--color-text1-3,#555);--tree-switch-hover-icon-color:var(--color-text1-3,#555);--tree-switch-hover-bg-color:var(--color-white,#fff);--tree-switch-hover-border-color:var(--color-text1-3,#555);--tree-node-selected-color:var(--color-brand1-6,#0070cc);--tree-node-selected-background:var(--color-transparent,transparent);--tree-node-disabled-background:var(--color-transparent,transparent);--tree-node-padding:var(--s-1,4px);--tree-node-title-margin:var(--s-1,4px);--tree-node-title-padding:var(--s-1,4px);--tree-node-title-font-size:var(--font-size-body-1,12px);--tree-switch-arrow-size:var(--icon-xs,12px);--tree-switch-size:var(--s-4,16px);--tree-switch-border-width:var(--line-1,1px);--tree-line-width:var(--line-1,1px);--tree-node-normal-background:var(--color-white,#fff);--tree-node-title-border-radius:var(--corner-1,0px);--tree-switch-arrow-color:var(--color-text1-2,#888);--tree-switch-bg-color:var(--color-white,#fff);--tree-switch-corner:var(--corner-1,0px);--tree-line-style:var(--line-solid,solid);--tree-node-disabled-color:var(--color-text1-1,#c1c1c1);--tree-fold-icon-content:var(--icon-content-arrow-down,"");--tree-unfold-icon-content:var(--icon-reset,var(--icon-reset));--tag-size-m-icon-font:var(--icon-xs,12px);--tag-size-s-icon-font:var(--icon-xs,12px);--tag-closable-bordered-bg:var(--color-fill1-1,#fafafa);--tag-fill-bg-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-bordered-text-color:var(--color-text1-5,#333);--tag-bordered-text-color-hover:var(--color-text1-5,#333);--tag-secondary-text-color-hover:var(--color-brand1-6,#0070cc);--tag-bordered-border-color:var(--color-line1-1,#dedede);--tag-checkable-normal-bg-selected:var(--color-brand1-6,#0070cc);--tag-secondary-border-color-hover:var(--color-brand1-6,#0070cc);--tag-checkable-normal-bg-selected-hover:var(--color-brand1-6,#0070cc);--tag-bordered-bg:var(--color-fill1-1,#fafafa);--tag-checkable-normal-border-selected-disabled:var(--color-transparent,transparent);--tag-checkable-primary-bg-color:var(--color-brand1-6,#0070cc);--tag-checkable-primary-border-color:var(--color-brand1-6,#0070cc);--tag-checkable-primary-bg-color-hover:var(--color-brand1-7,#005aa5);--tag-checkable-primary-border-color-hover:var(--color-brand1-7,#005aa5);--tag-checkable-primary-border-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-checkable-primary-bg-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-closable-primary-fill-bg-color-disabled:var(--color-fill1-2,#f7f7f7);--tag-size-l-height:var(--s-7,28px);--tag-size-m-height:var(--s-6,24px);--tag-size-m-padding-lr:var(--s-2,8px);--tag-size-m-text-size:var(--font-size-body-1,12px);--tag-size-s-height:var(--s-5,20px);--tag-corner-radius:var(--corner-semicircle,500px);--tag-size-l-padding-lr:var(--s-4,16px);--tag-size-s-padding-lr:var(--s-2,8px);--tag-checkable-corner-radius:var(--corner-1,0px);--tag-border-width:var(--line-1,1px);--tag-shadow:var(--shadow-zero,none);--tag-size-l-text-size:var(--font-size-subhead,14px);--tag-size-s-text-size:var(--font-size-caption,12px);--tag-size-s-content-min-width:var(--s-7,28px);--tag-size-m-content-min-width:var(--s-10,40px);--tag-size-l-content-min-width:var(--s-12,48px);--tag-size-l-icon-font:var(--icon-xs,12px);--tag-size-l-tick-icon-size:var(--icon-s,16px);--tag-size-m-tick-icon-size:var(--icon-xs,12px);--tag-size-s-tick-icon-size:var(--icon-xxs,8px);--tag-size-l-tick-icon-bg-size:var(--s-9,36px);--tag-size-m-tick-icon-bg-size:var(--s-7,28px);--tag-size-s-tick-icon-bg-size:var(--s-5,20px);--tag-normal-text-color:var(--color-text1-4,#111);--tag-fill-text-color:var(--color-text1-3,#555);--tag-closable-normal-icon-color:var(--color-white,#fff);--tag-closable-normal-icon-color-hover:var(--color-white,#fff);--tag-closable-normal-icon-color-disabled:var(--color-white,#fff);--tag-closable-normal-bg:var(--color-line1-3,#a8a8a8);--tag-closable-normal-bg-hover:var(--color-line1-4,#737373);--tag-closable-normal-bg-disabled:var(--color-line1-1,#dedede);--tag-closable-bordered-text-color:var(--color-text1-3,#555);--tag-closable-bordered-border-color:var(--color-line1-3,#a8a8a8);--tag-closable-bordered-text-color-hover:var(--color-text1-4,#111);--tag-closable-bordered-border-color-hover:var(--color-line1-4,#737373);--tag-closable-bordered-bg-hover:var(--color-transparent,transparent);--tag-closable-bordered-tail-color:var(--color-text1-3,#555);--tag-closable-bordered-tail-color-hover:var(--color-text1-4,#111);--tag-closable-bordered-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-closable-bordered-border-color-disabled:var(--color-line1-1,#dedede);--tag-closable-bordered-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-closable-bordered-bg-disabled:var(--color-transparent,transparent);--tag-fill-tail-color:var(--color-text1-3,#555);--tag-fill-border-color:var(--color-fill1-3,#f5f5f5);--tag-fill-border-color-hover:var(--color-fill1-4,#ebebeb);--tag-fill-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-fill-border-color-disabled:var(--color-fill1-1,#fafafa);--tag-fill-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-bordered-tail-color:var(--color-text1-3,#555);--tag-secondary-text-color:var(--color-brand1-6,#0070cc);--tag-normal-text-color-hover:var(--color-brand1-6,#0070cc);--tag-fill-text-color-hover:var(--color-text1-4,#111);--tag-fill-tail-color-hover:var(--color-text1-4,#111);--tag-bordered-tail-color-hover:var(--color-text1-4,#111);--tag-bordered-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-bordered-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-bordered-border-color-disabled:var(--color-line1-1,#dedede);--tag-bordered-bg-disabled:var(--color-fill1-1,#fafafa);--tag-secondary-border-color:var(--color-brand1-6,#0070cc);--tag-checkable-secondary-bg-selected:var(--color-brand1-6,#0070cc);--tag-bordered-border-color-hover:var(--color-line1-4,#737373);--tag-checkable-secondary-bg-selected-hover:var(--color-brand1-9,#003a6a);--tag-fill-bg-color:var(--color-fill1-3,#f5f5f5);--tag-primary-background-color:var(--color-brand1-6,#0070cc);--tag-secondary-bg:var(--color-transparent,transparent);--tag-fill-bg-color-hover:var(--color-fill1-4,#ebebeb);--tag-bordered-bg-hover:var(--color-transparent,transparent);--tag-secondary-bg-hover:var(--color-transparent,transparent);--tag-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-border-color-disabled:var(--color-line1-1,#dedede);--tag-checkable-fill-text-color:var(--color-text1-3,#555);--tag-checkable-fill-bg-color:var(--color-fill1-3,#f5f5f5);--tag-checkable-fill-border-color:var(--color-fill1-3,#f5f5f5);--tag-checkable-fill-text-color-hover:var(--color-text1-4,#111);--tag-checkable-fill-bg-color-hover:var(--color-fill1-4,#ebebeb);--tag-checkable-fill-border-color-hover:var(--color-fill1-4,#ebebeb);--tag-checkable-fill-tail-color:var(--color-text1-3,#555);--tag-checkable-fill-tail-color-hover:var(--color-text1-4,#111);--tag-checkable-fill-tail-color-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-fill-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-fill-border-color-disabled:var(--color-fill1-1,#fafafa);--tag-checkable-fill-bg-color-disabled:var(--color-fill1-1,#fafafa);--tag-checkable-normal-text-color:var(--color-text1-3,#555);--tag-checkable-normal-border-color:var(--color-line1-3,#a8a8a8);--tag-checkable-normal-bg:var(--color-transparent,transparent);--tag-checkable-normal-text-color-hover:var(--color-text1-4,#111);--tag-checkable-normal-border-color-hover:var(--color-line1-3,#a8a8a8);--tag-checkable-normal-bg-hover:var(--color-transparent,transparent);--tag-checkable-normal-text-selected-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-normal-bg-selected-disabled:var(--color-fill1-1,#fafafa);--tag-checkable-normal-tick-bg-selected-disabled:var(--color-line1-1,#dedede);--tag-checkable-primary-text-color:var(--color-white,#fff);--tag-checkable-primary-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-checkable-primary-text-color-hover:var(--color-white,#fff);--tag-checkable-primary-tail-color:var(--color-white,#fff);--tag-checkable-primary-tail-color-hover:var(--color-white,#fff);--tag-checkable-secondary-bg-selected-disabled:var(--color-line1-1,#dedede);--tag-checkable-normal-icon-color-selected:var(--color-white,#fff);--tag-checkable-normal-icon-color-selected-hover:var(--color-white,#fff);--tag-checkable-normal-icon-color-selected-disabled:var(--color-white,#fff);--tag-checkable-secondary-icon-color-selected:var(--color-white,#fff);--tag-checkable-secondary-icon-color-selected-hover:var(--color-white,#fff);--tag-checkable-secondary-icon-color-selected-disabled:var(--color-white,#fff);--tag-closable-primary-fill-text-color:var(--color-text1-3,#555);--tag-closable-primary-fill-border-color:var(--color-fill1-3,#f5f5f5);--tag-closable-primary-fill-bg-color:var(--color-fill1-3,#f5f5f5);--tag-closable-primary-fill-text-color-hover:var(--color-text1-4,#111);--tag-closable-primary-fill-border-color-hover:var(--color-fill1-4,#ebebeb);--tag-closable-primary-fill-bg-color-hover:var(--color-fill1-4,#ebebeb);--tag-closable-primary-fill-text-color-disabled:var(--color-text1-1,#c1c1c1);--tag-closable-primary-fill-border-color-disabled:var(--color-fill1-1,#fafafa);--table-cell-padding-top:var(--s-2,8px);--table-header-padding-top:var(--s-2,8px);--table-normal-border-color:var(--color-line1-5,#ebebeb);--table-th-bg:var(--color-fill1-1,#fafafa);--table-th-color:var(--color-text1-3,#555);--table-group-th-bg:var(--color-fill1-2,#f7f7f7);--table-row-color:var(--color-text1-5,#333);--table-empty-color:var(--color-text1-5,#333);--table-group-footer-bg:var(--color-fill1-2,#f7f7f7);--table-row-hover-bg:var(--color-fill1-1,#fafafa);--table-row-hover-color:var(--color-text1-5,#333);--table-row-selected-bg:var(--color-brand1-1,#f3faff);--table-row-selected-color:var(--color-text1-5,#333);--table-normal-border-width:var(--line-1,1px);--table-th-font-size:var(--font-size-body-1,12px);--table-th-font-weight:var(--font-weight-2,normal);--table-sort-icon-size:var(--icon-xs,12px);--table-filter-icon-size:var(--icon-xs,12px);--table-body-font-size:var(--font-size-body-1,12px);--table-empty-padding:var(--s-8,32px);--table-expanded-icon-size:var(--icon-xs,12px);--table-tree-expanded-icon-size:var(--icon-xs,12px);--table-cell-padding-left:var(--s-4,16px);--table-header-padding-left:var(--s-4,16px);--table-header-icon-margin-left:var(--s-2,8px);--table-size-s-cell-padding-top:var(--s-2,8px);--table-size-s-cell-padding-left:var(--s-2,8px);--table-size-s-header-padding-top:var(--s-2,8px);--table-size-s-header-padding-left:var(--s-2,8px);--table-group-split:var(--s-2,8px);--table-normal-border-style:var(--line-solid,solid);--table-sort-color:var(--color-text1-4,#111);--table-group-th-color:var(--color-text1-4,#111);--table-row-bg:var(--color-white,#fff);--table-td-gray:var(--color-fill1-1,#fafafa);--table-td-normal:var(--color-white,#fff);--table-group-footer-color:var(--color-text1-4,#111);--table-sort-color-current:var(--color-brand1-6,#0070cc);--table-expanded-ctrl-disabled-color:var(--color-text1-2,#888);--table-tree-fold-icon-content:var(--icon-content-arrow-right,"");--table-tree-unfold-icon-content:var(--icon-content-arrow-down,"");--table-expand-fold-icon-content:var(--icon-content-add,"");--table-expand-unfold-icon-content:var(--icon-content-minus,"");--upload-text-list-height:var(--s-11,44px);--upload-text-list-padding-left-right:var(--s-4,16px);--upload-text-list-close-icon-size:var(--icon-xs,12px);--upload-text-list-bg-color:var(--color-fill1-1,#fafafa);--upload-text-list-bg-color-hover:var(--color-fill1-1,#fafafa);--upload-text-list-name-font-color:var(--color-text1-5,#333);--upload-text-list-name-font-color-hover:var(--color-brand1-6,#0070cc);--upload-text-list-size-font-color-hover:var(--color-brand1-6,#0070cc);--upload-image-list-item-bg-color:var(--color-fill1-1,#fafafa);--upload-image-list-item-uploading-bg-color:var(--color-fill1-1,#fafafa);--upload-image-list-item-error-bg-color:var(--color-error-1,#fcebea);--upload-image-list-item-border-color:var(--color-transparent,transparent);--upload-image-list-item-border-color-error:var(--color-transparent,transparent);--upload-image-list-item-border-color-hover:var(--color-transparent,transparent);--upload-image-list-item-picture-border-color:var(--color-line1-1,#dedede);--upload-image-list-item-picture-background-color:var(--color-fill1-1,#fafafa);--upload-card-bg-color:var(--color-white,#fff);--upload-card-border-color:var(--color-line1-1,#dedede);--upload-card-hover-border-color:var(--color-line1-4,#737373);--upload-card-font-color:var(--color-text1-2,#888);--upload-card-icon-color:var(--color-text1-2,#888);--upload-card-size:var(--s-26,104px);--upload-card-hover-font-color:var(--color-text1-3,#555);--upload-card-list-border-color:var(--color-line1-1,#dedede);--upload-card-list-thumbnail-font-color:var(--color-text1-1,#c1c1c1);--upload-card-list-thumbnail-icon-size:var(--icon-l,24px);--upload-card-list-name-font-color:var(--color-text1-5,#333);--upload-drag-zone-over-border-color:var(--color-line1-4,#737373);--upload-disable-text-color:var(--color-text1-1,#c1c1c1);--upload-disable-border-color:var(--color-line1-1,#dedede);--upload-text-list-font-size:var(--font-size-body-1,12px);--upload-text-list-close-icon-right:var(--s-3,12px);--upload-text-list-corner:var(--corner-zero,0);--upload-text-list-bg-color-error:var(--color-error-1,#fcebea);--upload-text-list-error-text-color:var(--color-error-3,#d93026);--upload-text-list-close-icon-color:var(--color-text1-2,#888);--upload-text-list-close-icon-color-hover:var(--color-text1-3,#555);--upload-text-list-size-font-color:var(--color-text1-2,#888);--upload-text-list-progressbar-height:var(--s-2,8px);--upload-image-list-item-padding:var(--s-2,8px);--upload-image-list-item-picture-size:var(--s-12,48px);--upload-image-list-item-picture-icon-size:var(--icon-l,24px);--upload-image-list-item-picture-border-width:var(--line-1,1px);--upload-image-list-item-picture-corner:var(--corner-zero,0);--upload-image-list-item-thumbnail-font-color:var(--color-text1-1,#c1c1c1);--upload-image-list-item-font-size:var(--font-size-body-1,12px);--upload-image-list-close-icon-size:var(--icon-xs,12px);--upload-image-list-close-icon-right:var(--s-1,4px);--upload-image-list-item-border-width:var(--line-1,1px);--upload-image-list-close-icon-color:var(--color-text1-2,#888);--upload-image-list-close-icon-color-hover:var(--color-text1-3,#555);--upload-image-list-progressbar-height:var(--s-2,8px);--upload-card-margin-bottom:var(--s-4,16px);--upload-card-add-icon-size:var(--icon-l,24px);--upload-card-add-text-size:var(--font-size-body-1,12px);--upload-card-add-text-margin-top:var(--s-3,12px);--upload-card-border-style:var(--line-dashed,dashed);--upload-card-add-icon:var(--icon-content-add,"");--upload-card-list-bg-color:var(--color-transparent,transparent);--upload-card-list-uploading-bg-color:var(--color-fill1-1,#fafafa);--upload-card-list-bg-color-error:var(--color-fill1-1,#fafafa);--upload-card-list-margin-right:var(--s-3,12px);--upload-card-list-padding:var(--s-zero,0px);--upload-card-list-corner:var(--corner-zero,0);--upload-card-list-border-color-error:var(--color-error-3,#d93026);--upload-card-list-thumbnail-font-size:var(--font-size-caption,12px);--upload-card-list-name-margin-top:var(--s-1,4px);--upload-card-list-name-font-size:var(--font-size-caption,12px);--upload-card-list-progressbar-height:var(--s-2,8px);--upload-select-card-tool-bg-color:var(--color-black,#000);--upload-select-card-tool-bg-opacity:.7;--upload-drag-zone-border-color:var(--color-line1-3,#a8a8a8);--upload-drag-zone-corner:var(--corner-1,0px);--upload-drag-zone-font-size:var(--font-size-body-2,14px);--upload-drag-zone-icon-size:var(--s-6,24px);--upload-drag-zone-hint-font-size:var(--font-size-caption,12px);--upload-drag-zone-bg-color:var(--color-transparent,transparent);--upload-drag-zone-upload-icon:var(--icon-content-upload,"");--upload-drag-zone-upload-icon-color:var(--color-text1-3,#555);--upload-drag-zone-upload-normal-title-color:var(--color-text1-3,#555);--upload-drag-zone-upload-normal-hint-color:var(--color-text1-2,#888);--transfer-operation-margin-left-right:var(--s-4,16px);--transfer-operation-icon-size:var(--icon-s,16px);--transfer-panel-header-padding-left-right:var(--s-4,16px);--transfer-panel-footer-padding-left-right:var(--s-4,16px);--transfer-simple-move-icon-color:var(--color-text1-2,#888);--transfer-panel-border-color:var(--color-line1-1,#dedede);--transfer-panel-header-text-color:var(--color-text1-5,#333);--transfer-panel-header-background-color:var(--color-white,#fff);--transfer-panel-footer-text-color:var(--color-text1-5,#333);--transfer-simple-panel-footer-text-color:var(--color-link-1,#0070cc);--transfer-simple-panel-item-hover-text-color:var(--color-link-1,#0070cc);--transfer-operation-margin-gutter:var(--s-2,8px);--transfer-panel-border-width:var(--line-1,1px);--transfer-panel-header-padding-top-bottom:var(--s-2,8px);--transfer-panel-header-text-size:var(--font-size-body-1,12px);--transfer-panel-search-margin-top:var(--s-2,8px);--transfer-panel-search-margin-left-right:var(--s-1,4px);--transfer-panel-search-margin-bottom:var(--s-zero,0px);--transfer-panel-list-width:var(--s-45,180px);--transfer-panel-list-height:var(--s-40,160px);--transfer-panel-footer-padding-top-bottom:var(--s-2,8px);--transfer-simple-move-icon:var(--icon-content-switch,"");--transfer-panel-border-corner:var(--corner-1,0px);--transfer-panel-background-color:var(--color-white,#fff);--transfer-panel-search-icon-color:var(--color-text1-2,#888);--transfer-panel-footer-background-color:var(--color-white,#fff);--transfer-panel-footer-shadow:var(--shadow-zero,none);--time-picker-menu-border-color:var(--color-line1-1,#dedede);--time-picker-menu-item-color:var(--color-text1-5,#333);--time-picker-menu-item-color-hover:var(--color-text1-5,#333);--time-picker-menu-item-color-selected:var(--color-brand1-6,#0070cc);--time-picker-menu-item-background-hover:var(--color-fill1-4,#ebebeb);--time-picker-menu-item-background-selected:var(--color-brand1-1,#f3faff);--time-picker-panel-width:var(--s-50,200px);--time-picker-panel-background:var(--color-white,#fff);--time-picker-menu-border-width:var(--line-1,1px);--time-picker-menu-title-font-size:var(--font-size-caption,12px);--time-picker-menu-item-font-size:var(--font-size-caption,12px);--time-picker-menu-title-height:var(--s-7,28px);--time-picker-menu-item-height:var(--s-7,28px);--time-picker-menu-title-color:var(--color-text1-2,#888);--time-picker-menu-title-background:var(--color-white,#fff);--time-pikcer-menu-title-font-weight:var(--font-weight-2,normal);--time-picker-menu-item-color-disabled:var(--color-text1-1,#c1c1c1);--time-picker-menu-item-background:var(--color-white,#fff);--time-picker-menu-item-background-disabled:var(--color-white,#fff);--time-picker-menu-item-font-weight-selected:var(--font-weight-3,bold);--time-picker-clock-icon:var(--icon-content-clock,"");--cascader-select:"cascader-select";--split-btn-trigger-normal-icon-color:var(--color-text1-2,#888);--split-btn-fold-icon-content:var(--icon-content-arrow-down,"");--split-btn-unfold-icon-content:var(--icon-reset,var(--icon-reset));--paragraph-text-color:var(--color-text1-4,#111);--paragraph-s-font-size:var(--font-size-body-1,12px);--paragraph-m-font-size:var(--font-size-body-2,14px);--paragraph-s-line-height:var(--font-lineheight-2,1.5);--paragraph-l-line-height:var(--font-lineheight-3,1.6);--typography-text-color:var(--color-text1-4,#111);--typography-text-strong-font-weight:var(--font-weight-semi-bold,600);--typography-text-code-corner:var(--corner-1,0px);--typography-text-mark-color:var(--color-text1-4,#111);--typography-text-mark-background:var(--color-warning-2,#ffe2a2);--typography-text-code-color:var(--color-text1-4,#111);--typography-text-code-background:var(--color-fill1-2,#f7f7f7);--typography-text-code-border-color:var(--color-line1-1,#dedede);--typography-paragraph-font-size:var(--font-size-body-2,14px);--typography-paragraph-line-height:var(--font-lineheight-2,1.5);--typography-title-h1-font-size:var(--font-size-headline,18px);--typography-title-h2-font-size:var(--font-size-title,16px);--typography-title-h3-font-size:var(--font-size-subhead,14px);--typography-title-h4-font-size:var(--font-size-subhead,14px);--typography-title-h5-font-size:var(--font-size-body-2,14px);--typography-title-h6-font-size:var(--font-size-body-1,12px);--typography-title-font-weight:var(--font-weight-semi-bold,600);--badge-size-dot-width:var(--s-2,8px);--badge-size-list-margin:var(--s-zero,0px);--badge-size-count-config-height:var(--s-4,16px);--badge-size-count-padding-lr:var(--s-1,4px);--badge-size-custom-padding-lr:var(--s-1,4px);--badge-size-count-font:var(--font-size-caption,12px);--badge-color-bg:var(--color-error-3,#d93026);--badge-size-count-border-radius:var(--s-2,8px);--badge-dot-color-bg:var(--color-error-3,#d93026);--badge-size-dot-border-radius:var(--s-2,8px);--badge-size-custom-border-radius:var(--corner-1,0px);--drawer-title-font-size:var(--font-size-subhead,14px);--drawer-title-border-width:var(--line-1,1px);--drawer-content-font-size:var(--font-size-body-1,12px);--drawer-content-padding-top:var(--s-5,20px);--drawer-content-padding-bottom:var(--s-5,20px);--drawer-content-padding-left-right:var(--s-5,20px);--drawer-close-size:var(--icon-xs,12px);--drawer-bg:var(--color-white,#fff);--drawer-border-width:var(--line-1,1px);--drawer-border-color:var(--color-line1-2,#c9c9c9);--drawer-border-style:var(--line-solid,solid);--drawer-corner:var(--corner-1,0px);--drawer-shadow:var(--shadow-2-down,0px 2px 8px 0px rgba(0,0,0,0.13));--drawer-title-color:var(--color-text1-4,#111);--drawer-title-bg-color:var(--color-white,#fff);--drawer-title-border-color:var(--color-line1-2,#c9c9c9);--drawer-content-color:var(--color-text1-3,#555);--drawer-close-color:var(--color-text1-2,#888);--drawer-close-color-hovered:var(--color-text1-4,#111);--drawer-close-bg-hovered:var(--color-transparent,transparent);--drawer-title-padding-top:var(--s-6,24px);--drawer-close-top:var(--s-6,24px);--drawer-close-right:var(--s-6,24px);--drawer-title-padding-bottom:var(--s-4,16px);--drawer-title-padding-left-right:var(--s-6,24px);--number-picker-normal-up-icon:var(--icon-content-arrow-up,"");--number-picker-normal-down-icon:var(--icon-content-arrow-down,"");--number-picker-normal-s-button-width:var(--s-5,20px);--number-picker-normal-m-button-width:var(--s-5,20px);--number-picker-normal-l-button-width:var(--s-5,20px);--number-picker-normal-m-input-width:var(--s-20,80px);--number-picker-normal-l-input-width:var(--s-20,80px);--number-picker-normal-s-button-icon-size:var(--icon-xxs,8px);--number-picker-normal-m-button-icon-size:var(--icon-xxs,8px);--number-picker-normal-l-button-icon-size:var(--icon-xxs,8px);--number-picker-inline-add-icon:var(--icon-content-add,"");--number-picker-inline-minus-icon:var(--icon-content-minus,"");--number-picker-inline-s-button-icon-size:var(--icon-xs,12px);--number-picker-inline-s-button-margin:2px;--number-picker-inline-s-button-corner:var(--corner-1,0px);--number-picker-inline-m-button-icon-size:var(--icon-xs,12px);--number-picker-inline-m-button-margin:2px;--number-picker-inline-m-button-corner:var(--corner-1,0px);--number-picker-inline-m-input-width:var(--s-25,100px);--number-picker-inline-l-button-icon-size:var(--icon-xs,12px);--number-picker-inline-l-button-margin:2px;--number-picker-inline-l-button-corner:var(--corner-1,0px);--number-picker-inline-l-input-width:var(--s-32,128px);--shell-light-header-color:var(--color-black,#000);--shell-light-header-height:var(--s-13,52px);--shell-light-header-background:var(--color-white,#fff);--shell-light-header-shadow:var(--shadow-zero,none);--shell-light-header-divider-size:var(--line-1,1px);--shell-light-header-divider-style:var(--line-solid,solid);--shell-light-header-divider-color:var(--color-line1-1,#dedede);--shell-light-header-paddingLeft:var(--s-4,16px);--shell-light-multitask-min-height:var(--s-10,40px);--shell-light-multitask-background:var(--color-white,#fff);--shell-light-multitask-shadow:var(--shadow-zero,none);--shell-light-multitask-divider-size:var(--line-1,1px);--shell-light-multitask-divider-style:var(--line-solid,solid);--shell-light-multitask-divider-color:var(--color-line1-1,#dedede);--shell-light-multitask-paddingLeft:var(--s-zero,0px);--shell-light-navigation-hoz-marginLeft:var(--s-12,48px);--shell-light-navigation-ver-width:var(--s-42,168px);--shell-light-navigation-ver-shadow:var(--shadow-zero,none);--shell-light-navigation-ver-paddingTop:var(--s-2,8px);--shell-light-navigation-ver-paddingBottom:var(--s-2,8px);--shell-light-navigation-ver-width-mini:var(--s-15,60px);--shell-light-navigation-ver-background:var(--color-white,#fff);--shell-light-navigation-ver-divider-size:var(--line-1,1px);--shell-light-navigation-ver-divider-style:var(--line-solid,solid);--shell-light-navigation-ver-divider-color:var(--color-line1-1,#dedede);--shell-light-local-navigation-width:var(--s-42,168px);--shell-light-local-navigation-background:var(--color-fill1-4,#ebebeb);--shell-light-local-navigation-paddingTop:var(--s-2,8px);--shell-light-local-navigation-paddingBottom:var(--s-2,8px);--shell-light-local-navigation-shadow:var(--shadow-zero,none);--shell-light-local-navigation-divider-size:var(--line-1,1px);--shell-light-local-navigation-divider-style:var(--line-solid,solid);--shell-light-local-navigation-divider-color:var(--color-line1-1,#dedede);--shell-light-appbar-background:var(--color-white,#fff);--shell-light-appbar-min-height:var(--s-12,48px);--shell-light-appbar-shadow:var(--shadow-zero,none);--shell-light-appbar-paddingLeft:var(--s-6,24px);--shell-light-appbar-divider-size:var(--line-1,1px);--shell-light-appbar-divider-style:var(--line-solid,solid);--shell-light-appbar-divider-color:var(--color-line1-1,#dedede);--shell-light-content-background:var(--color-fill1-3,#f5f5f5);--shell-light-content-paddingLeft:var(--s-5,20px);--shell-light-content-paddingTop:var(--s-5,20px);--shell-light-footer-min-height:var(--s-14,56px);--shell-light-footer-background:var(--color-transparent,transparent);--shell-light-footer-color:var(--color-text1-1,#c1c1c1);--shell-light-footer-font-size:var(--font-size-body-2,14px);--shell-light-ancillary-width:var(--s-42,168px);--shell-light-ancillary-background:var(--color-white,#fff);--shell-light-ancillary-paddingTop:var(--s-2,8px);--shell-light-ancillary-paddingBottom:var(--s-2,8px);--shell-light-ancillary-shadow:var(--shadow-zero,none);--shell-light-ancillary-divider-size:var(--line-1,1px);--shell-light-ancillary-divider-style:var(--line-solid,solid);--shell-light-ancillary-divider-color:var(--color-line1-1,#dedede);--shell-light-tooldock-height:var(--s-13,52px);--shell-light-tooldock-width:var(--s-13,52px);--shell-light-tooldock-background:var(--color-fill1-4,#ebebeb);--shell-light-tooldock-paddingTop:var(--s-2,8px);--shell-light-tooldock-paddingBottom:var(--s-2,8px);--shell-light-tooldock-shadow:var(--shadow-zero,none);--shell-light-tooldock-divider-size:var(--line-1,1px);--shell-light-tooldock-divider-style:var(--line-solid,solid);--shell-light-tooldock-divider-color:var(--color-line1-1,#dedede);--shell-light-tooldock-item-paddingTop:var(--s-2,8px);--shell-light-tooldock-item-color:var(--color-text1-3,#555);--shell-light-tooldock-item-color-hover:var(--color-text1-4,#111);--shell-light-tooldock-item-color-active:var(--color-text1-4,#111);--shell-light-tooldock-item-background:var(--color-transparent,transparent);--shell-light-tooldock-item-background-hover:var(--color-fill1-3,#f5f5f5);--shell-light-tooldock-item-background-active:var(--color-fill1-3,#f5f5f5);--shell-dark-header-color:var(--color-white,#fff);--shell-dark-header-height:var(--s-13,52px);--shell-dark-header-background:var(--color-black,#000);--shell-dark-header-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--shell-dark-header-divider-size:var(--line-1,1px);--shell-dark-header-divider-style:var(--line-solid,solid);--shell-dark-header-divider-color:#1f1f1f;--shell-dark-header-paddingLeft:var(--s-4,16px);--shell-dark-multitask-min-height:var(--s-10,40px);--shell-dark-multitask-background:var(--color-white,#fff);--shell-dark-multitask-shadow:var(--shadow-zero,none);--shell-dark-multitask-divider-size:var(--line-1,1px);--shell-dark-multitask-divider-style:var(--line-solid,solid);--shell-dark-multitask-divider-color:var(--color-line1-1,#dedede);--shell-dark-multitask-paddingLeft:var(--s-zero,0px);--shell-dark-navigation-hoz-marginLeft:var(--s-12,48px);--shell-dark-navigation-ver-width:var(--s-42,168px);--shell-dark-navigation-ver-shadow:var(--shadow-zero,none);--shell-dark-navigation-ver-paddingTop:var(--s-2,8px);--shell-dark-navigation-ver-paddingBottom:var(--s-2,8px);--shell-dark-navigation-ver-width-mini:var(--s-15,60px);--shell-dark-navigation-ver-background:var(--color-text1-4,#111);--shell-dark-navigation-ver-divider-size:var(--line-1,1px);--shell-dark-navigation-ver-divider-style:var(--line-solid,solid);--shell-dark-navigation-ver-divider-color:var(--color-line1-1,#dedede);--shell-dark-local-navigation-width:var(--s-42,168px);--shell-dark-local-navigation-background:var(--color-fill1-4,#ebebeb);--shell-dark-local-navigation-paddingTop:var(--s-2,8px);--shell-dark-local-navigation-paddingBottom:var(--s-2,8px);--shell-dark-local-navigation-shadow:var(--shadow-zero,none);--shell-dark-local-navigation-divider-size:var(--line-1,1px);--shell-dark-local-navigation-divider-style:var(--line-solid,solid);--shell-dark-local-navigation-divider-color:var(--color-line1-1,#dedede);--shell-dark-appbar-background:var(--color-white,#fff);--shell-dark-appbar-min-height:var(--s-12,48px);--shell-dark-appbar-shadow:var(--shadow-zero,none);--shell-dark-appbar-paddingLeft:var(--s-6,24px);--shell-dark-appbar-divider-size:var(--line-1,1px);--shell-dark-appbar-divider-style:var(--line-solid,solid);--shell-dark-appbar-divider-color:var(--color-line1-1,#dedede);--shell-dark-content-background:var(--color-fill1-3,#f5f5f5);--shell-dark-content-paddingLeft:var(--s-5,20px);--shell-dark-content-paddingTop:var(--s-5,20px);--shell-dark-footer-min-height:var(--s-14,56px);--shell-dark-footer-background:var(--color-transparent,transparent);--shell-dark-footer-color:var(--color-text1-1,#c1c1c1);--shell-dark-footer-font-size:var(--font-size-body-2,14px);--shell-dark-ancillary-width:var(--s-42,168px);--shell-dark-ancillary-background:var(--color-white,#fff);--shell-dark-ancillary-paddingTop:var(--s-2,8px);--shell-dark-ancillary-paddingBottom:var(--s-2,8px);--shell-dark-ancillary-shadow:var(--shadow-zero,none);--shell-dark-ancillary-divider-size:var(--line-1,1px);--shell-dark-ancillary-divider-style:var(--line-solid,solid);--shell-dark-ancillary-divider-color:var(--color-line1-1,#dedede);--shell-dark-tooldock-height:var(--s-13,52px);--shell-dark-tooldock-width:var(--s-13,52px);--shell-dark-tooldock-background:var(--color-fill1-4,#ebebeb);--shell-dark-tooldock-paddingTop:var(--s-2,8px);--shell-dark-tooldock-paddingBottom:var(--s-2,8px);--shell-dark-tooldock-shadow:var(--shadow-zero,none);--shell-dark-tooldock-divider-size:var(--line-1,1px);--shell-dark-tooldock-divider-style:var(--line-solid,solid);--shell-dark-tooldock-divider-color:var(--color-line1-1,#dedede);--shell-dark-tooldock-item-paddingTop:var(--s-2,8px);--shell-dark-tooldock-item-color:var(--color-text1-3,#555);--shell-dark-tooldock-item-color-hover:var(--color-text1-4,#111);--shell-dark-tooldock-item-color-active:var(--color-text1-4,#111);--shell-dark-tooldock-item-background:var(--color-transparent,transparent);--shell-dark-tooldock-item-background-hover:var(--color-fill1-3,#f5f5f5);--shell-dark-tooldock-item-background-active:var(--color-fill1-3,#f5f5f5);--shell-brand-header-color:var(--color-white,#fff);--shell-brand-header-height:var(--s-13,52px);--shell-brand-header-background:var(--color-brand1-6,#0070cc);--shell-brand-header-shadow:var(--shadow-1-down,0px 1px 4px 0px rgba(0,0,0,0.13));--shell-brand-header-divider-size:var(--line-1,1px);--shell-brand-header-divider-style:var(--line-solid,solid);--shell-brand-header-divider-color:var(--color-line1-1,#dedede);--shell-brand-header-paddingLeft:var(--s-4,16px);--shell-brand-multitask-min-height:var(--s-10,40px);--shell-brand-multitask-background:var(--color-white,#fff);--shell-brand-multitask-shadow:var(--shadow-zero,none);--shell-brand-multitask-divider-size:var(--line-1,1px);--shell-brand-multitask-divider-style:var(--line-solid,solid);--shell-brand-multitask-divider-color:var(--color-line1-1,#dedede);--shell-brand-multitask-paddingLeft:var(--s-zero,0px);--shell-brand-navigation-hoz-marginLeft:var(--s-12,48px);--shell-brand-navigation-ver-width:var(--s-42,168px);--shell-brand-navigation-ver-shadow:var(--shadow-zero,none);--shell-brand-navigation-ver-paddingTop:var(--s-2,8px);--shell-brand-navigation-ver-paddingBottom:var(--s-2,8px);--shell-brand-navigation-ver-width-mini:var(--s-15,60px);--shell-brand-navigation-ver-background:var(--color-white,#fff);--shell-brand-navigation-ver-divider-size:var(--line-1,1px);--shell-brand-navigation-ver-divider-style:var(--line-solid,solid);--shell-brand-navigation-ver-divider-color:var(--color-line1-1,#dedede);--shell-brand-local-navigation-width:var(--s-42,168px);--shell-brand-local-navigation-background:var(--color-fill1-4,#ebebeb);--shell-brand-local-navigation-paddingTop:var(--s-2,8px);--shell-brand-local-navigation-paddingBottom:var(--s-2,8px);--shell-brand-local-navigation-shadow:var(--shadow-zero,none);--shell-brand-local-navigation-divider-size:var(--line-1,1px);--shell-brand-local-navigation-divider-style:var(--line-solid,solid);--shell-brand-local-navigation-divider-color:var(--color-line1-1,#dedede);--shell-brand-appbar-background:var(--color-white,#fff);--shell-brand-appbar-min-height:var(--s-12,48px);--shell-brand-appbar-shadow:var(--shadow-zero,none);--shell-brand-appbar-paddingLeft:var(--s-6,24px);--shell-brand-appbar-divider-size:var(--line-1,1px);--shell-brand-appbar-divider-style:var(--line-solid,solid);--shell-brand-appbar-divider-color:var(--color-line1-1,#dedede);--shell-brand-content-background:var(--color-fill1-3,#f5f5f5);--shell-brand-content-paddingLeft:var(--s-5,20px);--shell-brand-content-paddingTop:var(--s-5,20px);--shell-brand-footer-min-height:var(--s-14,56px);--shell-brand-footer-background:var(--color-transparent,transparent);--shell-brand-footer-color:var(--color-text1-1,#c1c1c1);--shell-brand-footer-font-size:var(--font-size-body-2,14px);--shell-brand-ancillary-width:var(--s-42,168px);--shell-brand-ancillary-background:var(--color-white,#fff);--shell-brand-ancillary-paddingTop:var(--s-2,8px);--shell-brand-ancillary-paddingBottom:var(--s-2,8px);--shell-brand-ancillary-shadow:var(--shadow-zero,none);--shell-brand-ancillary-divider-size:var(--line-1,1px);--shell-brand-ancillary-divider-style:var(--line-solid,solid);--shell-brand-ancillary-divider-color:var(--color-line1-1,#dedede);--shell-brand-tooldock-height:var(--s-13,52px);--shell-brand-tooldock-width:var(--s-13,52px);--shell-brand-tooldock-background:var(--color-fill1-4,#ebebeb);--shell-brand-tooldock-paddingTop:var(--s-2,8px);--shell-brand-tooldock-paddingBottom:var(--s-2,8px);--shell-brand-tooldock-shadow:var(--shadow-zero,none);--shell-brand-tooldock-divider-size:var(--line-1,1px);--shell-brand-tooldock-divider-style:var(--line-solid,solid);--shell-brand-tooldock-divider-color:var(--color-line1-1,#dedede);--shell-brand-tooldock-item-paddingTop:var(--s-2,8px);--shell-brand-tooldock-item-color:var(--color-text1-3,#555);--shell-brand-tooldock-item-color-hover:var(--color-text1-4,#111);--shell-brand-tooldock-item-color-active:var(--color-text1-4,#111);--shell-brand-tooldock-item-background:var(--color-transparent,transparent);--shell-brand-tooldock-item-background-hover:var(--color-fill1-3,#f5f5f5);--shell-brand-tooldock-item-background-active:var(--color-fill1-3,#f5f5f5);--divider-hoz-size:var(--line-1,1px);--divider-hoz-color:var(--color-line1-2,#c9c9c9);--divider-hoz-text-center-paddingLeft:var(--s-4,16px);--divider-hoz-text-left-paddingLeft:var(--s-4,16px);--divider-hoz-text-marginTop:var(--s-4,16px);--divider-hoz-marginTop:var(--s-4,16px);--divider-hoz-text-size:var(--font-size-subhead,14px);--divider-hoz-text-weight:var(--font-weight-2,normal);--divider-hoz-text-color:var(--color-text1-4,#111);--divider-ver-size:var(--line-1,1px);--divider-ver-color:var(--color-line1-2,#c9c9c9);--divider-ver-marginLeft:var(--s-2,8px);--tree-select-padding-vertical:var(--s-2,8px);--tree-select-padding-horizontal:var(--s-5,20px);--tree-select-background:var(--color-white,#fff);--nav-hoz-height:var(--s-11,44px);--nav-hoz-font-size:var(--font-size-body-1,12px);--nav-hoz-item-margin-tb:var(--s-zero,0px);--nav-hoz-item-margin-lr:var(--s-zero,0px);--nav-hoz-item-padding-lr:var(--s-5,20px);--nav-hoz-item-corner:var(--corner-zero,0);--nav-hoz-item-selected-active-line:var(--line-2,2px);--nav-hoz-item-hover-active-line:var(--line-zero,0px);--nav-ver-height:var(--s-10,40px);--nav-ver-font-size:var(--font-size-body-1,12px);--nav-ver-item-margin-tb:var(--s-zero,0px);--nav-ver-item-margin-lr:var(--s-zero,0px);--nav-ver-item-padding-lr:var(--s-5,20px);--nav-ver-item-corner:var(--corner-zero,0);--nav-ver-item-selected-active-line:var(--line-2,2px);--nav-ver-item-hover-active-line:var(--line-zero,0px);--nav-ver-sub-nav-height:var(--s-10,40px);--nav-ver-sub-nav-font-size:var(--font-size-caption,12px);--nav-group-height:var(--s-10,40px);--nav-group-font-size:var(--font-size-subhead,14px);--nav-icon-self-size:var(--icon-xs,12px);--nav-icon-self-margin:var(--s-1,4px);--nav-icon-only-font-size:var(--icon-s,16px);--nav-primary-bg-color:var(--color-text1-4,#111);--nav-primary-border-width:var(--line-zero,0px);--nav-primary-border-color:var(--color-text1-4,#111);--nav-primary-text-color:var(--color-white,#fff);--nav-primary-text-style:var(--font-weight-2,normal);--nav-primary-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--nav-primary-sub-nav-bg-color:var(--color-text1-4,#111);--nav-primary-sub-nav-text-color:var(--color-white,#fff);--nav-primary-sub-nav-text-style:var(--font-weight-2,normal);--nav-primary-group-text-color:var(--color-text1-2,#888);--nav-primary-group-text-style:var(--font-weight-2,normal);--nav-primary-item-hover-bg-color:var(--color-black,#000);--nav-primary-item-hover-text-color:var(--color-white,#fff);--nav-primary-item-hover-text-style:var(--font-weight-2,normal);--nav-primary-item-hover-active-color:var(--color-brand1-6,#0070cc);--nav-primary-sub-nav-hover-bg-color:var(--color-black,#000);--nav-primary-sub-nav-hover-text-color:var(--color-white,#fff);--nav-primary-item-selected-bg-color:var(--color-black,#000);--nav-primary-item-selected-text-color:var(--color-white,#fff);--nav-primary-item-selected-text-style:var(--font-weight-3,bold);--nav-primary-item-selected-active-color:var(--color-brand1-6,#0070cc);--nav-primary-sub-nav-selected-bg-color:var(--color-black,#000);--nav-primary-sub-nav-selected-text-color:var(--color-white,#fff);--nav-primary-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-primary-item-opened-bg-color:var(--color-black,#000);--nav-primary-item-opened-text-color:var(--color-white,#fff);--nav-secondary-bg-color:var(--color-brand1-6,#0070cc);--nav-secondary-border-width:var(--line-zero,0px);--nav-secondary-border-color:var(--color-brand1-6,#0070cc);--nav-secondary-text-color:var(--color-white,#fff);--nav-secondary-text-style:var(--font-weight-2,normal);--nav-secondary-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--nav-secondary-sub-nav-bg-color:var(--color-brand1-6,#0070cc);--nav-secondary-sub-nav-text-color:var(--color-white,#fff);--nav-secondary-sub-nav-text-style:var(--font-weight-2,normal);--nav-secondary-group-text-color:var(--color-white,#fff);--nav-secondary-group-text-style:var(--font-weight-2,normal);--nav-secondary-item-hover-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-item-hover-text-color:var(--color-white,#fff);--nav-secondary-item-hover-text-style:var(--font-weight-2,normal);--nav-secondary-item-hover-active-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-hover-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-hover-text-color:var(--color-white,#fff);--nav-secondary-item-selected-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-item-selected-text-color:var(--color-white,#fff);--nav-secondary-item-selected-text-style:var(--font-weight-3,bold);--nav-secondary-item-selected-active-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-selected-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-sub-nav-selected-text-color:var(--color-white,#fff);--nav-secondary-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-secondary-item-opened-bg-color:var(--color-brand1-9,#003a6a);--nav-secondary-item-opened-text-color:var(--color-white,#fff);--nav-normal-bg-color:var(--color-white,#fff);--nav-normal-border-color:var(--color-line1-1,#dedede);--nav-normal-text-color:var(--color-text1-4,#111);--nav-normal-text-style:var(--font-weight-2,normal);--nav-normal-border-line:var(--line-1,1px);--nav-normal-shadow:var(--shadow-2,2px 2px 8px 0px rgba(0,0,0,0.13));--nav-normal-sub-nav-bg-color:var(--color-white,#fff);--nav-normal-sub-nav-text-color:var(--color-text1-4,#111);--nav-normal-sub-nav-text-style:var(--font-weight-2,normal);--nav-normal-group-text-color:var(--color-text1-2,#888);--nav-normal-group-text-style:var(--font-weight-2,normal);--nav-normal-item-hover-bg-color:var(--color-white,#fff);--nav-normal-item-hover-text-color:var(--color-brand1-6,#0070cc);--nav-normal-item-hover-text-style:var(--font-weight-2,normal);--nav-normal-item-hover-active-color:var(--color-brand1-6,#0070cc);--nav-normal-sub-nav-hover-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-sub-nav-hover-text-color:var(--color-brand1-6,#0070cc);--nav-normal-item-selected-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-item-selected-text-color:var(--color-brand1-6,#0070cc);--nav-normal-item-selected-text-style:var(--font-weight-3,bold);--nav-normal-item-selected-active-color:var(--color-brand1-6,#0070cc);--nav-normal-sub-nav-selected-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-sub-nav-selected-text-color:var(--color-brand1-6,#0070cc);--nav-normal-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-normal-item-opened-bg-color:var(--color-fill1-2,#f7f7f7);--nav-normal-item-opened-text-color:var(--color-brand1-6,#0070cc);--nav-line-bg-color:var(--color-transparent,transparent);--nav-line-border-color:var(--color-line1-2,#c9c9c9);--nav-line-text-color:var(--color-text1-4,#111);--nav-line-text-style:var(--font-weight-2,normal);--nav-line-border-line:var(--line-1,1px);--nav-line-sub-nav-bg-color:var(--color-transparent,transparent);--nav-line-sub-nav-text-color:var(--color-text1-4,#111);--nav-line-sub-nav-text-style:var(--font-weight-2,normal);--nav-line-item-hover-bg-color:var(--color-transparent,transparent);--nav-line-item-hover-text-color:var(--color-brand1-6,#0070cc);--nav-line-item-hover-text-style:var(--font-weight-2,normal);--nav-line-item-hover-active-color:var(--color-brand1-6,#0070cc);--nav-line-sub-nav-hover-bg-color:var(--color-transparent,transparent);--nav-line-sub-nav-hover-text-color:var(--color-brand1-6,#0070cc);--nav-line-item-selected-bg-color:var(--color-transparent,transparent);--nav-line-item-selected-text-color:var(--color-brand1-6,#0070cc);--nav-line-item-selected-text-style:var(--font-weight-3,bold);--nav-line-item-selected-active-color:var(--color-brand1-6,#0070cc);--nav-line-sub-nav-selected-bg-color:var(--color-transparent,transparent);--nav-line-sub-nav-selected-text-color:var(--color-brand1-6,#0070cc);--nav-line-sub-nav-active-color:var(--color-brand1-6,#0070cc);--nav-line-item-opened-bg-color:var(--color-transparent,transparent);--nav-line-item-opened-text-color:var(--color-brand1-6,#0070cc);--nav-line-group-text-color:var(--color-text1-2,#888);--nav-line-group-text-style:var(--font-weight-2,normal);--list-size-s-title-font-size:var(--font-size-subhead,14px);--list-size-s-title-font-weight:var(--font-weight-3,bold);--list-size-s-item-padding-lr:var(--s-zero,0px);--list-size-s-item-padding-tb:var(--s-2,8px);--list-size-s-item-media-margin:var(--s-2,8px);--list-size-s-item-content-font-size:var(--font-size-body-1,12px);--list-size-s-item-content-line-height:var(--font-lineheight-1,1);--list-size-s-item-title-font-weight:var(--font-weight-2,normal);--list-size-s-item-title-font-size:var(--font-size-body-2,14px);--list-size-s-item-title-line-height:var(--font-lineheight-2,1.5);--list-size-m-title-font-size:var(--font-size-title,16px);--list-size-m-title-font-weight:var(--font-weight-3,bold);--list-size-m-item-padding-lr:var(--s-zero,0px);--list-size-m-item-padding-tb:var(--s-4,16px);--list-size-m-item-media-margin:var(--s-2,8px);--list-size-m-item-content-font-size:var(--font-size-body-2,14px);--list-size-m-item-content-line-height:var(--font-lineheight-2,1.5);--list-size-m-item-title-font-size:var(--font-size-subhead,14px);--list-size-m-item-title-line-height:var(--font-lineheight-2,1.5);--list-size-m-item-title-font-weight:var(--font-weight-2,normal);--list-divider-color:var(--color-line1-2,#c9c9c9);--list-title-color:var(--color-text1-4,#111);--list-content-color:var(--color-text1-3,#555);--list-extra-color:var(--color-text1-2,#888);--avatar-size-large:var(--s-13,52px);--avatar-size-medium:var(--s-10,40px);--avatar-size-small:var(--s-7,28px);--avatar-border-radius:var(--corner-1,0px);--line-0:var(--line-zero);--shadow-0:var(--shadow-zero);--corner-right-angle:var(--corner-zero);--s-0:var(--s-zero);--alicloudfe-components-theme:wind;--xconsole-icon-font-family:WindIcon;--body-bg:#fff;--select-menu-select-icon-ml:-14px;--menu-icon-selected-size:12px;--checkbox-icon-scale:0.8;--checkbox-icon-size:12px;--input-clear-icon-transform:none;--overlay-offset:0;--card-border-color:transparent;--btn-large-min-width:10px;--switch-disabled-on-bg-color:var(--color-success-2);--number-picker-handler-btn-border:1px solid #dedede;--number-picker-handler-btn-border-hover:1px solid #737373;--number-picker-final-height-small:28px;--number-picker-final-height-medium:32px;--number-picker-final-height-large:36px;--number-picker-inline-group-border:none;--number-picker-inline-group-padding:0px;--number-picker-inline-group-btn-border:1px solid #dedede;--number-picker-inline-group-btn-border-hover:1px solid #737373;--number-picker-border-radius:0px;--pagination-item-disabled-bg:#fafafa;--message-close-icon-size:12px;--message-size-m-close-top:13px;--message-size-m-close-right:14px;--message-size-l-close-top:13px;--message-size-l-close-right:14px;--message-size-m-title-content-padding-left:4px;--message-border-width:0px;--menu-padding-horizontal-selectable:24px;--table-expand-icon-size:12px;--menu-padding:8px 0;--dialog-message-padding:24px}.ml-8{margin-left:8px}.mt-8{margin-top:8px}.mr-8{margin-right:8px}.mb-8{margin-bottom:8px}.ml-16{margin-left:16px}.mt-16{margin-top:16px}.mr-16{margin-right:16px}.mb-16{margin-bottom:16px} \ No newline at end of file diff --git a/console/src/main/resources/static/js/main.js b/console/src/main/resources/static/js/main.js index 51a03751242..57f3978b9ca 100644 --- a/console/src/main/resources/static/js/main.js +++ b/console/src/main/resources/static/js/main.js @@ -1,17 +1,17 @@ -!function(n){var r={};function a(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.m=n,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)a.d(n,r,function(e){return t[e]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=397)}([function(e,t,n){e.exports=n(303)()},function(e,t,n){"use strict";e.exports=n(297)},function(e,t,n){"use strict";t.__esModule=!0;var n=n(349),n=(n=n)&&n.__esModule?n:{default:n};t.default=n.default||function(e){for(var t=1;t>>0,r;for(r=0;r0)for(n=0;n=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}var ie=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,se=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,le={},ue={};function r(e,t,n,r){var a=r;if(typeof r==="string")a=function(){return this[r]()};if(e)ue[e]=a;if(t)ue[t[0]]=function(){return o(a.apply(this,arguments),t[1],t[2])};if(n)ue[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)}}function ce(e){if(e.match(/\[[\s\S]/))return e.replace(/^\[|\]$/g,"");return e.replace(/\\/g,"")}function de(r){var a=r.match(ie),e,o;for(e=0,o=a.length;e=0&&se.test(e)){e=e.replace(se,r);se.lastIndex=0;n-=1}return e}var he={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function me(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];if(t||!n)return t;this._longDateFormat[e]=n.match(ie).map(function(e){if(e==="MMMM"||e==="MM"||e==="DD"||e==="dddd")return e.slice(1);return e}).join("");return this._longDateFormat[e]}var ye="Invalid date";function ge(){return this._invalidDate}var _e="%d",ve=/\d{1,2}/;function be(e){return this._ordinal.replace("%d",e)}var we={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Me(e,t,n,r){var a=this._relativeTime[n];return h(a)?a(e,t,n,r):a.replace(/%d/i,e)}function ke(e,t){var n=this._relativeTime[e>0?"future":"past"];return h(n)?n(t):n.replace(/%s/i,t)}var xe={};function t(e,t){var n=e.toLowerCase();xe[n]=xe[n+"s"]=xe[t]=e}function m(e){return typeof e==="string"?xe[e]||xe[e.toLowerCase()]:undefined}function Le(e){var t={},n,r;for(r in e)if(l(e,r)){n=m(r);if(n)t[n]=e[r]}return t}var Te={};function n(e,t){Te[e]=t}function Se(e){var t=[],n;for(n in e)if(l(e,n))t.push({unit:n,priority:Te[n]});t.sort(function(e,t){return e.priority-t.priority});return t}function Ce(e){return e%4===0&&e%100!==0||e%400===0}function y(e){if(e<0)return Math.ceil(e)||0;else return Math.floor(e)}function g(e){var t=+e,n=0;if(t!==0&&isFinite(t))n=y(t);return n}function Ee(t,n){return function(e){if(e!=null){Ye(this,t,e);d.updateOffset(this,n);return this}else return De(this,t)}}function De(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Ye(e,t,n){if(e.isValid()&&!isNaN(n))if(t==="FullYear"&&Ce(e.year())&&e.month()===1&&e.date()===29){n=g(n);e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ot(n,e.month()))}else e._d["set"+(e._isUTC?"UTC":"")+t](n)}function Oe(e){e=m(e);if(h(this[e]))return this[e]();return this}function Pe(e,t){if(typeof e==="object"){e=Le(e);var n=Se(e),r,a=n.length;for(r=0;r68?1900:2e3)};var Mt=Ee("FullYear",true);function kt(){return Ce(this.year())}function xt(e,t,n,r,a,o,i){var s;if(e<100&&e>=0){s=new Date(e+400,t,n,r,a,o,i);if(isFinite(s.getFullYear()))s.setFullYear(e)}else s=new Date(e,t,n,r,a,o,i);return s}function Lt(e){var t,n;if(e<100&&e>=0){n=Array.prototype.slice.call(arguments);n[0]=e+400;t=new Date(Date.UTC.apply(null,n));if(isFinite(t.getUTCFullYear()))t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Tt(e,t,n){var r=7+t-n,a=(7+Lt(e,0,r).getUTCDay()-t)%7;return-a+r-1}function St(e,t,n,r,a){var o=(7+n-r)%7,i=Tt(e,r,a),s=1+7*(t-1)+o+i,l,u;if(s<=0){l=e-1;u=wt(l)+s}else if(s>wt(e)){l=e+1;u=s-wt(e)}else{l=e;u=s}return{year:l,dayOfYear:u}}function Ct(e,t,n){var r=Tt(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1,o,i;if(a<1){i=e.year()-1;o=a+E(i,t,n)}else if(a>E(e.year(),t,n)){o=a-E(e.year(),t,n);i=e.year()+1}else{i=e.year();o=a}return{week:o,year:i}}function E(e,t,n){var r=Tt(e,t,n),a=Tt(e+1,t,n);return(wt(e)-r+a)/7}function Et(e){return Ct(e,this._week.dow,this._week.doy).week}r("w",["ww",2],"wo","week"),r("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),v("w",_),v("ww",_,a),v("W",_),v("WW",_,a),Xe(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=g(e)});var Dt={dow:0,doy:6};function Yt(){return this._week.dow}function Ot(){return this._week.doy}function Pt(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Nt(e){var t=Ct(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}function jt(e,t){if(typeof e!=="string")return e;if(!isNaN(e))return parseInt(e,10);e=t.weekdaysParse(e);if(typeof e==="number")return e;return null}function At(e,t){if(typeof e==="string")return t.weekdaysParse(e)%7||7;return isNaN(e)?null:e}function Rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}r("d",0,"do","day"),r("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),r("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),r("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),r("e",0,0,"weekday"),r("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),v("d",_),v("e",_),v("E",_),v("dd",function(e,t){return t.weekdaysMinRegex(e)}),v("ddd",function(e,t){return t.weekdaysShortRegex(e)}),v("dddd",function(e,t){return t.weekdaysRegex(e)}),Xe(["dd","ddd","dddd"],function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);if(a!=null)t.d=a;else p(n).invalidWeekday=e}),Xe(["d","e","E"],function(e,t,n,r){t[r]=g(e)});var Ht="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),It="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ft="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=$e,Wt=$e,Vt=$e;function Bt(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&e!==true&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===true?Rt(n,this._week.dow):e?n[e.day()]:n}function Ut(e){return e===true?Rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Kt(e){return e===true?Rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Gt(e,t,n){var r,a,o,i=e.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(r=0;r<7;++r){o=c([2e3,1]).day(r);this._minWeekdaysParse[r]=this.weekdaysMin(o,"").toLocaleLowerCase();this._shortWeekdaysParse[r]=this.weekdaysShort(o,"").toLocaleLowerCase();this._weekdaysParse[r]=this.weekdays(o,"").toLocaleLowerCase()}}if(n)if(t==="dddd"){a=C.call(this._weekdaysParse,i);return a!==-1?a:null}else if(t==="ddd"){a=C.call(this._shortWeekdaysParse,i);return a!==-1?a:null}else{a=C.call(this._minWeekdaysParse,i);return a!==-1?a:null}else if(t==="dddd"){a=C.call(this._weekdaysParse,i);if(a!==-1)return a;a=C.call(this._shortWeekdaysParse,i);if(a!==-1)return a;a=C.call(this._minWeekdaysParse,i);return a!==-1?a:null}else if(t==="ddd"){a=C.call(this._shortWeekdaysParse,i);if(a!==-1)return a;a=C.call(this._weekdaysParse,i);if(a!==-1)return a;a=C.call(this._minWeekdaysParse,i);return a!==-1?a:null}else{a=C.call(this._minWeekdaysParse,i);if(a!==-1)return a;a=C.call(this._weekdaysParse,i);if(a!==-1)return a;a=C.call(this._shortWeekdaysParse,i);return a!==-1?a:null}}function $t(e,t,n){var r,a,o;if(this._weekdaysParseExact)return Gt.call(this,e,t,n);if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(r=0;r<7;r++){a=c([2e3,1]).day(r);if(n&&!this._fullWeekdaysParse[r]){this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i");this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i");this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")}if(!this._weekdaysParse[r]){o="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,"");this._weekdaysParse[r]=new RegExp(o.replace(".",""),"i")}if(n&&t==="dddd"&&this._fullWeekdaysParse[r].test(e))return r;else if(n&&t==="ddd"&&this._shortWeekdaysParse[r].test(e))return r;else if(n&&t==="dd"&&this._minWeekdaysParse[r].test(e))return r;else if(!n&&this._weekdaysParse[r].test(e))return r}}function qt(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e!=null){e=jt(e,this.localeData());return this.add(e-t,"d")}else return t}function Jt(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Qt(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=At(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Zt(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!l(this,"_weekdaysRegex"))this._weekdaysRegex=zt;return this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}}function Xt(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!l(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=Wt;return this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function en(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!l(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=Vt;return this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function tn(){function e(e,t){return t.length-e.length}var t=[],n=[],r=[],a=[],o,i,s,l,u;for(o=0;o<7;o++){i=c([2e3,1]).day(o);s=b(this.weekdaysMin(i,""));l=b(this.weekdaysShort(i,""));u=b(this.weekdays(i,""));t.push(s);n.push(l);r.push(u);a.push(s);a.push(l);a.push(u)}t.sort(e);n.sort(e);r.sort(e);a.sort(e);this._weekdaysRegex=new RegExp("^("+a.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function nn(){return this.hours()%12||12}function rn(){return this.hours()||24}function an(e,t){r(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function on(e,t){return t._meridiemParse}function sn(e){return(e+"").toLowerCase().charAt(0)==="p"}r("H",["HH",2],0,"hour"),r("h",["hh",2],0,nn),r("k",["kk",2],0,rn),r("hmm",0,0,function(){return""+nn.apply(this)+o(this.minutes(),2)}),r("hmmss",0,0,function(){return""+nn.apply(this)+o(this.minutes(),2)+o(this.seconds(),2)}),r("Hmm",0,0,function(){return""+this.hours()+o(this.minutes(),2)}),r("Hmmss",0,0,function(){return""+this.hours()+o(this.minutes(),2)+o(this.seconds(),2)}),an("a",true),an("A",false),t("hour","h"),n("hour",13),v("a",on),v("A",on),v("H",_),v("h",_),v("k",_),v("HH",_,a),v("hh",_,a),v("kk",_,a),v("hmm",He),v("hmmss",Ie),v("Hmm",He),v("Hmmss",Ie),w(["H","HH"],L),w(["k","kk"],function(e,t,n){var r=g(e);t[L]=r===24?0:r}),w(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e);n._meridiem=e}),w(["h","hh"],function(e,t,n){t[L]=g(e);p(n).bigHour=true}),w("hmm",function(e,t,n){var r=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r));p(n).bigHour=true}),w("hmmss",function(e,t,n){var r=e.length-4,a=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r,2));t[S]=g(e.substr(a));p(n).bigHour=true}),w("Hmm",function(e,t,n){var r=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r))}),w("Hmmss",function(e,t,n){var r=e.length-4,a=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r,2));t[S]=g(e.substr(a))});var ln,un=Ee("Hours",true);function cn(e,t,n){if(e>11)return n?"pm":"PM";else return n?"am":"AM"}var dn={calendar:ae,longDateFormat:he,invalidDate:ye,ordinal:_e,dayOfMonthOrdinalParse:ve,relativeTime:we,months:it,monthsShort:st,week:Dt,weekdays:Ht,weekdaysMin:Ft,weekdaysShort:It,meridiemParse:/[ap]\.?m?\.?/i},D={},pn={},fn;function hn(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0){a=_n(o.slice(0,n).join("-"));if(a)return a;if(r&&r.length>=n&&hn(o,r)>=n-1)break;n--}t++}return fn}function gn(e){return e.match("^[^/\\\\]*$")!=null}function _n(t){var e=null,n;if(D[t]===undefined&&typeof ci!=="undefined"&&ci&&ci.exports&&gn(t))try{e=fn._abbr;n=di;pi(367)("./"+t);vn(e)}catch(e){D[t]=null}return D[t]}function vn(e,t){var n;if(e){if(s(t))n=Mn(e);else n=bn(e,t);if(n)fn=n;else if(typeof console!=="undefined"&&console.warn)console.warn("Locale "+e+" not found. Did you forget to load it?")}return fn._abbr}function bn(e,t){if(t!==null){var n,r=dn;t.abbr=e;if(D[e]!=null){ee("defineLocaleOverride","use moment.updateLocale(localeName, config) to change "+"an existing locale. moment.defineLocale(localeName, "+"config) should only be used for creating a new locale "+"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");r=D[e]._config}else if(t.parentLocale!=null)if(D[t.parentLocale]!=null)r=D[t.parentLocale]._config;else{n=_n(t.parentLocale);if(n!=null)r=n._config;else{if(!pn[t.parentLocale])pn[t.parentLocale]=[];pn[t.parentLocale].push({name:e,config:t});return null}}D[e]=new re(ne(r,t));if(pn[e])pn[e].forEach(function(e){bn(e.name,e.config)});vn(e);return D[e]}else{delete D[e];return null}}function wn(e,t){if(t!=null){var n,r,a=dn;if(D[e]!=null&&D[e].parentLocale!=null)D[e].set(ne(D[e]._config,t));else{r=_n(e);if(r!=null)a=r._config;t=ne(a,t);if(r==null)t.abbr=e;n=new re(t);n.parentLocale=D[e];D[e]=n}vn(e)}else if(D[e]!=null)if(D[e].parentLocale!=null){D[e]=D[e].parentLocale;if(e===vn())vn(e)}else if(D[e]!=null)delete D[e];return D[e]}function Mn(e){var t;if(e&&e._locale&&e._locale._abbr)e=e._locale._abbr;if(!e)return fn;if(!i(e)){t=_n(e);if(t)return t;e=[e]}return yn(e)}function kn(){return X(D)}function xn(e){var t,n=e._a;if(n&&p(e).overflow===-2){t=n[k]<0||n[k]>11?k:n[x]<1||n[x]>ot(n[M],n[k])?x:n[L]<0||n[L]>24||n[L]===24&&(n[T]!==0||n[S]!==0||n[tt]!==0)?L:n[T]<0||n[T]>59?T:n[S]<0||n[S]>59?S:n[tt]<0||n[tt]>999?tt:-1;if(p(e)._overflowDayOfYear&&(tx))t=x;if(p(e)._overflowWeeks&&t===-1)t=nt;if(p(e)._overflowWeekday&&t===-1)t=rt;p(e).overflow=t}return e}var Ln=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Tn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Sn=/Z|[+-]\d\d(?::?\d\d)?/,Cn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],En=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Dn=/^\/?Date\((-?\d+)/i,Yn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,On={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Pn(e){var t,n,r=e._i,a=Ln.exec(r)||Tn.exec(r),o,i,s,l,u=Cn.length,c=En.length;if(a){p(e).iso=true;for(t=0,n=u;twt(i)||e._dayOfYear===0)p(e)._overflowDayOfYear=true;n=Lt(i,0,e._dayOfYear);e._a[k]=n.getUTCMonth();e._a[x]=n.getUTCDate()}for(t=0;t<3&&e._a[t]==null;++t)e._a[t]=r[t]=a[t];for(;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];if(e._a[L]===24&&e._a[T]===0&&e._a[S]===0&&e._a[tt]===0){e._nextDay=true;e._a[L]=0}e._d=(e._useUTC?Lt:xt).apply(null,r);o=e._useUTC?e._d.getUTCDay():e._d.getDay();if(e._tzm!=null)e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm);if(e._nextDay)e._a[L]=24;if(e._w&&typeof e._w.d!=="undefined"&&e._w.d!==o)p(e).weekdayMismatch=true}function Bn(e){var t,n,r,a,o,i,s,l,u;t=e._w;if(t.GG!=null||t.W!=null||t.E!=null){o=1;i=4;n=zn(t.GG,e._a[M],Ct(Y(),1,4).year);r=zn(t.W,1);a=zn(t.E,1);if(a<1||a>7)l=true}else{o=e._locale._week.dow;i=e._locale._week.doy;u=Ct(Y(),o,i);n=zn(t.gg,e._a[M],u.year);r=zn(t.w,u.week);if(t.d!=null){a=t.d;if(a<0||a>6)l=true}else if(t.e!=null){a=t.e+o;if(t.e<0||t.e>6)l=true}else a=o}if(r<1||r>E(n,o,i))p(e)._overflowWeeks=true;else if(l!=null)p(e)._overflowWeekday=true;else{s=St(n,r,a,o,i);e._a[M]=s.year;e._dayOfYear=s.dayOfYear}}function Un(e){if(e._f===d.ISO_8601){Pn(e);return}if(e._f===d.RFC_2822){In(e);return}e._a=[];p(e).empty=true;var t=""+e._i,n,r,a,o,i,s=t.length,l=0,u,c;a=fe(e._f,e._locale).match(ie)||[];c=a.length;for(n=0;n0)p(e).unusedInput.push(i);t=t.slice(t.indexOf(r)+r.length);l+=r.length}if(ue[o]){if(r)p(e).empty=false;else p(e).unusedTokens.push(o);et(o,r,e)}else if(e._strict&&!r)p(e).unusedTokens.push(o)}p(e).charsLeftOver=s-l;if(t.length>0)p(e).unusedInput.push(t);if(e._a[L]<=12&&p(e).bigHour===true&&e._a[L]>0)p(e).bigHour=undefined;p(e).parsedDateParts=e._a.slice(0);p(e).meridiem=e._meridiem;e._a[L]=Kn(e._locale,e._a[L],e._meridiem);u=p(e).era;if(u!==null)e._a[M]=e._locale.erasConvertYear(u,e._a[M]);Vn(e);xn(e)}function Kn(e,t,n){var r;if(n==null)return t;if(e.meridiemHour!=null)return e.meridiemHour(t,n);else if(e.isPM!=null){r=e.isPM(n);if(r&&t<12)t+=12;if(!r&&t===12)t=0;return t}else return t}function Gn(e){var t,n,r,a,o,i,s=false,l=e._f.length;if(l===0){p(e).invalidFormat=true;e._d=new Date(NaN);return}for(a=0;athis?this:e;else return K()});function tr(e,t){var n,r;if(t.length===1&&i(t[0]))t=t[0];if(!t.length)return Y();n=t[0];for(r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Lr(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={},t;q(e,this);e=Jn(e);if(e._a){t=e._isUTC?c(e._a):Y(e._a);this._isDSTShifted=this.isValid()&&pr(e._a,t.toArray())>0}else this._isDSTShifted=false;return this._isDSTShifted}function Tr(){return this.isValid()?!this._isUTC:false}function Sr(){return this.isValid()?this._isUTC:false}function Cr(){return this.isValid()?this._isUTC&&this._offset===0:false}d.updateOffset=function(){};var Er=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Dr=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function O(e,t){var n=e,r=null,a,o,i;if(cr(e))n={ms:e._milliseconds,d:e._days,M:e._months};else if(u(e)||!isNaN(+e)){n={};if(t)n[t]=+e;else n.milliseconds=+e}else if(r=Er.exec(e)){a=r[1]==="-"?-1:1;n={y:0,d:g(r[x])*a,h:g(r[L])*a,m:g(r[T])*a,s:g(r[S])*a,ms:g(dr(r[tt]*1e3))*a}}else if(r=Dr.exec(e)){a=r[1]==="-"?-1:1;n={y:Yr(r[2],a),M:Yr(r[3],a),w:Yr(r[4],a),d:Yr(r[5],a),h:Yr(r[6],a),m:Yr(r[7],a),s:Yr(r[8],a)}}else if(n==null)n={};else if(typeof n==="object"&&("from"in n||"to"in n)){i=Pr(Y(n.from),Y(n.to));n={};n.ms=i.milliseconds;n.M=i.months}o=new ur(n);if(cr(e)&&l(e,"_locale"))o._locale=e._locale;if(cr(e)&&l(e,"_isValid"))o._isValid=e._isValid;return o}function Yr(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Or(e,t){var n={};n.months=t.month()-e.month()+(t.year()-e.year())*12;if(e.clone().add(n.months,"M").isAfter(t))--n.months;n.milliseconds=+t-+e.clone().add(n.months,"M");return n}function Pr(e,t){var n;if(!(e.isValid()&&t.isValid()))return{milliseconds:0,months:0};t=yr(t,e);if(e.isBefore(t))n=Or(e,t);else{n=Or(t,e);n.milliseconds=-n.milliseconds;n.months=-n.months}return n}function Nr(a,o){return function(e,t){var n,r;if(t!==null&&!isNaN(+t)){ee(o,"moment()."+o+"(period, number) is deprecated. Please use moment()."+o+"(number, period). "+"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");r=e;e=t;t=r}n=O(e,t);jr(this,n,a);return this}}function jr(e,t,n,r){var a=t._milliseconds,o=dr(t._days),i=dr(t._months);if(!e.isValid())return;r=r==null?true:r;if(i)mt(e,De(e,"Month")+i*n);if(o)Ye(e,"Date",De(e,"Date")+o*n);if(a)e._d.setTime(e._d.valueOf()+a*n);if(r)d.updateOffset(e,o||i)}O.fn=ur.prototype,O.invalid=lr;var Ar=Nr(1,"add"),Rr=Nr(-1,"subtract");function Hr(e){return typeof e==="string"||e instanceof String}function Ir(e){return f(e)||z(e)||Hr(e)||u(e)||zr(e)||Fr(e)||e===null||e===undefined}function Fr(e){var t=I(e)&&!F(e),n=false,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a,o,i=r.length;for(a=0;an.valueOf();else return n.valueOf()9999)return pe(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(h(Date.prototype.toISOString))if(t)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",pe(n,"Z"));return pe(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function na(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,r,a,o;if(!this.isLocal()){e=this.utcOffset()===0?"moment.utc":"moment.parseZone";t="Z"}n="["+e+'("]';r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";a="-MM-DD[T]HH:mm:ss.SSS";o=t+'[")]';return this.format(n+r+a+o)}function ra(e){if(!e)e=this.isUtc()?d.defaultFormatUtc:d.defaultFormat;var t=pe(this,e);return this.localeData().postformat(t)}function aa(e,t){if(this.isValid()&&(f(e)&&e.isValid()||Y(e).isValid()))return O({to:this,from:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function oa(e){return this.from(Y(),e)}function ia(e,t){if(this.isValid()&&(f(e)&&e.isValid()||Y(e).isValid()))return O({from:this,to:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function sa(e){return this.to(Y(),e)}function la(e){var t;if(e===undefined)return this._locale._abbr;else{t=Mn(e);if(t!=null)this._locale=t;return this}}d.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",d.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ua=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){if(e===undefined)return this.localeData();else return this.locale(e)});function ca(){return this._locale}var da=1e3,pa=60*da,fa=60*pa,ha=(365*400+97)*24*fa;function ma(e,t){return(e%t+t)%t}function ya(e,t,n){if(e<100&&e>=0)return new Date(e+400,t,n)-ha;else return new Date(e,t,n).valueOf()}function ga(e,t,n){if(e<100&&e>=0)return Date.UTC(e+400,t,n)-ha;else return Date.UTC(e,t,n)}function _a(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?ga:ya;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf();t-=ma(t+(this._isUTC?0:this.utcOffset()*pa),fa);break;case"minute":t=this._d.valueOf();t-=ma(t,pa);break;case"second":t=this._d.valueOf();t-=ma(t,da);break}this._d.setTime(t);d.updateOffset(this,true);return this}function va(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?ga:ya;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf();t+=fa-ma(t+(this._isUTC?0:this.utcOffset()*pa),fa)-1;break;case"minute":t=this._d.valueOf();t+=pa-ma(t,pa)-1;break;case"second":t=this._d.valueOf();t+=da-ma(t,da)-1;break}this._d.setTime(t);d.updateOffset(this,true);return this}function ba(){return this._d.valueOf()-(this._offset||0)*6e4}function wa(){return Math.floor(this.valueOf()/1e3)}function Ma(){return new Date(this.valueOf())}function ka(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function xa(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function La(){return this.isValid()?this.toISOString():null}function Ta(){return U(this)}function Sa(){return V({},p(this))}function Ca(){return p(this).overflow}function Ea(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Da(e,t){var n,r,a,o=this._eras||Mn("en")._eras;for(n=0,r=o.length;n=0)return o[r]}}function Oa(e,t){var n=e.since<=e.until?+1:-1;if(t===undefined)return d(e.since).year();else return d(e.since).year()+(t-e.offset)*n}function Pa(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;eo)t=o;return Xa.call(this,e,t,n,r,a)}}function Xa(e,t,n,r,a){var o=St(e,t,n,r,a),i=Lt(o.year,0,o.dayOfYear);this.year(i.getUTCFullYear());this.month(i.getUTCMonth());this.date(i.getUTCDate());return this}function eo(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}r("N",0,0,"eraAbbr"),r("NN",0,0,"eraAbbr"),r("NNN",0,0,"eraAbbr"),r("NNNN",0,0,"eraName"),r("NNNNN",0,0,"eraNarrow"),r("y",["y",1],"yo","eraYear"),r("y",["yy",2],0,"eraYear"),r("y",["yyy",3],0,"eraYear"),r("y",["yyyy",4],0,"eraYear"),v("N",Fa),v("NN",Fa),v("NNN",Fa),v("NNNN",za),v("NNNNN",Wa),w(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,r){var a=n._locale.erasParse(e,r,n._strict);if(a)p(n).era=a;else p(n).invalidEra=e}),v("y",Ve),v("yy",Ve),v("yyy",Ve),v("yyyy",Ve),v("yo",Va),w(["y","yy","yyy","yyyy"],M),w(["yo"],function(e,t,n,r){var a;if(n._locale._eraYearOrdinalRegex)a=e.match(n._locale._eraYearOrdinalRegex);if(n._locale.eraYearOrdinalParse)t[M]=n._locale.eraYearOrdinalParse(e,a);else t[M]=parseInt(e,10)}),r(0,["gg",2],0,function(){return this.weekYear()%100}),r(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ua("gggg","weekYear"),Ua("ggggg","weekYear"),Ua("GGGG","isoWeekYear"),Ua("GGGGG","isoWeekYear"),t("weekYear","gg"),t("isoWeekYear","GG"),n("weekYear",1),n("isoWeekYear",1),v("G",Be),v("g",Be),v("GG",_,a),v("gg",_,a),v("GGGG",ze,Ae),v("gggg",ze,Ae),v("GGGGG",We,Re),v("ggggg",We,Re),Xe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,r){t[r.substr(0,2)]=g(e)}),Xe(["gg","GG"],function(e,t,n,r){t[r]=d.parseTwoDigitYear(e)}),r("Q",0,"Qo","quarter"),t("quarter","Q"),n("quarter",7),v("Q",Ne),w("Q",function(e,t){t[k]=(g(e)-1)*3}),r("D",["DD",2],"Do","date"),t("date","D"),n("date",9),v("D",_),v("DD",_,a),v("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),w(["D","DD"],x),w("Do",function(e,t){t[x]=g(e.match(_)[0])});var to=Ee("Date",true);function no(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}r("DDD",["DDDD",3],"DDDo","dayOfYear"),t("dayOfYear","DDD"),n("dayOfYear",4),v("DDD",Fe),v("DDDD",je),w(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),r("m",["mm",2],0,"minute"),t("minute","m"),n("minute",14),v("m",_),v("mm",_,a),w(["m","mm"],T);var ro=Ee("Minutes",false),ao=(r("s",["ss",2],0,"second"),t("second","s"),n("second",15),v("s",_),v("ss",_,a),w(["s","ss"],S),Ee("Seconds",false)),oo,io;for(r("S",0,0,function(){return~~(this.millisecond()/100)}),r(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),r(0,["SSS",3],0,"millisecond"),r(0,["SSSS",4],0,function(){return this.millisecond()*10}),r(0,["SSSSS",5],0,function(){return this.millisecond()*100}),r(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),r(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),r(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),r(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),t("millisecond","ms"),n("millisecond",16),v("S",Fe,Ne),v("SS",Fe,a),v("SSS",Fe,je),oo="SSSS";oo.length<=9;oo+="S")v(oo,Ve);function so(e,t){t[tt]=g(("0."+e)*1e3)}for(oo="S";oo.length<=9;oo+="S")w(oo,so);function lo(){return this._isUTC?"UTC":""}function uo(){return this._isUTC?"Coordinated Universal Time":""}io=Ee("Milliseconds",false),r("z",0,0,"zoneAbbr"),r("zz",0,0,"zoneName");var P=J.prototype;if(P.add=Ar,P.calendar=Br,P.clone=Ur,P.diff=Zr,P.endOf=va,P.format=ra,P.from=aa,P.fromNow=oa,P.to=ia,P.toNow=sa,P.get=Oe,P.invalidAt=Ca,P.isAfter=Kr,P.isBefore=Gr,P.isBetween=$r,P.isSame=qr,P.isSameOrAfter=Jr,P.isSameOrBefore=Qr,P.isValid=Ta,P.lang=ua,P.locale=la,P.localeData=ca,P.max=er,P.min=Xn,P.parsingFlags=Sa,P.set=Pe,P.startOf=_a,P.subtract=Rr,P.toArray=ka,P.toObject=xa,P.toDate=Ma,P.toISOString=ta,P.inspect=na,typeof Symbol!=="undefined"&&Symbol.for!=null)P[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};function co(e){return Y(e*1e3)}function po(){return Y.apply(null,arguments).parseZone()}function fo(e){return e}P.toJSON=La,P.toString=ea,P.unix=wa,P.valueOf=ba,P.creationData=Ea,P.eraName=Pa,P.eraNarrow=Na,P.eraAbbr=ja,P.eraYear=Aa,P.year=Mt,P.isLeapYear=kt,P.weekYear=Ka,P.isoWeekYear=Ga,P.quarter=P.quarters=eo,P.month=yt,P.daysInMonth=gt,P.week=P.weeks=Pt,P.isoWeek=P.isoWeeks=Nt,P.weeksInYear=Ja,P.weeksInWeekYear=Qa,P.isoWeeksInYear=$a,P.isoWeeksInISOWeekYear=qa,P.date=to,P.day=P.days=qt,P.weekday=Jt,P.isoWeekday=Qt,P.dayOfYear=no,P.hour=P.hours=un,P.minute=P.minutes=ro,P.second=P.seconds=ao,P.millisecond=P.milliseconds=io,P.utcOffset=_r,P.utc=br,P.local=wr,P.parseZone=Mr,P.hasAlignedHourOffset=kr,P.isDST=xr,P.isLocal=Tr,P.isUtcOffset=Sr,P.isUtc=Cr,P.isUTC=Cr,P.zoneAbbr=lo,P.zoneName=uo,P.dates=e("dates accessor is deprecated. Use date instead.",to),P.months=e("months accessor is deprecated. Use month instead",yt),P.years=e("years accessor is deprecated. Use year instead",Mt),P.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",vr),P.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Lr);var N=re.prototype;function ho(e,t,n,r){var a=Mn(),o=c().set(r,t);return a[n](o,e)}function mo(e,t,n){if(u(e)){t=e;e=undefined}e=e||"";if(t!=null)return ho(e,t,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=ho(e,r,n,"month");return a}function yo(e,t,n,r){if(typeof e==="boolean"){if(u(t)){n=t;t=undefined}t=t||""}else{t=e;n=t;e=false;if(u(t)){n=t;t=undefined}t=t||""}var a=Mn(),o=e?a._week.dow:0,i,s=[];if(n!=null)return ho(t,(n+o)%7,r,"day");for(i=0;i<7;i++)s[i]=ho(t,(i+o)%7,r,"day");return s}function go(e,t){return mo(e,t,"months")}function _o(e,t){return mo(e,t,"monthsShort")}function vo(e,t,n){return yo(e,t,n,"weekdays")}function bo(e,t,n){return yo(e,t,n,"weekdaysShort")}function wo(e,t,n){return yo(e,t,n,"weekdaysMin")}N.calendar=oe,N.longDateFormat=me,N.invalidDate=ge,N.ordinal=be,N.preparse=fo,N.postformat=fo,N.relativeTime=Me,N.pastFuture=ke,N.set=te,N.eras=Da,N.erasParse=Ya,N.erasConvertYear=Oa,N.erasAbbrRegex=Ha,N.erasNameRegex=Ra,N.erasNarrowRegex=Ia,N.months=dt,N.monthsShort=pt,N.monthsParse=ht,N.monthsRegex=vt,N.monthsShortRegex=_t,N.week=Et,N.firstDayOfYear=Ot,N.firstDayOfWeek=Yt,N.weekdays=Bt,N.weekdaysMin=Kt,N.weekdaysShort=Ut,N.weekdaysParse=$t,N.weekdaysRegex=Zt,N.weekdaysShortRegex=Xt,N.weekdaysMinRegex=en,N.isPM=sn,N.meridiem=cn,vn("en",{eras:[{since:"0001-01-01",until:+Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-Infinity,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=g(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),d.lang=e("moment.lang is deprecated. Use moment.locale instead.",vn),d.langData=e("moment.langData is deprecated. Use moment.localeData instead.",Mn);var Mo=Math.abs;function ko(){var e=this._data;this._milliseconds=Mo(this._milliseconds);this._days=Mo(this._days);this._months=Mo(this._months);e.milliseconds=Mo(e.milliseconds);e.seconds=Mo(e.seconds);e.minutes=Mo(e.minutes);e.hours=Mo(e.hours);e.months=Mo(e.months);e.years=Mo(e.years);return this}function xo(e,t,n,r){var a=O(t,n);e._milliseconds+=r*a._milliseconds;e._days+=r*a._days;e._months+=r*a._months;return e._bubble()}function Lo(e,t){return xo(this,e,t,1)}function To(e,t){return xo(this,e,t,-1)}function So(e){if(e<0)return Math.floor(e);else return Math.ceil(e)}function Co(){var e=this._milliseconds,t=this._days,n=this._months,r=this._data,a,o,i,s,l;if(!(e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0)){e+=So(Do(n)+t)*864e5;t=0;n=0}r.milliseconds=e%1e3;a=y(e/1e3);r.seconds=a%60;o=y(a/60);r.minutes=o%60;i=y(o/60);r.hours=i%24;t+=y(i/24);l=y(Eo(t));n+=l;t-=So(Do(l));s=y(n/12);n%=12;r.days=t;r.months=n;r.years=s;return this}function Eo(e){return e*4800/146097}function Do(e){return e*146097/4800}function Yo(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;e=m(e);if(e==="month"||e==="quarter"||e==="year"){t=this._days+r/864e5;n=this._months+Eo(t);switch(e){case"month":return n;case"quarter":return n/3;case"year":return n/12}}else{t=this._days+Math.round(Do(this._months));switch(e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return t*24+r/36e5;case"minute":return t*1440+r/6e4;case"second":return t*86400+r/1e3;case"millisecond":return Math.floor(t*864e5)+r;default:throw new Error("Unknown unit "+e)}}}function Oo(){if(!this.isValid())return NaN;return this._milliseconds+this._days*864e5+this._months%12*2592e6+g(this._months/12)*31536e6}function Po(e){return function(){return this.as(e)}}var No=Po("ms"),jo=Po("s"),Ao=Po("m"),Ro=Po("h"),Ho=Po("d"),Io=Po("w"),Fo=Po("M"),zo=Po("Q"),Wo=Po("y");function Vo(){return O(this)}function Bo(e){e=m(e);return this.isValid()?this[e+"s"]():NaN}function Uo(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ko=Uo("milliseconds"),Go=Uo("seconds"),$o=Uo("minutes"),qo=Uo("hours"),Jo=Uo("days"),Qo=Uo("months"),Zo=Uo("years");function Xo(){return y(this.days()/7)}var ei=Math.round,ti={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ni(e,t,n,r,a){return a.relativeTime(t||1,!!n,e,r)}function ri(e,t,n,r){var a=O(e).abs(),o=ei(a.as("s")),i=ei(a.as("m")),s=ei(a.as("h")),l=ei(a.as("d")),u=ei(a.as("M")),c=ei(a.as("w")),d=ei(a.as("y")),p=o<=n.ss&&["s",o]||o0;p[4]=r;return ni.apply(null,p)}function ai(e){if(e===undefined)return ei;if(typeof e==="function"){ei=e;return true}return false}function oi(e,t){if(ti[e]===undefined)return false;if(t===undefined)return ti[e];ti[e]=t;if(e==="s")ti.ss=t-1;return true}function ii(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=false,r=ti,a,o;if(typeof e==="object"){t=e;e=false}if(typeof e==="boolean")n=e;if(typeof t==="object"){r=Object.assign({},ti,t);if(t.s!=null&&t.ss==null)r.ss=t.s-1}a=this.localeData();o=ri(this,!n,r,a);if(n)o=a.pastFuture(+this,o);return a.postformat(o)}var si=Math.abs;function li(e){return(e>0)-(e<0)||+e}function ui(){if(!this.isValid())return this.localeData().invalidDate();var e=si(this._milliseconds)/1e3,t=si(this._days),n=si(this._months),r,a,o,i,s=this.asSeconds(),l,u,c,d;if(!s)return"P0D";r=y(e/60);a=y(r/60);e%=60;r%=60;o=y(n/12);n%=12;i=e?e.toFixed(3).replace(/\.?0+$/,""):"";l=s<0?"-":"";u=li(this._months)!==li(s)?"-":"";c=li(this._days)!==li(s)?"-":"";d=li(this._milliseconds)!==li(s)?"-":"";return l+"P"+(o?u+o+"Y":"")+(n?u+n+"M":"")+(t?c+t+"D":"")+(a||r||e?"T":"")+(a?d+a+"H":"")+(r?d+r+"M":"")+(e?d+i+"S":"")}var j=ur.prototype;return j.isValid=sr,j.abs=ko,j.add=Lo,j.subtract=To,j.as=Yo,j.asMilliseconds=No,j.asSeconds=jo,j.asMinutes=Ao,j.asHours=Ro,j.asDays=Ho,j.asWeeks=Io,j.asMonths=Fo,j.asQuarters=zo,j.asYears=Wo,j.valueOf=Oo,j._bubble=Co,j.clone=Vo,j.get=Bo,j.milliseconds=Ko,j.seconds=Go,j.minutes=$o,j.hours=qo,j.days=Jo,j.weeks=Xo,j.months=Qo,j.years=Zo,j.humanize=ii,j.toISOString=ui,j.toString=ui,j.toJSON=ui,j.locale=la,j.localeData=ca,j.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ui),j.lang=ua,r("X",0,0,"unix"),r("x",0,0,"valueOf"),v("x",Be),v("X",Ge),w("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)}),w("x",function(e,t,n){n._d=new Date(g(e))}), +ci.exports=function(){"use strict";var A,R;function d(){return A.apply(null,arguments)}function H(e){A=e}function i(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function I(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function l(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;else{var t;for(t in e)if(l(e,t))return false;return true}}function s(e){return e===void 0}function u(e){return typeof e==="number"||Object.prototype.toString.call(e)==="[object Number]"}function z(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function W(e,t){var n=[],r,a=e.length;for(r=0;r>>0,r;for(r=0;r0)for(n=0;n=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}var ie=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,se=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,le={},ue={};function r(e,t,n,r){var a=r;if(typeof r==="string")a=function(){return this[r]()};if(e)ue[e]=a;if(t)ue[t[0]]=function(){return o(a.apply(this,arguments),t[1],t[2])};if(n)ue[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)}}function ce(e){if(e.match(/\[[\s\S]/))return e.replace(/^\[|\]$/g,"");return e.replace(/\\/g,"")}function de(r){var a=r.match(ie),e,o;for(e=0,o=a.length;e=0&&se.test(e)){e=e.replace(se,r);se.lastIndex=0;n-=1}return e}var he={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function me(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];if(t||!n)return t;this._longDateFormat[e]=n.match(ie).map(function(e){if(e==="MMMM"||e==="MM"||e==="DD"||e==="dddd")return e.slice(1);return e}).join("");return this._longDateFormat[e]}var ye="Invalid date";function ge(){return this._invalidDate}var _e="%d",ve=/\d{1,2}/;function be(e){return this._ordinal.replace("%d",e)}var we={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Me(e,t,n,r){var a=this._relativeTime[n];return h(a)?a(e,t,n,r):a.replace(/%d/i,e)}function ke(e,t){var n=this._relativeTime[e>0?"future":"past"];return h(n)?n(t):n.replace(/%s/i,t)}var xe={};function t(e,t){var n=e.toLowerCase();xe[n]=xe[n+"s"]=xe[t]=e}function m(e){return typeof e==="string"?xe[e]||xe[e.toLowerCase()]:undefined}function Le(e){var t={},n,r;for(r in e)if(l(e,r)){n=m(r);if(n)t[n]=e[r]}return t}var Te={};function n(e,t){Te[e]=t}function Se(e){var t=[],n;for(n in e)if(l(e,n))t.push({unit:n,priority:Te[n]});t.sort(function(e,t){return e.priority-t.priority});return t}function Ce(e){return e%4===0&&e%100!==0||e%400===0}function y(e){if(e<0)return Math.ceil(e)||0;else return Math.floor(e)}function g(e){var t=+e,n=0;if(t!==0&&isFinite(t))n=y(t);return n}function Ee(t,n){return function(e){if(e!=null){Ye(this,t,e);d.updateOffset(this,n);return this}else return De(this,t)}}function De(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Ye(e,t,n){if(e.isValid()&&!isNaN(n))if(t==="FullYear"&&Ce(e.year())&&e.month()===1&&e.date()===29){n=g(n);e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ot(n,e.month()))}else e._d["set"+(e._isUTC?"UTC":"")+t](n)}function Oe(e){e=m(e);if(h(this[e]))return this[e]();return this}function Pe(e,t){if(typeof e==="object"){e=Le(e);var n=Se(e),r,a=n.length;for(r=0;r68?1900:2e3)};var Mt=Ee("FullYear",true);function kt(){return Ce(this.year())}function xt(e,t,n,r,a,o,i){var s;if(e<100&&e>=0){s=new Date(e+400,t,n,r,a,o,i);if(isFinite(s.getFullYear()))s.setFullYear(e)}else s=new Date(e,t,n,r,a,o,i);return s}function Lt(e){var t,n;if(e<100&&e>=0){n=Array.prototype.slice.call(arguments);n[0]=e+400;t=new Date(Date.UTC.apply(null,n));if(isFinite(t.getUTCFullYear()))t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Tt(e,t,n){var r=7+t-n,a=(7+Lt(e,0,r).getUTCDay()-t)%7;return-a+r-1}function St(e,t,n,r,a){var o=(7+n-r)%7,i=Tt(e,r,a),s=1+7*(t-1)+o+i,l,u;if(s<=0){l=e-1;u=wt(l)+s}else if(s>wt(e)){l=e+1;u=s-wt(e)}else{l=e;u=s}return{year:l,dayOfYear:u}}function Ct(e,t,n){var r=Tt(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1,o,i;if(a<1){i=e.year()-1;o=a+E(i,t,n)}else if(a>E(e.year(),t,n)){o=a-E(e.year(),t,n);i=e.year()+1}else{i=e.year();o=a}return{week:o,year:i}}function E(e,t,n){var r=Tt(e,t,n),a=Tt(e+1,t,n);return(wt(e)-r+a)/7}function Et(e){return Ct(e,this._week.dow,this._week.doy).week}r("w",["ww",2],"wo","week"),r("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),v("w",_),v("ww",_,a),v("W",_),v("WW",_,a),Xe(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=g(e)});var Dt={dow:0,doy:6};function Yt(){return this._week.dow}function Ot(){return this._week.doy}function Pt(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Nt(e){var t=Ct(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}function jt(e,t){if(typeof e!=="string")return e;if(!isNaN(e))return parseInt(e,10);e=t.weekdaysParse(e);if(typeof e==="number")return e;return null}function At(e,t){if(typeof e==="string")return t.weekdaysParse(e)%7||7;return isNaN(e)?null:e}function Rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}r("d",0,"do","day"),r("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),r("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),r("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),r("e",0,0,"weekday"),r("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),v("d",_),v("e",_),v("E",_),v("dd",function(e,t){return t.weekdaysMinRegex(e)}),v("ddd",function(e,t){return t.weekdaysShortRegex(e)}),v("dddd",function(e,t){return t.weekdaysRegex(e)}),Xe(["dd","ddd","dddd"],function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);if(a!=null)t.d=a;else p(n).invalidWeekday=e}),Xe(["d","e","E"],function(e,t,n,r){t[r]=g(e)});var Ht="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),It="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ft="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=$e,Wt=$e,Vt=$e;function Bt(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&e!==true&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===true?Rt(n,this._week.dow):e?n[e.day()]:n}function Ut(e){return e===true?Rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Kt(e){return e===true?Rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Gt(e,t,n){var r,a,o,i=e.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(r=0;r<7;++r){o=c([2e3,1]).day(r);this._minWeekdaysParse[r]=this.weekdaysMin(o,"").toLocaleLowerCase();this._shortWeekdaysParse[r]=this.weekdaysShort(o,"").toLocaleLowerCase();this._weekdaysParse[r]=this.weekdays(o,"").toLocaleLowerCase()}}if(n)if(t==="dddd"){a=C.call(this._weekdaysParse,i);return a!==-1?a:null}else if(t==="ddd"){a=C.call(this._shortWeekdaysParse,i);return a!==-1?a:null}else{a=C.call(this._minWeekdaysParse,i);return a!==-1?a:null}else if(t==="dddd"){a=C.call(this._weekdaysParse,i);if(a!==-1)return a;a=C.call(this._shortWeekdaysParse,i);if(a!==-1)return a;a=C.call(this._minWeekdaysParse,i);return a!==-1?a:null}else if(t==="ddd"){a=C.call(this._shortWeekdaysParse,i);if(a!==-1)return a;a=C.call(this._weekdaysParse,i);if(a!==-1)return a;a=C.call(this._minWeekdaysParse,i);return a!==-1?a:null}else{a=C.call(this._minWeekdaysParse,i);if(a!==-1)return a;a=C.call(this._weekdaysParse,i);if(a!==-1)return a;a=C.call(this._shortWeekdaysParse,i);return a!==-1?a:null}}function $t(e,t,n){var r,a,o;if(this._weekdaysParseExact)return Gt.call(this,e,t,n);if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(r=0;r<7;r++){a=c([2e3,1]).day(r);if(n&&!this._fullWeekdaysParse[r]){this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i");this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i");this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")}if(!this._weekdaysParse[r]){o="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,"");this._weekdaysParse[r]=new RegExp(o.replace(".",""),"i")}if(n&&t==="dddd"&&this._fullWeekdaysParse[r].test(e))return r;else if(n&&t==="ddd"&&this._shortWeekdaysParse[r].test(e))return r;else if(n&&t==="dd"&&this._minWeekdaysParse[r].test(e))return r;else if(!n&&this._weekdaysParse[r].test(e))return r}}function qt(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e!=null){e=jt(e,this.localeData());return this.add(e-t,"d")}else return t}function Jt(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Qt(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=At(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Zt(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!l(this,"_weekdaysRegex"))this._weekdaysRegex=zt;return this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}}function Xt(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!l(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=Wt;return this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function en(e){if(this._weekdaysParseExact){if(!l(this,"_weekdaysRegex"))tn.call(this);if(e)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!l(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=Vt;return this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function tn(){function e(e,t){return t.length-e.length}var t=[],n=[],r=[],a=[],o,i,s,l,u;for(o=0;o<7;o++){i=c([2e3,1]).day(o);s=b(this.weekdaysMin(i,""));l=b(this.weekdaysShort(i,""));u=b(this.weekdays(i,""));t.push(s);n.push(l);r.push(u);a.push(s);a.push(l);a.push(u)}t.sort(e);n.sort(e);r.sort(e);a.sort(e);this._weekdaysRegex=new RegExp("^("+a.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function nn(){return this.hours()%12||12}function rn(){return this.hours()||24}function an(e,t){r(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function on(e,t){return t._meridiemParse}function sn(e){return(e+"").toLowerCase().charAt(0)==="p"}r("H",["HH",2],0,"hour"),r("h",["hh",2],0,nn),r("k",["kk",2],0,rn),r("hmm",0,0,function(){return""+nn.apply(this)+o(this.minutes(),2)}),r("hmmss",0,0,function(){return""+nn.apply(this)+o(this.minutes(),2)+o(this.seconds(),2)}),r("Hmm",0,0,function(){return""+this.hours()+o(this.minutes(),2)}),r("Hmmss",0,0,function(){return""+this.hours()+o(this.minutes(),2)+o(this.seconds(),2)}),an("a",true),an("A",false),t("hour","h"),n("hour",13),v("a",on),v("A",on),v("H",_),v("h",_),v("k",_),v("HH",_,a),v("hh",_,a),v("kk",_,a),v("hmm",He),v("hmmss",Ie),v("Hmm",He),v("Hmmss",Ie),w(["H","HH"],L),w(["k","kk"],function(e,t,n){var r=g(e);t[L]=r===24?0:r}),w(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e);n._meridiem=e}),w(["h","hh"],function(e,t,n){t[L]=g(e);p(n).bigHour=true}),w("hmm",function(e,t,n){var r=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r));p(n).bigHour=true}),w("hmmss",function(e,t,n){var r=e.length-4,a=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r,2));t[S]=g(e.substr(a));p(n).bigHour=true}),w("Hmm",function(e,t,n){var r=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r))}),w("Hmmss",function(e,t,n){var r=e.length-4,a=e.length-2;t[L]=g(e.substr(0,r));t[T]=g(e.substr(r,2));t[S]=g(e.substr(a))});var ln,un=Ee("Hours",true);function cn(e,t,n){if(e>11)return n?"pm":"PM";else return n?"am":"AM"}var dn={calendar:ae,longDateFormat:he,invalidDate:ye,ordinal:_e,dayOfMonthOrdinalParse:ve,relativeTime:we,months:it,monthsShort:st,week:Dt,weekdays:Ht,weekdaysMin:Ft,weekdaysShort:It,meridiemParse:/[ap]\.?m?\.?/i},D={},pn={},fn;function hn(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0){a=_n(o.slice(0,n).join("-"));if(a)return a;if(r&&r.length>=n&&hn(o,r)>=n-1)break;n--}t++}return fn}function gn(e){return e.match("^[^/\\\\]*$")!=null}function _n(t){var e=null,n;if(D[t]===undefined&&typeof ci!=="undefined"&&ci&&ci.exports&&gn(t))try{e=fn._abbr;n=di;pi(379)("./"+t);vn(e)}catch(e){D[t]=null}return D[t]}function vn(e,t){var n;if(e){if(s(t))n=Mn(e);else n=bn(e,t);if(n)fn=n;else if(typeof console!=="undefined"&&console.warn)console.warn("Locale "+e+" not found. Did you forget to load it?")}return fn._abbr}function bn(e,t){if(t!==null){var n,r=dn;t.abbr=e;if(D[e]!=null){ee("defineLocaleOverride","use moment.updateLocale(localeName, config) to change "+"an existing locale. moment.defineLocale(localeName, "+"config) should only be used for creating a new locale "+"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");r=D[e]._config}else if(t.parentLocale!=null)if(D[t.parentLocale]!=null)r=D[t.parentLocale]._config;else{n=_n(t.parentLocale);if(n!=null)r=n._config;else{if(!pn[t.parentLocale])pn[t.parentLocale]=[];pn[t.parentLocale].push({name:e,config:t});return null}}D[e]=new re(ne(r,t));if(pn[e])pn[e].forEach(function(e){bn(e.name,e.config)});vn(e);return D[e]}else{delete D[e];return null}}function wn(e,t){if(t!=null){var n,r,a=dn;if(D[e]!=null&&D[e].parentLocale!=null)D[e].set(ne(D[e]._config,t));else{r=_n(e);if(r!=null)a=r._config;t=ne(a,t);if(r==null)t.abbr=e;n=new re(t);n.parentLocale=D[e];D[e]=n}vn(e)}else if(D[e]!=null)if(D[e].parentLocale!=null){D[e]=D[e].parentLocale;if(e===vn())vn(e)}else if(D[e]!=null)delete D[e];return D[e]}function Mn(e){var t;if(e&&e._locale&&e._locale._abbr)e=e._locale._abbr;if(!e)return fn;if(!i(e)){t=_n(e);if(t)return t;e=[e]}return yn(e)}function kn(){return X(D)}function xn(e){var t,n=e._a;if(n&&p(e).overflow===-2){t=n[k]<0||n[k]>11?k:n[x]<1||n[x]>ot(n[M],n[k])?x:n[L]<0||n[L]>24||n[L]===24&&(n[T]!==0||n[S]!==0||n[tt]!==0)?L:n[T]<0||n[T]>59?T:n[S]<0||n[S]>59?S:n[tt]<0||n[tt]>999?tt:-1;if(p(e)._overflowDayOfYear&&(tx))t=x;if(p(e)._overflowWeeks&&t===-1)t=nt;if(p(e)._overflowWeekday&&t===-1)t=rt;p(e).overflow=t}return e}var Ln=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Tn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Sn=/Z|[+-]\d\d(?::?\d\d)?/,Cn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],En=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Dn=/^\/?Date\((-?\d+)/i,Yn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,On={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Pn(e){var t,n,r=e._i,a=Ln.exec(r)||Tn.exec(r),o,i,s,l,u=Cn.length,c=En.length;if(a){p(e).iso=true;for(t=0,n=u;twt(i)||e._dayOfYear===0)p(e)._overflowDayOfYear=true;n=Lt(i,0,e._dayOfYear);e._a[k]=n.getUTCMonth();e._a[x]=n.getUTCDate()}for(t=0;t<3&&e._a[t]==null;++t)e._a[t]=r[t]=a[t];for(;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];if(e._a[L]===24&&e._a[T]===0&&e._a[S]===0&&e._a[tt]===0){e._nextDay=true;e._a[L]=0}e._d=(e._useUTC?Lt:xt).apply(null,r);o=e._useUTC?e._d.getUTCDay():e._d.getDay();if(e._tzm!=null)e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm);if(e._nextDay)e._a[L]=24;if(e._w&&typeof e._w.d!=="undefined"&&e._w.d!==o)p(e).weekdayMismatch=true}function Bn(e){var t,n,r,a,o,i,s,l,u;t=e._w;if(t.GG!=null||t.W!=null||t.E!=null){o=1;i=4;n=zn(t.GG,e._a[M],Ct(Y(),1,4).year);r=zn(t.W,1);a=zn(t.E,1);if(a<1||a>7)l=true}else{o=e._locale._week.dow;i=e._locale._week.doy;u=Ct(Y(),o,i);n=zn(t.gg,e._a[M],u.year);r=zn(t.w,u.week);if(t.d!=null){a=t.d;if(a<0||a>6)l=true}else if(t.e!=null){a=t.e+o;if(t.e<0||t.e>6)l=true}else a=o}if(r<1||r>E(n,o,i))p(e)._overflowWeeks=true;else if(l!=null)p(e)._overflowWeekday=true;else{s=St(n,r,a,o,i);e._a[M]=s.year;e._dayOfYear=s.dayOfYear}}function Un(e){if(e._f===d.ISO_8601){Pn(e);return}if(e._f===d.RFC_2822){In(e);return}e._a=[];p(e).empty=true;var t=""+e._i,n,r,a,o,i,s=t.length,l=0,u,c;a=fe(e._f,e._locale).match(ie)||[];c=a.length;for(n=0;n0)p(e).unusedInput.push(i);t=t.slice(t.indexOf(r)+r.length);l+=r.length}if(ue[o]){if(r)p(e).empty=false;else p(e).unusedTokens.push(o);et(o,r,e)}else if(e._strict&&!r)p(e).unusedTokens.push(o)}p(e).charsLeftOver=s-l;if(t.length>0)p(e).unusedInput.push(t);if(e._a[L]<=12&&p(e).bigHour===true&&e._a[L]>0)p(e).bigHour=undefined;p(e).parsedDateParts=e._a.slice(0);p(e).meridiem=e._meridiem;e._a[L]=Kn(e._locale,e._a[L],e._meridiem);u=p(e).era;if(u!==null)e._a[M]=e._locale.erasConvertYear(u,e._a[M]);Vn(e);xn(e)}function Kn(e,t,n){var r;if(n==null)return t;if(e.meridiemHour!=null)return e.meridiemHour(t,n);else if(e.isPM!=null){r=e.isPM(n);if(r&&t<12)t+=12;if(!r&&t===12)t=0;return t}else return t}function Gn(e){var t,n,r,a,o,i,s=false,l=e._f.length;if(l===0){p(e).invalidFormat=true;e._d=new Date(NaN);return}for(a=0;athis?this:e;else return K()});function tr(e,t){var n,r;if(t.length===1&&i(t[0]))t=t[0];if(!t.length)return Y();n=t[0];for(r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Lr(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={},t;q(e,this);e=Jn(e);if(e._a){t=e._isUTC?c(e._a):Y(e._a);this._isDSTShifted=this.isValid()&&pr(e._a,t.toArray())>0}else this._isDSTShifted=false;return this._isDSTShifted}function Tr(){return this.isValid()?!this._isUTC:false}function Sr(){return this.isValid()?this._isUTC:false}function Cr(){return this.isValid()?this._isUTC&&this._offset===0:false}d.updateOffset=function(){};var Er=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Dr=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function O(e,t){var n=e,r=null,a,o,i;if(cr(e))n={ms:e._milliseconds,d:e._days,M:e._months};else if(u(e)||!isNaN(+e)){n={};if(t)n[t]=+e;else n.milliseconds=+e}else if(r=Er.exec(e)){a=r[1]==="-"?-1:1;n={y:0,d:g(r[x])*a,h:g(r[L])*a,m:g(r[T])*a,s:g(r[S])*a,ms:g(dr(r[tt]*1e3))*a}}else if(r=Dr.exec(e)){a=r[1]==="-"?-1:1;n={y:Yr(r[2],a),M:Yr(r[3],a),w:Yr(r[4],a),d:Yr(r[5],a),h:Yr(r[6],a),m:Yr(r[7],a),s:Yr(r[8],a)}}else if(n==null)n={};else if(typeof n==="object"&&("from"in n||"to"in n)){i=Pr(Y(n.from),Y(n.to));n={};n.ms=i.milliseconds;n.M=i.months}o=new ur(n);if(cr(e)&&l(e,"_locale"))o._locale=e._locale;if(cr(e)&&l(e,"_isValid"))o._isValid=e._isValid;return o}function Yr(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Or(e,t){var n={};n.months=t.month()-e.month()+(t.year()-e.year())*12;if(e.clone().add(n.months,"M").isAfter(t))--n.months;n.milliseconds=+t-+e.clone().add(n.months,"M");return n}function Pr(e,t){var n;if(!(e.isValid()&&t.isValid()))return{milliseconds:0,months:0};t=yr(t,e);if(e.isBefore(t))n=Or(e,t);else{n=Or(t,e);n.milliseconds=-n.milliseconds;n.months=-n.months}return n}function Nr(a,o){return function(e,t){var n,r;if(t!==null&&!isNaN(+t)){ee(o,"moment()."+o+"(period, number) is deprecated. Please use moment()."+o+"(number, period). "+"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");r=e;e=t;t=r}n=O(e,t);jr(this,n,a);return this}}function jr(e,t,n,r){var a=t._milliseconds,o=dr(t._days),i=dr(t._months);if(!e.isValid())return;r=r==null?true:r;if(i)mt(e,De(e,"Month")+i*n);if(o)Ye(e,"Date",De(e,"Date")+o*n);if(a)e._d.setTime(e._d.valueOf()+a*n);if(r)d.updateOffset(e,o||i)}O.fn=ur.prototype,O.invalid=lr;var Ar=Nr(1,"add"),Rr=Nr(-1,"subtract");function Hr(e){return typeof e==="string"||e instanceof String}function Ir(e){return f(e)||z(e)||Hr(e)||u(e)||zr(e)||Fr(e)||e===null||e===undefined}function Fr(e){var t=I(e)&&!F(e),n=false,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a,o,i=r.length;for(a=0;an.valueOf();else return n.valueOf()9999)return pe(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(h(Date.prototype.toISOString))if(t)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",pe(n,"Z"));return pe(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function na(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,r,a,o;if(!this.isLocal()){e=this.utcOffset()===0?"moment.utc":"moment.parseZone";t="Z"}n="["+e+'("]';r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";a="-MM-DD[T]HH:mm:ss.SSS";o=t+'[")]';return this.format(n+r+a+o)}function ra(e){if(!e)e=this.isUtc()?d.defaultFormatUtc:d.defaultFormat;var t=pe(this,e);return this.localeData().postformat(t)}function aa(e,t){if(this.isValid()&&(f(e)&&e.isValid()||Y(e).isValid()))return O({to:this,from:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function oa(e){return this.from(Y(),e)}function ia(e,t){if(this.isValid()&&(f(e)&&e.isValid()||Y(e).isValid()))return O({from:this,to:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function sa(e){return this.to(Y(),e)}function la(e){var t;if(e===undefined)return this._locale._abbr;else{t=Mn(e);if(t!=null)this._locale=t;return this}}d.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",d.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ua=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){if(e===undefined)return this.localeData();else return this.locale(e)});function ca(){return this._locale}var da=1e3,pa=60*da,fa=60*pa,ha=(365*400+97)*24*fa;function ma(e,t){return(e%t+t)%t}function ya(e,t,n){if(e<100&&e>=0)return new Date(e+400,t,n)-ha;else return new Date(e,t,n).valueOf()}function ga(e,t,n){if(e<100&&e>=0)return Date.UTC(e+400,t,n)-ha;else return Date.UTC(e,t,n)}function _a(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?ga:ya;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf();t-=ma(t+(this._isUTC?0:this.utcOffset()*pa),fa);break;case"minute":t=this._d.valueOf();t-=ma(t,pa);break;case"second":t=this._d.valueOf();t-=ma(t,da);break}this._d.setTime(t);d.updateOffset(this,true);return this}function va(e){var t,n;e=m(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?ga:ya;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf();t+=fa-ma(t+(this._isUTC?0:this.utcOffset()*pa),fa)-1;break;case"minute":t=this._d.valueOf();t+=pa-ma(t,pa)-1;break;case"second":t=this._d.valueOf();t+=da-ma(t,da)-1;break}this._d.setTime(t);d.updateOffset(this,true);return this}function ba(){return this._d.valueOf()-(this._offset||0)*6e4}function wa(){return Math.floor(this.valueOf()/1e3)}function Ma(){return new Date(this.valueOf())}function ka(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function xa(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function La(){return this.isValid()?this.toISOString():null}function Ta(){return U(this)}function Sa(){return V({},p(this))}function Ca(){return p(this).overflow}function Ea(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Da(e,t){var n,r,a,o=this._eras||Mn("en")._eras;for(n=0,r=o.length;n=0)return o[r]}}function Oa(e,t){var n=e.since<=e.until?+1:-1;if(t===undefined)return d(e.since).year();else return d(e.since).year()+(t-e.offset)*n}function Pa(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;eo)t=o;return Xa.call(this,e,t,n,r,a)}}function Xa(e,t,n,r,a){var o=St(e,t,n,r,a),i=Lt(o.year,0,o.dayOfYear);this.year(i.getUTCFullYear());this.month(i.getUTCMonth());this.date(i.getUTCDate());return this}function eo(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}r("N",0,0,"eraAbbr"),r("NN",0,0,"eraAbbr"),r("NNN",0,0,"eraAbbr"),r("NNNN",0,0,"eraName"),r("NNNNN",0,0,"eraNarrow"),r("y",["y",1],"yo","eraYear"),r("y",["yy",2],0,"eraYear"),r("y",["yyy",3],0,"eraYear"),r("y",["yyyy",4],0,"eraYear"),v("N",Fa),v("NN",Fa),v("NNN",Fa),v("NNNN",za),v("NNNNN",Wa),w(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,r){var a=n._locale.erasParse(e,r,n._strict);if(a)p(n).era=a;else p(n).invalidEra=e}),v("y",Ve),v("yy",Ve),v("yyy",Ve),v("yyyy",Ve),v("yo",Va),w(["y","yy","yyy","yyyy"],M),w(["yo"],function(e,t,n,r){var a;if(n._locale._eraYearOrdinalRegex)a=e.match(n._locale._eraYearOrdinalRegex);if(n._locale.eraYearOrdinalParse)t[M]=n._locale.eraYearOrdinalParse(e,a);else t[M]=parseInt(e,10)}),r(0,["gg",2],0,function(){return this.weekYear()%100}),r(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ua("gggg","weekYear"),Ua("ggggg","weekYear"),Ua("GGGG","isoWeekYear"),Ua("GGGGG","isoWeekYear"),t("weekYear","gg"),t("isoWeekYear","GG"),n("weekYear",1),n("isoWeekYear",1),v("G",Be),v("g",Be),v("GG",_,a),v("gg",_,a),v("GGGG",ze,Ae),v("gggg",ze,Ae),v("GGGGG",We,Re),v("ggggg",We,Re),Xe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,r){t[r.substr(0,2)]=g(e)}),Xe(["gg","GG"],function(e,t,n,r){t[r]=d.parseTwoDigitYear(e)}),r("Q",0,"Qo","quarter"),t("quarter","Q"),n("quarter",7),v("Q",Ne),w("Q",function(e,t){t[k]=(g(e)-1)*3}),r("D",["DD",2],"Do","date"),t("date","D"),n("date",9),v("D",_),v("DD",_,a),v("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),w(["D","DD"],x),w("Do",function(e,t){t[x]=g(e.match(_)[0])});var to=Ee("Date",true);function no(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}r("DDD",["DDDD",3],"DDDo","dayOfYear"),t("dayOfYear","DDD"),n("dayOfYear",4),v("DDD",Fe),v("DDDD",je),w(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),r("m",["mm",2],0,"minute"),t("minute","m"),n("minute",14),v("m",_),v("mm",_,a),w(["m","mm"],T);var ro=Ee("Minutes",false),ao=(r("s",["ss",2],0,"second"),t("second","s"),n("second",15),v("s",_),v("ss",_,a),w(["s","ss"],S),Ee("Seconds",false)),oo,io;for(r("S",0,0,function(){return~~(this.millisecond()/100)}),r(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),r(0,["SSS",3],0,"millisecond"),r(0,["SSSS",4],0,function(){return this.millisecond()*10}),r(0,["SSSSS",5],0,function(){return this.millisecond()*100}),r(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),r(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),r(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),r(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),t("millisecond","ms"),n("millisecond",16),v("S",Fe,Ne),v("SS",Fe,a),v("SSS",Fe,je),oo="SSSS";oo.length<=9;oo+="S")v(oo,Ve);function so(e,t){t[tt]=g(("0."+e)*1e3)}for(oo="S";oo.length<=9;oo+="S")w(oo,so);function lo(){return this._isUTC?"UTC":""}function uo(){return this._isUTC?"Coordinated Universal Time":""}io=Ee("Milliseconds",false),r("z",0,0,"zoneAbbr"),r("zz",0,0,"zoneName");var P=J.prototype;if(P.add=Ar,P.calendar=Br,P.clone=Ur,P.diff=Zr,P.endOf=va,P.format=ra,P.from=aa,P.fromNow=oa,P.to=ia,P.toNow=sa,P.get=Oe,P.invalidAt=Ca,P.isAfter=Kr,P.isBefore=Gr,P.isBetween=$r,P.isSame=qr,P.isSameOrAfter=Jr,P.isSameOrBefore=Qr,P.isValid=Ta,P.lang=ua,P.locale=la,P.localeData=ca,P.max=er,P.min=Xn,P.parsingFlags=Sa,P.set=Pe,P.startOf=_a,P.subtract=Rr,P.toArray=ka,P.toObject=xa,P.toDate=Ma,P.toISOString=ta,P.inspect=na,typeof Symbol!=="undefined"&&Symbol.for!=null)P[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};function co(e){return Y(e*1e3)}function po(){return Y.apply(null,arguments).parseZone()}function fo(e){return e}P.toJSON=La,P.toString=ea,P.unix=wa,P.valueOf=ba,P.creationData=Ea,P.eraName=Pa,P.eraNarrow=Na,P.eraAbbr=ja,P.eraYear=Aa,P.year=Mt,P.isLeapYear=kt,P.weekYear=Ka,P.isoWeekYear=Ga,P.quarter=P.quarters=eo,P.month=yt,P.daysInMonth=gt,P.week=P.weeks=Pt,P.isoWeek=P.isoWeeks=Nt,P.weeksInYear=Ja,P.weeksInWeekYear=Qa,P.isoWeeksInYear=$a,P.isoWeeksInISOWeekYear=qa,P.date=to,P.day=P.days=qt,P.weekday=Jt,P.isoWeekday=Qt,P.dayOfYear=no,P.hour=P.hours=un,P.minute=P.minutes=ro,P.second=P.seconds=ao,P.millisecond=P.milliseconds=io,P.utcOffset=_r,P.utc=br,P.local=wr,P.parseZone=Mr,P.hasAlignedHourOffset=kr,P.isDST=xr,P.isLocal=Tr,P.isUtcOffset=Sr,P.isUtc=Cr,P.isUTC=Cr,P.zoneAbbr=lo,P.zoneName=uo,P.dates=e("dates accessor is deprecated. Use date instead.",to),P.months=e("months accessor is deprecated. Use month instead",yt),P.years=e("years accessor is deprecated. Use year instead",Mt),P.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",vr),P.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Lr);var N=re.prototype;function ho(e,t,n,r){var a=Mn(),o=c().set(r,t);return a[n](o,e)}function mo(e,t,n){if(u(e)){t=e;e=undefined}e=e||"";if(t!=null)return ho(e,t,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=ho(e,r,n,"month");return a}function yo(e,t,n,r){if(typeof e==="boolean"){if(u(t)){n=t;t=undefined}t=t||""}else{t=e;n=t;e=false;if(u(t)){n=t;t=undefined}t=t||""}var a=Mn(),o=e?a._week.dow:0,i,s=[];if(n!=null)return ho(t,(n+o)%7,r,"day");for(i=0;i<7;i++)s[i]=ho(t,(i+o)%7,r,"day");return s}function go(e,t){return mo(e,t,"months")}function _o(e,t){return mo(e,t,"monthsShort")}function vo(e,t,n){return yo(e,t,n,"weekdays")}function bo(e,t,n){return yo(e,t,n,"weekdaysShort")}function wo(e,t,n){return yo(e,t,n,"weekdaysMin")}N.calendar=oe,N.longDateFormat=me,N.invalidDate=ge,N.ordinal=be,N.preparse=fo,N.postformat=fo,N.relativeTime=Me,N.pastFuture=ke,N.set=te,N.eras=Da,N.erasParse=Ya,N.erasConvertYear=Oa,N.erasAbbrRegex=Ha,N.erasNameRegex=Ra,N.erasNarrowRegex=Ia,N.months=dt,N.monthsShort=pt,N.monthsParse=ht,N.monthsRegex=vt,N.monthsShortRegex=_t,N.week=Et,N.firstDayOfYear=Ot,N.firstDayOfWeek=Yt,N.weekdays=Bt,N.weekdaysMin=Kt,N.weekdaysShort=Ut,N.weekdaysParse=$t,N.weekdaysRegex=Zt,N.weekdaysShortRegex=Xt,N.weekdaysMinRegex=en,N.isPM=sn,N.meridiem=cn,vn("en",{eras:[{since:"0001-01-01",until:+Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-Infinity,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=g(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),d.lang=e("moment.lang is deprecated. Use moment.locale instead.",vn),d.langData=e("moment.langData is deprecated. Use moment.localeData instead.",Mn);var Mo=Math.abs;function ko(){var e=this._data;this._milliseconds=Mo(this._milliseconds);this._days=Mo(this._days);this._months=Mo(this._months);e.milliseconds=Mo(e.milliseconds);e.seconds=Mo(e.seconds);e.minutes=Mo(e.minutes);e.hours=Mo(e.hours);e.months=Mo(e.months);e.years=Mo(e.years);return this}function xo(e,t,n,r){var a=O(t,n);e._milliseconds+=r*a._milliseconds;e._days+=r*a._days;e._months+=r*a._months;return e._bubble()}function Lo(e,t){return xo(this,e,t,1)}function To(e,t){return xo(this,e,t,-1)}function So(e){if(e<0)return Math.floor(e);else return Math.ceil(e)}function Co(){var e=this._milliseconds,t=this._days,n=this._months,r=this._data,a,o,i,s,l;if(!(e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0)){e+=So(Do(n)+t)*864e5;t=0;n=0}r.milliseconds=e%1e3;a=y(e/1e3);r.seconds=a%60;o=y(a/60);r.minutes=o%60;i=y(o/60);r.hours=i%24;t+=y(i/24);l=y(Eo(t));n+=l;t-=So(Do(l));s=y(n/12);n%=12;r.days=t;r.months=n;r.years=s;return this}function Eo(e){return e*4800/146097}function Do(e){return e*146097/4800}function Yo(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;e=m(e);if(e==="month"||e==="quarter"||e==="year"){t=this._days+r/864e5;n=this._months+Eo(t);switch(e){case"month":return n;case"quarter":return n/3;case"year":return n/12}}else{t=this._days+Math.round(Do(this._months));switch(e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return t*24+r/36e5;case"minute":return t*1440+r/6e4;case"second":return t*86400+r/1e3;case"millisecond":return Math.floor(t*864e5)+r;default:throw new Error("Unknown unit "+e)}}}function Oo(){if(!this.isValid())return NaN;return this._milliseconds+this._days*864e5+this._months%12*2592e6+g(this._months/12)*31536e6}function Po(e){return function(){return this.as(e)}}var No=Po("ms"),jo=Po("s"),Ao=Po("m"),Ro=Po("h"),Ho=Po("d"),Io=Po("w"),Fo=Po("M"),zo=Po("Q"),Wo=Po("y");function Vo(){return O(this)}function Bo(e){e=m(e);return this.isValid()?this[e+"s"]():NaN}function Uo(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ko=Uo("milliseconds"),Go=Uo("seconds"),$o=Uo("minutes"),qo=Uo("hours"),Jo=Uo("days"),Qo=Uo("months"),Zo=Uo("years");function Xo(){return y(this.days()/7)}var ei=Math.round,ti={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ni(e,t,n,r,a){return a.relativeTime(t||1,!!n,e,r)}function ri(e,t,n,r){var a=O(e).abs(),o=ei(a.as("s")),i=ei(a.as("m")),s=ei(a.as("h")),l=ei(a.as("d")),u=ei(a.as("M")),c=ei(a.as("w")),d=ei(a.as("y")),p=o<=n.ss&&["s",o]||o0;p[4]=r;return ni.apply(null,p)}function ai(e){if(e===undefined)return ei;if(typeof e==="function"){ei=e;return true}return false}function oi(e,t){if(ti[e]===undefined)return false;if(t===undefined)return ti[e];ti[e]=t;if(e==="s")ti.ss=t-1;return true}function ii(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=false,r=ti,a,o;if(typeof e==="object"){t=e;e=false}if(typeof e==="boolean")n=e;if(typeof t==="object"){r=Object.assign({},ti,t);if(t.s!=null&&t.ss==null)r.ss=t.s-1}a=this.localeData();o=ri(this,!n,r,a);if(n)o=a.pastFuture(+this,o);return a.postformat(o)}var si=Math.abs;function li(e){return(e>0)-(e<0)||+e}function ui(){if(!this.isValid())return this.localeData().invalidDate();var e=si(this._milliseconds)/1e3,t=si(this._days),n=si(this._months),r,a,o,i,s=this.asSeconds(),l,u,c,d;if(!s)return"P0D";r=y(e/60);a=y(r/60);e%=60;r%=60;o=y(n/12);n%=12;i=e?e.toFixed(3).replace(/\.?0+$/,""):"";l=s<0?"-":"";u=li(this._months)!==li(s)?"-":"";c=li(this._days)!==li(s)?"-":"";d=li(this._milliseconds)!==li(s)?"-":"";return l+"P"+(o?u+o+"Y":"")+(n?u+n+"M":"")+(t?c+t+"D":"")+(a||r||e?"T":"")+(a?d+a+"H":"")+(r?d+r+"M":"")+(e?d+i+"S":"")}var j=ur.prototype;return j.isValid=sr,j.abs=ko,j.add=Lo,j.subtract=To,j.as=Yo,j.asMilliseconds=No,j.asSeconds=jo,j.asMinutes=Ao,j.asHours=Ro,j.asDays=Ho,j.asWeeks=Io,j.asMonths=Fo,j.asQuarters=zo,j.asYears=Wo,j.valueOf=Oo,j._bubble=Co,j.clone=Vo,j.get=Bo,j.milliseconds=Ko,j.seconds=Go,j.minutes=$o,j.hours=qo,j.days=Jo,j.weeks=Xo,j.months=Qo,j.years=Zo,j.humanize=ii,j.toISOString=ui,j.toString=ui,j.toJSON=ui,j.locale=la,j.localeData=ca,j.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ui),j.lang=ua,r("X",0,0,"unix"),r("x",0,0,"valueOf"),v("x",Be),v("X",Ge),w("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)}),w("x",function(e,t,n){n._d=new Date(g(e))}), //! moment.js -d.version="2.29.3",H(Y),d.fn=P,d.min=nr,d.max=rr,d.now=ar,d.utc=c,d.unix=co,d.months=go,d.isDate=z,d.locale=vn,d.invalid=K,d.duration=O,d.isMoment=f,d.weekdays=vo,d.parseZone=po,d.localeData=Mn,d.isDuration=cr,d.monthsShort=_o,d.weekdaysMin=wo,d.defineLocale=bn,d.updateLocale=wn,d.locales=kn,d.weekdaysShort=bo,d.normalizeUnits=m,d.relativeTimeRounding=ai,d.relativeTimeThreshold=oi,d.calendarFormat=Vr,d.prototype=P,d.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},d}()}.call(this,pi(92)(e))},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(298)},function(e,t,n){"use strict";function l(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function u(t){this.setState(function(e){return null!=(e=this.constructor.getDerivedStateFromProps(t,e))?e:null}.bind(this))}function c(e,t){try{var n=this.props,r=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}function r(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n,r,a=null,o=null,i=null;if("function"==typeof t.componentWillMount?a="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(a="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?o="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(o="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?i="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(i="UNSAFE_componentWillUpdate"),null!==a||null!==o||null!==i)throw n=e.displayName||e.name,r="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()",Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+n+" uses "+r+" but also contains the following legacy lifecycles:"+(null!==a?"\n "+a:"")+(null!==o?"\n "+o:"")+(null!==i?"\n "+i:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks");if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=l,t.componentWillReceiveProps=u),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=c;var s=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){n=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;s.call(this,e,t,n)}}return e}n.r(t),n.d(t,"polyfill",function(){return r}),c.__suppressDeprecationWarning=u.__suppressDeprecationWarning=l.__suppressDeprecationWarning=!0},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(323)),a=i(n(339)),o="function"==typeof a.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":typeof e};function i(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof a.default&&"symbol"===o(r.default)?function(e){return void 0===e?"undefined":o(e)}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":void 0===e?"undefined":o(e)}},function(e,pt,ft){"use strict";!function(e){ft.d(pt,"b",function(){return dt}),ft.d(pt,"a",function(){return tt});var t=ft(68),t=ft.n(t),n=ft(245),n=ft.n(n),d=ft(1),y=ft.n(d),A=ft(246),R=ft(32),H=ft(69),I=ft(247),F=ft(250),z=function(e,t){for(var n=[e[0]],r=0,a=t.length;r"+n()+""}}function ce(n,r){return function(){(e={})[m]=oe(r),e[b]="4.4.1";var e,t=M();return t&&(e.nonce=t),y.a.createElement("style",g({},e,{dangerouslySetInnerHTML:{__html:n()}}))}}function de(e){return function(){return Object.keys(e)}}function pe(e,t){return e.createTextNode(se(t))}function fe(e,t,n,r,a){return w&&!n?(n=me(e,t,r),($?ge:ye)(n,a)):_e()}function he(e,t,n){for(var r=0,a=n.length;r>>16)&65535)<<16),r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16)^1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16),n-=4,++a;switch(n){case 3:r^=(255&e.charCodeAt(a+2))<<16;case 2:r^=(255&e.charCodeAt(a+1))<<8;case 1:r=1540483477*(65535&(r^=255&e.charCodeAt(a)))+((1540483477*(r>>>16)&65535)<<16)}return((r=1540483477*(65535&(r^=r>>>13))+((1540483477*(r>>>16)&65535)<<16))^r>>>15)>>>0}var E=52,Oe=function(e){return String.fromCharCode(e+(25<+~=|^:(),"'`-]+/g,Ie=/(^-|-$)/g;function Fe(e){return e.replace(He,"-").replace(Ie,"")}function Y(e){return"string"==typeof e&&!0}var ze={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},We={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Ve=((t={})[R.ForwardRef]={$$typeof:!0,render:!0},t),Be=Object.defineProperty,Ue=Object.getOwnPropertyNames,n=Object.getOwnPropertySymbols,Ke=void 0===n?function(){return[]}:n,Ge=Object.getOwnPropertyDescriptor,$e=Object.getPrototypeOf,qe=Object.prototype,Je=Array.prototype;function Qe(e,t,n){if("string"!=typeof t)for(var r,a,o=$e(t),i=(o&&o!==qe&&Qe(e,o,n),Je.concat(Ue(t),Ke(t))),s=Ve[e.$$typeof]||ze,l=Ve[t.$$typeof]||ze,u=i.length;u--;)if(a=i[u],!(We[a]||n&&n[a]||l&&l[a]||s&&s[a])&&(r=Ge(t,a)))try{Be(e,a,r)}catch(e){}}var Ze,Xe=Object(d.createContext)(),et=Xe.Consumer,tt=(Ze=d.Component,u(O,Ze),O.prototype.render=function(){return this.props.children?y.a.createElement(Xe.Consumer,null,this.renderInner):null},O.prototype.renderInner=function(e){e=this.getContext(this.props.theme,e);return y.a.createElement(Xe.Provider,{value:e},this.props.children)},O.prototype.getTheme=function(e,t){if(h(e))return e(t);if(null===e||Array.isArray(e)||"object"!==(void 0===e?"undefined":W(e)))throw new i(8);return g({},t,e)},O.prototype.getContext=function(e,t){return this.getTheme(e,t)},O);function O(e){l(this,O);e=c(this,Ze.call(this,e));return e.getContext=Object(H.a)(e.getContext.bind(e)),e.renderInner=e.renderInner.bind(e),e}var nt,rt=Object(d.createContext)(),at=rt.Consumer;nt=d.Component,u(P,nt),P.prototype.getContext=function(e,t){if(e)return e;if(t)return new T(t);throw new i(4)},P.prototype.render=function(){var e=this.props,t=e.children,n=e.sheet,e=e.target;return y.a.createElement(rt.Provider,{value:this.getContext(n,e)},t)};function P(e){l(this,P);e=c(this,nt.call(this,e));return e.getContext=Object(H.a)(e.getContext),e}var ot={};it=d.Component,u(N,it),N.prototype.render=function(){return y.a.createElement(at,null,this.renderOuter)},N.prototype.renderOuter=function(){var e=0=t?e:""+Array(t+1-r.length).join(n)+e},t={s:o,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),a=n%60;return(t<=0?"+":"-")+o(r,2,"0")+":"+o(a,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var s=t.name;x[s]=t,a=s}return!r&&a&&(k=a),a||!r&&k},L=function(e,t){if(r(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new s(n)},T=t,s=(T.l=a,T.i=r,T.w=function(e,t){return L(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})},function(){function e(e){this.$L=a(e.locale,null,!0),this.parse(e)}var t=e.prototype;return t.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(i);if(r){var a=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},t.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},t.$utils=function(){return T},t.isValid=function(){return!(this.$d.toString()===w)},t.isSame=function(e,t){var n=L(e);return this.startOf(t)<=n&&n<=this.endOf(t)},t.isAfter=function(e,t){return L(e)"+n()+""}}function ce(n,r){return function(){(e={})[m]=oe(r),e[b]="4.4.1";var e,t=M();return t&&(e.nonce=t),y.a.createElement("style",g({},e,{dangerouslySetInnerHTML:{__html:n()}}))}}function de(e){return function(){return Object.keys(e)}}function pe(e,t){return e.createTextNode(se(t))}function fe(e,t,n,r,a){return w&&!n?(n=me(e,t,r),($?ge:ye)(n,a)):_e()}function he(e,t,n){for(var r=0,a=n.length;r>>16)&65535)<<16),r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16)^1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16),n-=4,++a;switch(n){case 3:r^=(255&e.charCodeAt(a+2))<<16;case 2:r^=(255&e.charCodeAt(a+1))<<8;case 1:r=1540483477*(65535&(r^=255&e.charCodeAt(a)))+((1540483477*(r>>>16)&65535)<<16)}return((r=1540483477*(65535&(r^=r>>>13))+((1540483477*(r>>>16)&65535)<<16))^r>>>15)>>>0}var E=52,Oe=function(e){return String.fromCharCode(e+(25<+~=|^:(),"'`-]+/g,Ie=/(^-|-$)/g;function Fe(e){return e.replace(He,"-").replace(Ie,"")}function Y(e){return"string"==typeof e&&!0}var ze={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},We={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Ve=((t={})[R.ForwardRef]={$$typeof:!0,render:!0},t),Be=Object.defineProperty,Ue=Object.getOwnPropertyNames,n=Object.getOwnPropertySymbols,Ke=void 0===n?function(){return[]}:n,Ge=Object.getOwnPropertyDescriptor,$e=Object.getPrototypeOf,qe=Object.prototype,Je=Array.prototype;function Qe(e,t,n){if("string"!=typeof t)for(var r,a,o=$e(t),i=(o&&o!==qe&&Qe(e,o,n),Je.concat(Ue(t),Ke(t))),s=Ve[e.$$typeof]||ze,l=Ve[t.$$typeof]||ze,u=i.length;u--;)if(a=i[u],!(We[a]||n&&n[a]||l&&l[a]||s&&s[a])&&(r=Ge(t,a)))try{Be(e,a,r)}catch(e){}}var Ze,Xe=Object(d.createContext)(),et=Xe.Consumer,tt=(Ze=d.Component,u(O,Ze),O.prototype.render=function(){return this.props.children?y.a.createElement(Xe.Consumer,null,this.renderInner):null},O.prototype.renderInner=function(e){e=this.getContext(this.props.theme,e);return y.a.createElement(Xe.Provider,{value:e},this.props.children)},O.prototype.getTheme=function(e,t){if(h(e))return e(t);if(null===e||Array.isArray(e)||"object"!==(void 0===e?"undefined":W(e)))throw new i(8);return g({},t,e)},O.prototype.getContext=function(e,t){return this.getTheme(e,t)},O);function O(e){l(this,O);e=c(this,Ze.call(this,e));return e.getContext=Object(H.a)(e.getContext.bind(e)),e.renderInner=e.renderInner.bind(e),e}var nt,rt=Object(d.createContext)(),at=rt.Consumer;nt=d.Component,u(P,nt),P.prototype.getContext=function(e,t){if(e)return e;if(t)return new T(t);throw new i(4)},P.prototype.render=function(){var e=this.props,t=e.children,n=e.sheet,e=e.target;return y.a.createElement(rt.Provider,{value:this.getContext(n,e)},t)};function P(e){l(this,P);e=c(this,nt.call(this,e));return e.getContext=Object(H.a)(e.getContext),e}var ot={};it=d.Component,u(N,it),N.prototype.render=function(){return y.a.createElement(at,null,this.renderOuter)},N.prototype.renderOuter=function(){var e=0e.length)&&(n=e.length),n-=t.length,-1!==(e=e.indexOf(t,n))&&e===n},toArray:function(e){if(!e)return null;var t=e.length;if(u(t))return null;for(var n=new Array(t);0=t?e:""+Array(t+1-r.length).join(n)+e},t={s:o,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),a=n%60;return(t<=0?"+":"-")+o(r,2,"0")+":"+o(a,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var s=t.name;x[s]=t,a=s}return!r&&a&&(k=a),a||!r&&k},L=function(e,t){if(r(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new s(n)},T=t,s=(T.l=a,T.i=r,T.w=function(e,t){return L(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})},function(){function e(e){this.$L=a(e.locale,null,!0),this.parse(e)}var t=e.prototype;return t.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(i);if(r){var a=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},t.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},t.$utils=function(){return T},t.isValid=function(){return!(this.$d.toString()===w)},t.isSame=function(e,t){var n=L(e);return this.startOf(t)<=n&&n<=this.endOf(t)},t.isAfter=function(e,t){return L(e) @@ -19,12 +19,12 @@ d.version="2.29.3",H(Y),d.fn=P,d.min=nr,d.max=rr,d.now=ar,d.utc=c,d.unix=co,d.mo * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */!function(){var zo,Wo="Expected a function",_i="__lodash_hash_undefined__",vi="__lodash_placeholder__",Vo=128,Bo=9007199254740991,bi=NaN,Uo=4294967295,wi=[["ary",Vo],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],Ko="[object Arguments]",Mi="[object Array]",Go="[object Boolean]",$o="[object Date]",ki="[object Error]",xi="[object Function]",Li="[object GeneratorFunction]",qo="[object Map]",Jo="[object Number]",Qo="[object Object]",Ti="[object Promise]",Zo="[object RegExp]",Xo="[object Set]",ei="[object String]",Si="[object Symbol]",ti="[object WeakMap]",ni="[object ArrayBuffer]",ri="[object DataView]",Ci="[object Float32Array]",Ei="[object Float64Array]",Di="[object Int8Array]",Yi="[object Int16Array]",Oi="[object Int32Array]",Pi="[object Uint8Array]",Ni="[object Uint8ClampedArray]",ji="[object Uint16Array]",Ai="[object Uint32Array]",Ri=/\b__p \+= '';/g,Hi=/\b(__p \+=) '' \+/g,Ii=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Fi=/&(?:amp|lt|gt|quot|#39);/g,zi=/[&<>"']/g,Wi=RegExp(Fi.source),Vi=RegExp(zi.source),Bi=/<%-([\s\S]+?)%>/g,Ui=/<%([\s\S]+?)%>/g,Ki=/<%=([\s\S]+?)%>/g,Gi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$i=/^\w*$/,qi=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ji=/[\\^$.*+?()[\]{}|]/g,Qi=RegExp(Ji.source),Zi=/^\s+/,o=/\s/,Xi=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,es=/\{\n\/\* \[wrapped with (.+)\] \*/,ts=/,? & /,ns=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,rs=/[()=,{}\[\]\/\s]/,as=/\\(\\)?/g,os=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,is=/\w*$/,ss=/^[-+]0x[0-9a-f]+$/i,ls=/^0b[01]+$/i,us=/^\[object .+?Constructor\]$/,cs=/^0o[0-7]+$/i,ds=/^(?:0|[1-9]\d*)$/,ps=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,fs=/($^)/,hs=/['\n\r\u2028\u2029\\]/g,i="\\ud800-\\udfff",s="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",e="\\u2700-\\u27bf",t="a-z\\xdf-\\xf6\\xf8-\\xff",n="A-Z\\xc0-\\xd6\\xd8-\\xde",l="\\ufe0e\\ufe0f",r="\\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",u="['’]",a="["+i+"]",c="["+r+"]",d="["+s+"]",p="["+e+"]",f="["+t+"]",r="[^"+i+r+"\\d+"+e+t+n+"]",e="\\ud83c[\\udffb-\\udfff]",t="[^"+i+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",n="["+n+"]",y="\\u200d",g="(?:"+f+"|"+r+")",r="(?:"+n+"|"+r+")",_="(?:['’](?:d|ll|m|re|s|t|ve))?",v="(?:['’](?:D|LL|M|RE|S|T|VE))?",b="(?:"+d+"|"+e+")"+"?",w="["+l+"]?",w=w+b+("(?:"+y+"(?:"+[t,h,m].join("|")+")"+w+b+")*"),b="(?:"+[p,h,m].join("|")+")"+w,p="(?:"+[t+d+"?",d,h,m,a].join("|")+")",ms=RegExp(u,"g"),ys=RegExp(d,"g"),M=RegExp(e+"(?="+e+")|"+p+w,"g"),gs=RegExp([n+"?"+f+"+"+_+"(?="+[c,n,"$"].join("|")+")",r+"+"+v+"(?="+[c,n+g,"$"].join("|")+")",n+"?"+g+"+"+_,n+"+"+v,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])","\\d+",b].join("|"),"g"),k=RegExp("["+y+i+s+l+"]"),_s=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,vs=["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"],bs=-1,ai={},oi=(ai[Ci]=ai[Ei]=ai[Di]=ai[Yi]=ai[Oi]=ai[Pi]=ai[Ni]=ai[ji]=ai[Ai]=!0,ai[Ko]=ai[Mi]=ai[ni]=ai[Go]=ai[ri]=ai[$o]=ai[ki]=ai[xi]=ai[qo]=ai[Jo]=ai[Qo]=ai[Zo]=ai[Xo]=ai[ei]=ai[ti]=!1,{}),x=(oi[Ko]=oi[Mi]=oi[ni]=oi[ri]=oi[Go]=oi[$o]=oi[Ci]=oi[Ei]=oi[Di]=oi[Yi]=oi[Oi]=oi[qo]=oi[Jo]=oi[Qo]=oi[Zo]=oi[Xo]=oi[ei]=oi[Si]=oi[Pi]=oi[Ni]=oi[ji]=oi[Ai]=!0,oi[ki]=oi[xi]=oi[ti]=!1,{"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"}),ws=parseFloat,Ms=parseInt,t="object"==typeof E&&E&&E.Object===Object&&E,h="object"==typeof self&&self&&self.Object===Object&&self,ii=t||h||Function("return this")(),m=O&&!O.nodeType&&O,L=m&&"object"==typeof D&&D&&!D.nodeType&&D,ks=L&&L.exports===m,T=ks&&t.process,a=function(){try{var e=L&&L.require&&L.require("util").types;return e?e:T&&T.binding&&T.binding("util")}catch(e){}}(),xs=a&&a.isArrayBuffer,Ls=a&&a.isDate,Ts=a&&a.isMap,Ss=a&&a.isRegExp,Cs=a&&a.isSet,Es=a&&a.isTypedArray;function si(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ds(e,t,n,r){for(var a=-1,o=null==e?0:e.length;++a":">",'"':""","'":"'"});function el(e){return"\\"+x[e]}function hi(e){return k.test(e)}function tl(e){var n=-1,r=Array(e.size);return e.forEach(function(e,t){r[++n]=[t,e]}),r}function nl(t,n){return function(e){return t(n(e))}}function mi(e,t){for(var n=-1,r=e.length,a=0,o=[];++n",""":'"',"'":"'"});var il=function a(e){var M=(e=null==e?ii:il.defaults(ii.Object(),e,il.pick(ii,vs))).Array,o=e.Date,O=e.Error,P=e.Function,N=e.Math,m=e.Object,j=e.RegExp,W=e.String,_=e.TypeError,V=M.prototype,B=P.prototype,U=m.prototype,K=e["__core-js_shared__"],G=B.toString,A=U.hasOwnProperty,$=0,q=(B=/[^.]+$/.exec(K&&K.keys&&K.keys.IE_PROTO||""))?"Symbol(src)_1."+B:"",J=U.toString,Q=G.call(m),Z=ii._,X=j("^"+G.call(A).replace(Ji,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),B=ks?e.Buffer:zo,t=e.Symbol,ee=e.Uint8Array,te=B?B.allocUnsafe:zo,ne=nl(m.getPrototypeOf,m),re=m.create,ae=U.propertyIsEnumerable,oe=V.splice,ie=t?t.isConcatSpreadable:zo,se=t?t.iterator:zo,le=t?t.toStringTag:zo,ue=function(){try{var e=Zn(m,"defineProperty");return e({},"",{}),e}catch(e){}}(),ce=e.clearTimeout!==ii.clearTimeout&&e.clearTimeout,de=o&&o.now!==ii.Date.now&&o.now,pe=e.setTimeout!==ii.setTimeout&&e.setTimeout,fe=N.ceil,he=N.floor,me=m.getOwnPropertySymbols,B=B?B.isBuffer:zo,ye=e.isFinite,ge=V.join,_e=nl(m.keys,m),v=N.max,k=N.min,ve=o.now,be=e.parseInt,we=N.random,Me=V.reverse,o=Zn(e,"DataView"),ke=Zn(e,"Map"),xe=Zn(e,"Promise"),Le=Zn(e,"Set"),e=Zn(e,"WeakMap"),Te=Zn(m,"create"),Se=e&&new e,Ce={},Ee=kr(o),De=kr(ke),Ye=kr(xe),Oe=kr(Le),Pe=kr(e),t=t?t.prototype:zo,Ne=t?t.valueOf:zo,je=t?t.toString:zo;function h(e){if(z(e)&&!F(e)&&!(e instanceof g)){if(e instanceof y)return e;if(A.call(e,"__wrapped__"))return xr(e)}return new y(e)}var Ae=function(e){if(!L(e))return{};if(re)return re(e);Re.prototype=e;e=new Re;return Re.prototype=zo,e};function Re(){}function He(){}function y(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=zo}function g(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Uo,this.__views__=[]}function Ie(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t>>0,t>>>=0,M(a));++r>>1,i=e[o];null!==i&&!T(i)&&(n?i<=t:i>>0)?(e=f(e))&&("string"==typeof t||null!=t&&!Sa(t))&&!(t=u(t))&&hi(e)?ln(gi(e),0,n):e.split(t,n):[]},h.spread=function(n,r){if("function"!=typeof n)throw new _(Wo);return r=null==r?0:v(S(r),0),i(function(e){var t=e[r],e=ln(e,0,r);return t&&di(e,t),si(n,this,e)})},h.tail=function(e){var t=null==e?0:e.length;return t?s(e,1,t):[]},h.take=function(e,t,n){return e&&e.length?s(e,0,(t=n||t===zo?1:S(t))<0?0:t):[]},h.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?s(e,(t=r-(t=n||t===zo?1:S(t)))<0?0:t,r):[]},h.takeRightWhile=function(e,t){return e&&e.length?Xt(e,d(t,3),!1,!0):[]},h.takeWhile=function(e,t){return e&&e.length?Xt(e,d(t,3)):[]},h.tap=function(e,t){return t(e),e},h.throttle=function(e,t,n){var r=!0,a=!0;if("function"!=typeof e)throw new _(Wo);return L(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),la(e,t,{leading:r,maxWait:t,trailing:a})},h.thru=Br,h.toArray=Pa,h.toPairs=eo,h.toPairsIn=to,h.toPath=function(e){return F(e)?ci(e,Mr):T(e)?[e]:x(wr(f(e)))},h.toPlainObject=Aa,h.transform=function(e,r,a){var t,n=F(e),o=n||va(e)||Da(e);return r=d(r,4),null==a&&(t=e&&e.constructor,a=o?n?new t:[]:L(e)&&wa(t)?Ae(ne(e)):{}),(o?li:dt)(e,function(e,t,n){return r(a,e,t,n)}),a},h.unary=function(e){return aa(e,1)},h.union=Or,h.unionBy=Pr,h.unionWith=Nr,h.uniq=function(e){return e&&e.length?Jt(e):[]},h.uniqBy=function(e,t){return e&&e.length?Jt(e,d(t,2)):[]},h.uniqWith=function(e,t){return t="function"==typeof t?t:zo,e&&e.length?Jt(e,zo,t):[]},h.unset=function(e,t){return null==e||Qt(e,t)},h.unzip=jr,h.unzipWith=Ar,h.update=function(e,t,n){return null==e?e:Zt(e,t,an(n))},h.updateWith=function(e,t,n,r){return r="function"==typeof r?r:zo,null==e?e:Zt(e,t,an(n),r)},h.values=no,h.valuesIn=function(e){return null==e?[]:$s(e,D(e))},h.without=Rr,h.words=ho,h.wrap=function(e,t){return pa(an(t),e)},h.xor=Hr,h.xorBy=Ir,h.xorWith=Fr,h.zip=zr,h.zipObject=function(e,t){return nn(e||[],t||[],$e)},h.zipObjectDeep=function(e,t){return nn(e||[],t||[],Wt)},h.zipWith=Wr,h.entries=eo,h.entriesIn=to,h.extend=Ha,h.extendWith=Ia,ko(h,h),h.add=Po,h.attempt=mo,h.camelCase=ro,h.capitalize=ao,h.ceil=No,h.clamp=function(e,t,n){return n===zo&&(n=t,t=zo),n!==zo&&(n=(n=C(n))==n?n:0),t!==zo&&(t=(t=C(t))==t?t:0),et(C(e),t,n)},h.clone=function(e){return b(e,4)},h.cloneDeep=function(e){return b(e,5)},h.cloneDeepWith=function(e,t){return b(e,5,t="function"==typeof t?t:zo)},h.cloneWith=function(e,t){return b(e,4,t="function"==typeof t?t:zo)},h.conformsTo=function(e,t){return null==t||tt(e,t,E(t))},h.deburr=oo,h.defaultTo=function(e,t){return null==e||e!=e?t:e},h.divide=jo,h.endsWith=function(e,t,n){e=f(e),t=u(t);var r=e.length,r=n=n===zo?r:et(S(n),0,r);return 0<=(n-=t.length)&&e.slice(n,r)==t},h.eq=I,h.escape=function(e){return(e=f(e))&&Vi.test(e)?e.replace(zi,Xs):e},h.escapeRegExp=function(e){return(e=f(e))&&Qi.test(e)?e.replace(Ji,"\\$&"):e},h.every=function(e,t,n){return(F(e)?Os:it)(e,d(t=n&&p(e,t,n)?zo:t,3))},h.find=Gr,h.findIndex=Lr,h.findKey=function(e,t){return Hs(e,d(t,3),dt)},h.findLast=$r,h.findLastIndex=Tr,h.findLastKey=function(e,t){return Hs(e,d(t,3),pt)},h.floor=Ao,h.forEach=qr,h.forEachRight=Jr,h.forIn=function(e,t){return null==e?e:ut(e,d(t,3),D)},h.forInRight=function(e,t){return null==e?e:ct(e,d(t,3),D)},h.forOwn=function(e,t){return e&&dt(e,d(t,3))},h.forOwnRight=function(e,t){return e&&pt(e,d(t,3))},h.get=Ba,h.gt=ma,h.gte=ya,h.has=function(e,t){return null!=e&&tr(e,t,gt)},h.hasIn=Ua,h.head=Cr,h.identity=Y,h.includes=function(e,t,n,r){return e=c(e)?e:no(e),n=n&&!r?S(n):0,r=e.length,n<0&&(n=v(r+n,0)),Ea(e)?n<=r&&-1=k(t=t,n=n)&&e=this.__values__.length;return{done:e,value:e?zo:this.__values__[this.__index__++]}},h.prototype.plant=function(e){for(var t,n=this;n instanceof He;)var r=xr(n),a=(r.__index__=0,r.__values__=zo,t?a.__wrapped__=r:t=r,r),n=n.__wrapped__;return a.__wrapped__=e,t},h.prototype.reverse=function(){var e=this.__wrapped__;return e instanceof g?(e=e,(e=(e=this.__actions__.length?new g(this):e).reverse()).__actions__.push({func:Br,args:[Yr],thisArg:zo}),new y(e,this.__chain__)):this.thru(Yr)},h.prototype.toJSON=h.prototype.valueOf=h.prototype.value=function(){return en(this.__wrapped__,this.__actions__)},h.prototype.first=h.prototype.head,se&&(h.prototype[se]=function(){return this}),h}();ii._=il,(Y=function(){return il}.call(O,P,O,D))!==zo&&(D.exports=Y)}.call(this)}.call(this,P(228),P(92)(e))},function(e,t,n){var r=n(34),a=n(81),o=n(52),i=Object.defineProperty;t.f=n(21)?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),a)try{return i(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,n){function m(e,t,n){var r,a,o,i=e&m.F,s=e&m.G,l=e&m.S,u=e&m.P,c=e&m.B,d=e&m.W,p=s?g:g[t]||(g[t]={}),f=p[w],h=s?y:l?y[t]:(y[t]||{})[w];for(r in n=s?t:n)(a=!i&&h&&void 0!==h[r])&&b(p,r)||(o=(a?h:n)[r],p[r]=s&&"function"!=typeof h[r]?n[r]:c&&a?_(o,y):d&&h[r]==o?function(r){function e(e,t,n){if(this instanceof r){switch(arguments.length){case 0:return new r;case 1:return new r(e);case 2:return new r(e,t)}return new r(e,t,n)}return r.apply(this,arguments)}return e[w]=r[w],e}(o):u&&"function"==typeof o?_(Function.call,o):o,u&&((p.virtual||(p.virtual={}))[r]=o,e&m.R&&f&&!f[r]&&v(f,r,o)))}var y=n(19),g=n(20),_=n(80),v=n(27),b=n(24),w="prototype";m.F=1,m.G=2,m.S=4,m.P=8,m.B=16,m.W=32,m.U=64,m.R=128,e.exports=m},function(e,t,n){var r=n(23),a=n(39);e.exports=n(21)?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(85),a=n(51);e.exports=function(e){return r(a(e))}},function(e,t,n){var r=n(56)("wks"),a=n(41),o=n(19).Symbol,i="function"==typeof o;(e.exports=function(e){return r[e]||(r[e]=i&&o[e]||(i?o:a)("Symbol."+e))}).store=r},function(e,t,n){"use strict";var r=n(25),o=(Object.defineProperty(t,"__esModule",{value:!0}),t.format=function(){for(var e=arguments.length,t=new Array(e),n=0;ndocument.F=Object<\/script>"),e.close(),u=e.F;t--;)delete u[l][i[t]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(r[l]=a(e),n=new r,r[l]=null,n[s]=e):n=u(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(56)("keys"),a=n(41);e.exports=function(e){return r[e]||(r[e]=a(e))}},function(e,t,n){var r=n(20),a=n(19),o="__core-js_shared__",i=a[o]||(a[o]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(38)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(23).f,a=n(24),o=n(30)("toStringTag");e.exports=function(e,t,n){e&&!a(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){var r=n(51);e.exports=function(e){return Object(r(e))}},function(e,t,n){t.f=n(30)},function(e,t,n){var r=n(19),a=n(20),o=n(38),i=n(60),s=n(23).f;e.exports=function(e){var t=a.Symbol||(a.Symbol=!o&&r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){n=n(371)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},function(t,e){function n(e){return t.exports=n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t.exports.__esModule=!0,t.exports.default=t.exports,n(e)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(e,t){function l(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}e.exports=function(s){return function(){var e=this,i=arguments;return new Promise(function(t,n){var r=s.apply(e,i);function a(e){l(r,t,n,a,o,"next",e)}function o(e){l(r,t,n,a,o,"throw",e)}a(void 0)})}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,n){"use strict";var r=n(233),a=n(234);n(73);t.default={enUS:r.a,zhCN:a.a}},function(e,t,n){e.exports=function s(e){"use strict";var he=/^\0+/g,N=/[\0\r\f]/g,l=/: */g,u=/zoo|gra/,c=/([,: ])(transform)/g,d=/,+\s*(?![^(]*[)])/g,p=/ +\s*(?![^(]*[)])/g,me=/ *[\0] */g,h=/,\r+?/g,i=/([\t\r\n ])*\f?&/g,m=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,y=/\W+/g,ye=/@(k\w+)\s*(\S*)\s*/,ge=/::(place)/g,_e=/:(read-only)/g,g=/\s+(?=[{\];=:>])/g,_=/([[}=:>])\s+/g,v=/(\{[^{]+?);(?=\})/g,b=/\s{2,}/g,ve=/([^\(])(:+) */g,w=/[svh]\w+-[tblr]{2}/,be=/\(\s*(.*)\s*\)/g,r=/([\s\S]*?);/g,M=/-self|flex-/g,o=/[^]*?(:[rp][el]a[\w-]+)[^]*/,k=/stretch|:\s*\w+\-(?:conte|avail)/,x=/([^-])(image-set\()/,j="-webkit-",A="-moz-",R="-ms-",H=59,I=125,F=123,z=40,W=41,V=91,we=93,B=10,U=13,K=9,G=64,$=32,Me=38,q=45,L=95,J=42,Q=44,Z=58,X=39,ee=34,te=47,ne=62,re=43,ke=126,xe=0,Le=12,Te=11,Se=107,Ce=109,Ee=115,De=112,Ye=111,Oe=105,Pe=99,Ne=100,je=112,ae=1,oe=1,ie=0,se=1,le=1,Ae=1,T=0,Re=0,He=0,Ie=[],S=[],ue=0,C=null,E=-2,D=-1,Fe=0,ze=1,We=2,Ve=3,Be=0,ce=1,Ue="",de="",pe="";function Ke(e,t,n,r,a){for(var o,i,s=0,l=0,u=0,c=0,d=0,p=0,f=0,h=0,m=0,y=0,g=0,_=0,v=0,b=0,w=0,M=0,k=0,x=0,L=0,T=n.length,S=T-1,C="",E="",D="",Y="",O="",P="";w0)E=E.replace(N,"");if(E.trim().length>0){switch(f){case $:case K:case H:case U:case B:break;default:E+=n.charAt(w)}f=H}}if(1===k)switch(f){case F:case I:case H:case ee:case X:case z:case W:case Q:k=0;case K:case U:case B:case $:break;default:for(k=0,L=w,d=f,w--,f=H;L0)++w,f=d;case F:L=T}}switch(f){case F:for(d=(E=E.trim()).charCodeAt(0),g=1,L=++w;w0)E=E.replace(N,"");switch(p=E.charCodeAt(1)){case Ne:case Ce:case Ee:case q:o=t;break;default:o=Ie}if(L=(D=Ke(t,o,D,p,a+1)).length,He>0&&0===L)L=E.length;if(ue>0)if(o=Ge(Ie,E,x),i=fe(Ve,D,o,t,oe,ae,L,p,a,r),E=o.join(""),void 0!==i)if(0===(L=(D=i.trim()).length))p=0,D="";if(L>0)switch(p){case Ee:E=E.replace(be,Je);case Ne:case Ce:case q:D=E+"{"+D+"}";break;case Se:if(D=(E=E.replace(ye,"$1 $2"+(ce>0?Ue:"")))+"{"+D+"}",1===le||2===le&&qe("@"+D,3))D="@"+j+D+"@"+D;else D="@"+D;break;default:if(D=E+D,r===je)Y+=D,D=""}else D="";break;default:D=Ke(t,Ge(t,E,x),D,r,a+1)}O+=D,_=0,k=0,b=0,M=0,x=0,v=0,E="",D="",f=n.charCodeAt(++w);break;case I:case H:if((L=(E=(M>0?E.replace(N,""):E).trim()).length)>1){if(0===b)if((d=E.charCodeAt(0))===q||d>96&&d<123)L=(E=E.replace(" ",":")).length;if(ue>0)if(void 0!==(i=fe(ze,E,t,e,oe,ae,Y.length,r,a,r)))if(0===(L=(E=i.trim()).length))E="\0\0";switch(d=E.charCodeAt(0),p=E.charCodeAt(1),d){case xe:break;case G:if(p===Oe||p===Pe){P+=E+n.charAt(w);break}default:if(E.charCodeAt(L-1)===Z)break;Y+=$e(E,d,p,E.charCodeAt(2))}}_=0,k=0,b=0,M=0,x=0,E="",f=n.charCodeAt(++w)}}switch(f){case U:case B:if(l+c+u+s+Re===0)switch(y){case W:case X:case ee:case G:case ke:case ne:case J:case re:case te:case q:case Z:case Q:case H:case F:case I:break;default:if(b>0)k=1}if(l===te)l=0;else if(se+_===0&&r!==Se&&E.length>0)M=1,E+="\0";if(ue*Be>0)fe(Fe,E,t,e,oe,ae,Y.length,r,a,r);ae=1,oe++;break;case H:case I:if(l+c+u+s===0){ae++;break}default:switch(ae++,C=n.charAt(w),f){case K:case $:if(c+s+l===0)switch(h){case Q:case Z:case K:case $:C="";break;default:if(f!==$)C=" "}break;case xe:C="\\0";break;case Le:C="\\f";break;case Te:C="\\v";break;case Me:if(c+l+s===0&&se>0)x=1,M=1,C="\f"+C;break;case 108:if(c+l+s+ie===0&&b>0)switch(w-b){case 2:if(h===De&&n.charCodeAt(w-3)===Z)ie=h;case 8:if(m===Ye)ie=m}break;case Z:if(c+l+s===0)b=w;break;case Q:if(l+u+c+s===0)M=1,C+="\r";break;case ee:case X:if(0===l)c=c===f?0:0===c?f:c;break;case V:if(c+l+u===0)s++;break;case we:if(c+l+u===0)s--;break;case W:if(c+l+s===0)u--;break;case z:if(c+l+s===0){if(0===_)switch(2*h+3*m){case 533:break;default:g=0,_=1}u++}break;case G:if(l+u+c+s+b+v===0)v=1;break;case J:case te:if(c+s+u>0)break;switch(l){case 0:switch(2*f+3*n.charCodeAt(w+1)){case 235:l=te;break;case 220:L=w,l=J}break;case J:if(f===te&&h===J&&L+2!==w){if(33===n.charCodeAt(L+2))Y+=n.substring(L,w+1);C="",l=0}}}if(0===l){if(se+c+s+v===0&&r!==Se&&f!==H)switch(f){case Q:case ke:case ne:case re:case W:case z:if(0===_){switch(h){case K:case $:case B:case U:C+="\0";break;default:C="\0"+C+(f===Q?"":"\0")}M=1}else switch(f){case z:if(b+7===w&&108===h)b=0;_=++g;break;case W:if(0==(_=--g))M=1,C+="\0"}break;case K:case $:switch(h){case xe:case F:case I:case H:case Q:case Le:case K:case $:case B:case U:break;default:if(0===_)M=1,C+="\0"}}if(E+=C,f!==$&&f!==K)y=f}}m=h,h=f,w++}if(L=Y.length,He>0)if(0===L&&0===O.length&&0===t[0].length==false)if(r!==Ce||1===t.length&&(se>0?de:pe)===t[0])L=t.join(",").length+2;if(L>0){if(o=0===se&&r!==Se?function(e){for(var t,n,r=0,a=e.length,o=Array(a);r1)continue;if(c=s.charCodeAt(s.length-1),d=n.charCodeAt(0),t="",0!==l)switch(c){case J:case ke:case ne:case re:case $:case z:break;default:t=" "}switch(d){case Me:n=t+de;case ke:case ne:case re:case $:case W:case z:break;case V:n=t+n+de;break;case Z:switch(2*n.charCodeAt(1)+3*n.charCodeAt(2)){case 530:if(Ae>0){n=t+n.substring(8,u-1);break}default:if(l<1||i[l-1].length<1)n=t+de+n}break;case Q:t="";default:if(u>1&&n.indexOf(":")>0)n=t+n.replace(ve,"$1"+de+"$2");else n=t+n+de}s+=n}o[r]=s.replace(N,"").trim()}return o}(t):t,ue>0)if(void 0!==(i=fe(We,Y,o,e,oe,ae,L,r,a,r))&&0===(Y=i).length)return P+Y+O;if(Y=o.join(",")+"{"+Y+"}",le*ie!=0){if(2===le&&!qe(Y,2))ie=0;switch(ie){case Ye:Y=Y.replace(_e,":"+A+"$1")+Y;break;case De:Y=Y.replace(ge,"::"+j+"input-$1")+Y.replace(ge,"::"+A+"$1")+Y.replace(ge,":"+R+"input-$1")+Y}ie=0}}return P+Y+O}function Ge(e,t,n){var r=t.trim().split(h),a=r,o=r.length,i=e.length;switch(i){case 0:case 1:for(var s=0,l=0===i?"":e[0]+" ";s0&&se>0)return a.replace(m,"$1").replace(i,"$1"+pe);break;default:return e.trim()+a.replace(i,"$1"+e.trim())}default:if(n*se>0&&a.indexOf("\f")>0)return a.replace(i,(e.charCodeAt(0)===Z?"":"$1")+e.trim())}return e+a}function $e(e,t,n,r){var a,o=0,i=e+";",s=2*t+3*n+4*r;if(944===s)return function(e){var t=e.length,n=e.indexOf(":",9)+1,r=e.substring(0,n).trim(),a=e.substring(n,t-1).trim();switch(e.charCodeAt(9)*ce){case 0:break;case q:if(110!==e.charCodeAt(10))break;default:for(var o=a.split((a="",d)),i=0,n=0,t=o.length;iG&&u<90||u>96&&u<123||u===L||u===q&&s.charCodeAt(1)!==q))switch(isNaN(parseFloat(s))+(-1!==s.indexOf("("))){case 1:switch(s){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:s+=Ue}}l[n++]=s}a+=(0===i?"":",")+l.join(" ")}}if(a=r+a+";",1===le||2===le&&qe(a,1))return j+a+a;return a}(i);else if(0===le||2===le&&!qe(i,1))return i;switch(s){case 1015:return 97===i.charCodeAt(10)?j+i+i:i;case 951:return 116===i.charCodeAt(3)?j+i+i:i;case 963:return 110===i.charCodeAt(5)?j+i+i:i;case 1009:if(100!==i.charCodeAt(4))break;case 969:case 942:return j+i+i;case 978:return j+i+A+i+i;case 1019:case 983:return j+i+A+i+R+i+i;case 883:if(i.charCodeAt(8)===q)return j+i+i;if(i.indexOf("image-set(",11)>0)return i.replace(x,"$1"+j+"$2")+i;return i;case 932:if(i.charCodeAt(4)===q)switch(i.charCodeAt(5)){case 103:return j+"box-"+i.replace("-grow","")+j+i+R+i.replace("grow","positive")+i;case 115:return j+i+R+i.replace("shrink","negative")+i;case 98:return j+i+R+i.replace("basis","preferred-size")+i}return j+i+R+i+i;case 964:return j+i+R+"flex-"+i+i;case 1023:if(99!==i.charCodeAt(8))break;return a=i.substring(i.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),j+"box-pack"+a+j+i+R+"flex-pack"+a+i;case 1005:return u.test(i)?i.replace(l,":"+j)+i.replace(l,":"+A)+i:i;case 1e3:switch(o=(a=i.substring(13).trim()).indexOf("-")+1,a.charCodeAt(0)+a.charCodeAt(o)){case 226:a=i.replace(w,"tb");break;case 232:a=i.replace(w,"tb-rl");break;case 220:a=i.replace(w,"lr");break;default:return i}return j+i+R+a+i;case 1017:if(-1===i.indexOf("sticky",9))return i;case 975:switch(o=(i=e).length-10,s=(a=(33===i.charCodeAt(o)?i.substring(0,o):i).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|a.charCodeAt(7))){case 203:if(a.charCodeAt(8)<111)break;case 115:i=i.replace(a,j+a)+";"+i;break;case 207:case 102:i=i.replace(a,j+(s>102?"inline-":"")+"box")+";"+i.replace(a,j+a)+";"+i.replace(a,R+a+"box")+";"+i}return i+";";case 938:if(i.charCodeAt(5)===q)switch(i.charCodeAt(6)){case 105:return a=i.replace("-items",""),j+i+j+"box-"+a+R+"flex-"+a+i;case 115:return j+i+R+"flex-item-"+i.replace(M,"")+i;default:return j+i+R+"flex-line-pack"+i.replace("align-content","").replace(M,"")+i}break;case 973:case 989:if(i.charCodeAt(3)!==q||122===i.charCodeAt(4))break;case 931:case 953:if(true===k.test(e))if(115===(a=e.substring(e.indexOf(":")+1)).charCodeAt(0))return $e(e.replace("stretch","fill-available"),t,n,r).replace(":fill-available",":stretch");else return i.replace(a,j+a)+i.replace(a,A+a.replace("fill-",""))+i;break;case 962:if(i=j+i+(102===i.charCodeAt(5)?R+i:"")+i,n+r===211&&105===i.charCodeAt(13)&&i.indexOf("transform",10)>0)return i.substring(0,i.indexOf(";",27)+1).replace(c,"$1"+j+"$2")+i}return i}function qe(e,t){var n=e.indexOf(1===t?":":"{"),r=e.substring(0,3!==t?n:10),a=e.substring(n+1,e.length-1);return C(2!==t?r:r.replace(o,"$1"),a,t)}function Je(e,t){var n=$e(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return n!==t+";"?n.replace(r," or ($1)").substring(4):"("+t+")"}function fe(e,t,n,r,a,o,i,s,l,u){for(var c,d=0,p=t;d0)Ue=n.replace(y,r===V?"":"-");if(r=1,1===se)pe=n;else de=n;var a,o=[pe];if(ue>0)if(void 0!==(a=fe(D,t,o,o,oe,ae,0,0,0,0))&&"string"==typeof a)t=a;var i=Ke(Ie,o,t,0,0);if(ue>0)if(void 0!==(a=fe(E,i,o,o,oe,ae,i.length,0,0,0))&&"string"!=typeof(i=a))r=0;return Ue="",pe="",de="",ie=0,oe=1,ae=1,T*r==0?i:i.replace(N,"").replace(g,"").replace(_,"$1").replace(v,"$1").replace(b," ")}if(f.use=function e(t){switch(t){case void 0:case null:ue=S.length=0;break;default:if("function"==typeof t)S[ue++]=t;else if("object"==typeof t)for(var n=0,r=t.length;n"']/g,Wi=RegExp(Fi.source),Vi=RegExp(zi.source),Bi=/<%-([\s\S]+?)%>/g,Ui=/<%([\s\S]+?)%>/g,Ki=/<%=([\s\S]+?)%>/g,Gi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$i=/^\w*$/,qi=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ji=/[\\^$.*+?()[\]{}|]/g,Qi=RegExp(Ji.source),Zi=/^\s+/,o=/\s/,Xi=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,es=/\{\n\/\* \[wrapped with (.+)\] \*/,ts=/,? & /,ns=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,rs=/[()=,{}\[\]\/\s]/,as=/\\(\\)?/g,os=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,is=/\w*$/,ss=/^[-+]0x[0-9a-f]+$/i,ls=/^0b[01]+$/i,us=/^\[object .+?Constructor\]$/,cs=/^0o[0-7]+$/i,ds=/^(?:0|[1-9]\d*)$/,ps=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,fs=/($^)/,hs=/['\n\r\u2028\u2029\\]/g,i="\\ud800-\\udfff",s="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",e="\\u2700-\\u27bf",t="a-z\\xdf-\\xf6\\xf8-\\xff",n="A-Z\\xc0-\\xd6\\xd8-\\xde",l="\\ufe0e\\ufe0f",r="\\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",u="['’]",a="["+i+"]",c="["+r+"]",d="["+s+"]",p="["+e+"]",f="["+t+"]",r="[^"+i+r+"\\d+"+e+t+n+"]",e="\\ud83c[\\udffb-\\udfff]",t="[^"+i+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",n="["+n+"]",y="\\u200d",g="(?:"+f+"|"+r+")",r="(?:"+n+"|"+r+")",_="(?:['’](?:d|ll|m|re|s|t|ve))?",v="(?:['’](?:D|LL|M|RE|S|T|VE))?",b="(?:"+d+"|"+e+")"+"?",w="["+l+"]?",w=w+b+("(?:"+y+"(?:"+[t,h,m].join("|")+")"+w+b+")*"),b="(?:"+[p,h,m].join("|")+")"+w,p="(?:"+[t+d+"?",d,h,m,a].join("|")+")",ms=RegExp(u,"g"),ys=RegExp(d,"g"),M=RegExp(e+"(?="+e+")|"+p+w,"g"),gs=RegExp([n+"?"+f+"+"+_+"(?="+[c,n,"$"].join("|")+")",r+"+"+v+"(?="+[c,n+g,"$"].join("|")+")",n+"?"+g+"+"+_,n+"+"+v,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])","\\d+",b].join("|"),"g"),k=RegExp("["+y+i+s+l+"]"),_s=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,vs=["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"],bs=-1,ai={},oi=(ai[Ci]=ai[Ei]=ai[Di]=ai[Yi]=ai[Oi]=ai[Pi]=ai[Ni]=ai[ji]=ai[Ai]=!0,ai[Ko]=ai[Mi]=ai[ni]=ai[Go]=ai[ri]=ai[$o]=ai[ki]=ai[xi]=ai[qo]=ai[Jo]=ai[Qo]=ai[Zo]=ai[Xo]=ai[ei]=ai[ti]=!1,{}),x=(oi[Ko]=oi[Mi]=oi[ni]=oi[ri]=oi[Go]=oi[$o]=oi[Ci]=oi[Ei]=oi[Di]=oi[Yi]=oi[Oi]=oi[qo]=oi[Jo]=oi[Qo]=oi[Zo]=oi[Xo]=oi[ei]=oi[Si]=oi[Pi]=oi[Ni]=oi[ji]=oi[Ai]=!0,oi[ki]=oi[xi]=oi[ti]=!1,{"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"}),ws=parseFloat,Ms=parseInt,t="object"==typeof E&&E&&E.Object===Object&&E,h="object"==typeof self&&self&&self.Object===Object&&self,ii=t||h||Function("return this")(),m=O&&!O.nodeType&&O,L=m&&"object"==typeof D&&D&&!D.nodeType&&D,ks=L&&L.exports===m,T=ks&&t.process,a=function(){try{var e=L&&L.require&&L.require("util").types;return e?e:T&&T.binding&&T.binding("util")}catch(e){}}(),xs=a&&a.isArrayBuffer,Ls=a&&a.isDate,Ts=a&&a.isMap,Ss=a&&a.isRegExp,Cs=a&&a.isSet,Es=a&&a.isTypedArray;function si(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ds(e,t,n,r){for(var a=-1,o=null==e?0:e.length;++a":">",'"':""","'":"'"});function el(e){return"\\"+x[e]}function hi(e){return k.test(e)}function tl(e){var n=-1,r=Array(e.size);return e.forEach(function(e,t){r[++n]=[t,e]}),r}function nl(t,n){return function(e){return t(n(e))}}function mi(e,t){for(var n=-1,r=e.length,a=0,o=[];++n",""":'"',"'":"'"});var il=function a(e){var M=(e=null==e?ii:il.defaults(ii.Object(),e,il.pick(ii,vs))).Array,o=e.Date,O=e.Error,P=e.Function,N=e.Math,m=e.Object,j=e.RegExp,W=e.String,k=e.TypeError,V=M.prototype,B=P.prototype,U=m.prototype,K=e["__core-js_shared__"],G=B.toString,A=U.hasOwnProperty,$=0,q=(B=/[^.]+$/.exec(K&&K.keys&&K.keys.IE_PROTO||""))?"Symbol(src)_1."+B:"",J=U.toString,Q=G.call(m),Z=ii._,X=j("^"+G.call(A).replace(Ji,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),B=ks?e.Buffer:zo,t=e.Symbol,ee=e.Uint8Array,te=B?B.allocUnsafe:zo,ne=nl(m.getPrototypeOf,m),re=m.create,ae=U.propertyIsEnumerable,oe=V.splice,ie=t?t.isConcatSpreadable:zo,se=t?t.iterator:zo,le=t?t.toStringTag:zo,ue=function(){try{var e=Zn(m,"defineProperty");return e({},"",{}),e}catch(e){}}(),ce=e.clearTimeout!==ii.clearTimeout&&e.clearTimeout,de=o&&o.now!==ii.Date.now&&o.now,pe=e.setTimeout!==ii.setTimeout&&e.setTimeout,fe=N.ceil,he=N.floor,me=m.getOwnPropertySymbols,B=B?B.isBuffer:zo,ye=e.isFinite,ge=V.join,_e=nl(m.keys,m),x=N.max,L=N.min,ve=o.now,be=e.parseInt,we=N.random,Me=V.reverse,o=Zn(e,"DataView"),ke=Zn(e,"Map"),xe=Zn(e,"Promise"),Le=Zn(e,"Set"),e=Zn(e,"WeakMap"),Te=Zn(m,"create"),Se=e&&new e,Ce={},Ee=kr(o),De=kr(ke),Ye=kr(xe),Oe=kr(Le),Pe=kr(e),t=t?t.prototype:zo,Ne=t?t.valueOf:zo,je=t?t.toString:zo;function h(e){if(z(e)&&!F(e)&&!(e instanceof g)){if(e instanceof y)return e;if(A.call(e,"__wrapped__"))return xr(e)}return new y(e)}var Ae=function(e){if(!w(e))return{};if(re)return re(e);Re.prototype=e;e=new Re;return Re.prototype=zo,e};function Re(){}function He(){}function y(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=zo}function g(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Uo,this.__views__=[]}function Ie(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t>>0,t>>>=0,M(a));++r>>1,i=e[o];null!==i&&!v(i)&&(n?i<=t:i>>0)?(e=f(e))&&("string"==typeof t||null!=t&&!Sa(t))&&!(t=u(t))&&hi(e)?ln(gi(e),0,n):e.split(t,n):[]},h.spread=function(n,r){if("function"!=typeof n)throw new k(Wo);return r=null==r?0:x(S(r),0),i(function(e){var t=e[r],e=ln(e,0,r);return t&&di(e,t),si(n,this,e)})},h.tail=function(e){var t=null==e?0:e.length;return t?s(e,1,t):[]},h.take=function(e,t,n){return e&&e.length?s(e,0,(t=n||t===zo?1:S(t))<0?0:t):[]},h.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?s(e,(t=r-(t=n||t===zo?1:S(t)))<0?0:t,r):[]},h.takeRightWhile=function(e,t){return e&&e.length?Xt(e,d(t,3),!1,!0):[]},h.takeWhile=function(e,t){return e&&e.length?Xt(e,d(t,3)):[]},h.tap=function(e,t){return t(e),e},h.throttle=function(e,t,n){var r=!0,a=!0;if("function"!=typeof e)throw new k(Wo);return w(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),la(e,t,{leading:r,maxWait:t,trailing:a})},h.thru=Br,h.toArray=Pa,h.toPairs=eo,h.toPairsIn=to,h.toPath=function(e){return F(e)?ci(e,Mr):v(e)?[e]:T(wr(f(e)))},h.toPlainObject=Aa,h.transform=function(e,r,a){var t,n=F(e),o=n||va(e)||Da(e);return r=d(r,4),null==a&&(t=e&&e.constructor,a=o?n?new t:[]:w(e)&&wa(t)?Ae(ne(e)):{}),(o?li:dt)(e,function(e,t,n){return r(a,e,t,n)}),a},h.unary=function(e){return aa(e,1)},h.union=Or,h.unionBy=Pr,h.unionWith=Nr,h.uniq=function(e){return e&&e.length?Jt(e):[]},h.uniqBy=function(e,t){return e&&e.length?Jt(e,d(t,2)):[]},h.uniqWith=function(e,t){return t="function"==typeof t?t:zo,e&&e.length?Jt(e,zo,t):[]},h.unset=function(e,t){return null==e||Qt(e,t)},h.unzip=jr,h.unzipWith=Ar,h.update=function(e,t,n){return null==e?e:Zt(e,t,an(n))},h.updateWith=function(e,t,n,r){return r="function"==typeof r?r:zo,null==e?e:Zt(e,t,an(n),r)},h.values=no,h.valuesIn=function(e){return null==e?[]:$s(e,D(e))},h.without=Rr,h.words=ho,h.wrap=function(e,t){return pa(an(t),e)},h.xor=Hr,h.xorBy=Ir,h.xorWith=Fr,h.zip=zr,h.zipObject=function(e,t){return nn(e||[],t||[],$e)},h.zipObjectDeep=function(e,t){return nn(e||[],t||[],Wt)},h.zipWith=Wr,h.entries=eo,h.entriesIn=to,h.extend=Ha,h.extendWith=Ia,ko(h,h),h.add=Po,h.attempt=mo,h.camelCase=ro,h.capitalize=ao,h.ceil=No,h.clamp=function(e,t,n){return n===zo&&(n=t,t=zo),n!==zo&&(n=(n=C(n))==n?n:0),t!==zo&&(t=(t=C(t))==t?t:0),et(C(e),t,n)},h.clone=function(e){return _(e,4)},h.cloneDeep=function(e){return _(e,5)},h.cloneDeepWith=function(e,t){return _(e,5,t="function"==typeof t?t:zo)},h.cloneWith=function(e,t){return _(e,4,t="function"==typeof t?t:zo)},h.conformsTo=function(e,t){return null==t||tt(e,t,E(t))},h.deburr=oo,h.defaultTo=function(e,t){return null==e||e!=e?t:e},h.divide=jo,h.endsWith=function(e,t,n){e=f(e),t=u(t);var r=e.length,r=n=n===zo?r:et(S(n),0,r);return 0<=(n-=t.length)&&e.slice(n,r)==t},h.eq=I,h.escape=function(e){return(e=f(e))&&Vi.test(e)?e.replace(zi,Xs):e},h.escapeRegExp=function(e){return(e=f(e))&&Qi.test(e)?e.replace(Ji,"\\$&"):e},h.every=function(e,t,n){return(F(e)?Os:it)(e,d(t=n&&p(e,t,n)?zo:t,3))},h.find=Gr,h.findIndex=Lr,h.findKey=function(e,t){return Hs(e,d(t,3),dt)},h.findLast=$r,h.findLastIndex=Tr,h.findLastKey=function(e,t){return Hs(e,d(t,3),pt)},h.floor=Ao,h.forEach=qr,h.forEachRight=Jr,h.forIn=function(e,t){return null==e?e:ut(e,d(t,3),D)},h.forInRight=function(e,t){return null==e?e:ct(e,d(t,3),D)},h.forOwn=function(e,t){return e&&dt(e,d(t,3))},h.forOwnRight=function(e,t){return e&&pt(e,d(t,3))},h.get=Ba,h.gt=ma,h.gte=ya,h.has=function(e,t){return null!=e&&tr(e,t,gt)},h.hasIn=Ua,h.head=Cr,h.identity=Y,h.includes=function(e,t,n,r){return e=c(e)?e:no(e),n=n&&!r?S(n):0,r=e.length,n<0&&(n=x(r+n,0)),Ea(e)?n<=r&&-1=L(t=t,n=n)&&e=this.__values__.length;return{done:e,value:e?zo:this.__values__[this.__index__++]}},h.prototype.plant=function(e){for(var t,n=this;n instanceof He;)var r=xr(n),a=(r.__index__=0,r.__values__=zo,t?a.__wrapped__=r:t=r,r),n=n.__wrapped__;return a.__wrapped__=e,t},h.prototype.reverse=function(){var e=this.__wrapped__;return e instanceof g?(e=e,(e=(e=this.__actions__.length?new g(this):e).reverse()).__actions__.push({func:Br,args:[Yr],thisArg:zo}),new y(e,this.__chain__)):this.thru(Yr)},h.prototype.toJSON=h.prototype.valueOf=h.prototype.value=function(){return en(this.__wrapped__,this.__actions__)},h.prototype.first=h.prototype.head,se&&(h.prototype[se]=function(){return this}),h}();ii._=il,(Y=function(){return il}.call(O,P,O,D))!==zo&&(D.exports=Y)}.call(this)}.call(this,P(53),P(99)(e))},function(e,t,n){var r=n(35),a=n(88),o=n(56),i=Object.defineProperty;t.f=n(21)?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),a)try{return i(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,n){"use strict";var s=n(15);function l(e,t,n,r,a){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),a&&(this.response=a)}s.inherits(l,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var u=l.prototype,r={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach(function(e){r[e]={value:e}}),Object.defineProperties(l,r),Object.defineProperty(u,"isAxiosError",{value:!0}),l.from=function(e,t,n,r,a,o){var i=Object.create(u);return s.toFlatObject(e,i,function(e){return e!==Error.prototype}),l.call(i,e.message,t,n,r,a),i.name=e.name,o&&Object.assign(i,o),i},e.exports=l},function(e,t,n){function m(e,t,n){var r,a,o,i=e&m.F,s=e&m.G,l=e&m.S,u=e&m.P,c=e&m.B,d=e&m.W,p=s?g:g[t]||(g[t]={}),f=p[w],h=s?y:l?y[t]:(y[t]||{})[w];for(r in n=s?t:n)(a=!i&&h&&void 0!==h[r])&&b(p,r)||(o=(a?h:n)[r],p[r]=s&&"function"!=typeof h[r]?n[r]:c&&a?_(o,y):d&&h[r]==o?function(r){function e(e,t,n){if(this instanceof r){switch(arguments.length){case 0:return new r;case 1:return new r(e);case 2:return new r(e,t)}return new r(e,t,n)}return r.apply(this,arguments)}return e[w]=r[w],e}(o):u&&"function"==typeof o?_(Function.call,o):o,u&&((p.virtual||(p.virtual={}))[r]=o,e&m.R)&&f&&!f[r]&&v(f,r,o))}var y=n(19),g=n(20),_=n(87),v=n(28),b=n(24),w="prototype";m.F=1,m.G=2,m.S=4,m.P=8,m.B=16,m.W=32,m.U=64,m.R=128,e.exports=m},function(e,t,n){var r=n(23),a=n(42);e.exports=n(21)?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(92),a=n(55);e.exports=function(e){return r(a(e))}},function(e,t,n){var r=n(60)("wks"),a=n(44),o=n(19).Symbol,i="function"==typeof o;(e.exports=function(e){return r[e]||(r[e]=i&&o[e]||(i?o:a)("Symbol."+e))}).store=r},function(e,t,n){"use strict";var r=n(25),o=(Object.defineProperty(t,"__esModule",{value:!0}),t.format=function(){for(var e=arguments.length,t=new Array(e),n=0;ndocument.F=Object<\/script>"),e.close(),u=e.F;t--;)delete u[l][i[t]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(r[l]=a(e),n=new r,r[l]=null,n[s]=e):n=u(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(60)("keys"),a=n(44);e.exports=function(e){return r[e]||(r[e]=a(e))}},function(e,t,n){var r=n(20),a=n(19),o="__core-js_shared__",i=a[o]||(a[o]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(41)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(23).f,a=n(24),o=n(31)("toStringTag");e.exports=function(e,t,n){e&&!a(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){var r=n(55);e.exports=function(e){return Object(r(e))}},function(e,t,n){t.f=n(31)},function(e,t,n){var r=n(19),a=n(20),o=n(41),i=n(64),s=n(23).f;e.exports=function(e){var t=a.Symbol||(a.Symbol=!o&&r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:i.f(e)})}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){n=n(383)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},function(e,t){function l(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}e.exports=function(s){return function(){var e=this,i=arguments;return new Promise(function(t,n){var r=s.apply(e,i);function a(e){l(r,t,n,a,o,"next",e)}function o(e){l(r,t,n,a,o,"throw",e)}a(void 0)})}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,n){var r=n(235);e.exports=function(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,n){"use strict";var r=n(240),a=n(241);n(76);t.default={enUS:r.a,zhCN:a.a}},function(e,t,n){e.exports=function s(e){"use strict";var he=/^\0+/g,N=/[\0\r\f]/g,l=/: */g,u=/zoo|gra/,c=/([,: ])(transform)/g,d=/,+\s*(?![^(]*[)])/g,p=/ +\s*(?![^(]*[)])/g,me=/ *[\0] */g,h=/,\r+?/g,i=/([\t\r\n ])*\f?&/g,m=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,y=/\W+/g,ye=/@(k\w+)\s*(\S*)\s*/,ge=/::(place)/g,_e=/:(read-only)/g,g=/\s+(?=[{\];=:>])/g,_=/([[}=:>])\s+/g,v=/(\{[^{]+?);(?=\})/g,b=/\s{2,}/g,ve=/([^\(])(:+) */g,w=/[svh]\w+-[tblr]{2}/,be=/\(\s*(.*)\s*\)/g,r=/([\s\S]*?);/g,M=/-self|flex-/g,o=/[^]*?(:[rp][el]a[\w-]+)[^]*/,k=/stretch|:\s*\w+\-(?:conte|avail)/,x=/([^-])(image-set\()/,j="-webkit-",A="-moz-",R="-ms-",H=59,I=125,F=123,z=40,W=41,V=91,we=93,B=10,U=13,K=9,G=64,$=32,Me=38,q=45,L=95,J=42,Q=44,Z=58,X=39,ee=34,te=47,ne=62,re=43,ke=126,xe=0,Le=12,Te=11,Se=107,Ce=109,Ee=115,De=112,Ye=111,Oe=105,Pe=99,Ne=100,je=112,ae=1,oe=1,ie=0,se=1,le=1,Ae=1,T=0,Re=0,He=0,Ie=[],S=[],ue=0,C=null,E=-2,D=-1,Fe=0,ze=1,We=2,Ve=3,Be=0,ce=1,Ue="",de="",pe="";function Ke(e,t,n,r,a){for(var o,i,s=0,l=0,u=0,c=0,d=0,p=0,f=0,h=0,m=0,y=0,g=0,_=0,v=0,b=0,w=0,M=0,k=0,x=0,L=0,T=n.length,S=T-1,C="",E="",D="",Y="",O="",P="";w0)E=E.replace(N,"");if(E.trim().length>0){switch(f){case $:case K:case H:case U:case B:break;default:E+=n.charAt(w)}f=H}}if(1===k)switch(f){case F:case I:case H:case ee:case X:case z:case W:case Q:k=0;case K:case U:case B:case $:break;default:for(k=0,L=w,d=f,w--,f=H;L0)++w,f=d;case F:L=T}}switch(f){case F:for(d=(E=E.trim()).charCodeAt(0),g=1,L=++w;w0)E=E.replace(N,"");switch(p=E.charCodeAt(1)){case Ne:case Ce:case Ee:case q:o=t;break;default:o=Ie}if(L=(D=Ke(t,o,D,p,a+1)).length,He>0&&0===L)L=E.length;if(ue>0)if(o=Ge(Ie,E,x),i=fe(Ve,D,o,t,oe,ae,L,p,a,r),E=o.join(""),void 0!==i)if(0===(L=(D=i.trim()).length))p=0,D="";if(L>0)switch(p){case Ee:E=E.replace(be,Je);case Ne:case Ce:case q:D=E+"{"+D+"}";break;case Se:if(D=(E=E.replace(ye,"$1 $2"+(ce>0?Ue:"")))+"{"+D+"}",1===le||2===le&&qe("@"+D,3))D="@"+j+D+"@"+D;else D="@"+D;break;default:if(D=E+D,r===je)Y+=D,D=""}else D="";break;default:D=Ke(t,Ge(t,E,x),D,r,a+1)}O+=D,_=0,k=0,b=0,M=0,x=0,v=0,E="",D="",f=n.charCodeAt(++w);break;case I:case H:if((L=(E=(M>0?E.replace(N,""):E).trim()).length)>1){if(0===b)if((d=E.charCodeAt(0))===q||d>96&&d<123)L=(E=E.replace(" ",":")).length;if(ue>0)if(void 0!==(i=fe(ze,E,t,e,oe,ae,Y.length,r,a,r)))if(0===(L=(E=i.trim()).length))E="\0\0";switch(d=E.charCodeAt(0),p=E.charCodeAt(1),d){case xe:break;case G:if(p===Oe||p===Pe){P+=E+n.charAt(w);break}default:if(E.charCodeAt(L-1)===Z)break;Y+=$e(E,d,p,E.charCodeAt(2))}}_=0,k=0,b=0,M=0,x=0,E="",f=n.charCodeAt(++w)}}switch(f){case U:case B:if(l+c+u+s+Re===0)switch(y){case W:case X:case ee:case G:case ke:case ne:case J:case re:case te:case q:case Z:case Q:case H:case F:case I:break;default:if(b>0)k=1}if(l===te)l=0;else if(se+_===0&&r!==Se&&E.length>0)M=1,E+="\0";if(ue*Be>0)fe(Fe,E,t,e,oe,ae,Y.length,r,a,r);ae=1,oe++;break;case H:case I:if(l+c+u+s===0){ae++;break}default:switch(ae++,C=n.charAt(w),f){case K:case $:if(c+s+l===0)switch(h){case Q:case Z:case K:case $:C="";break;default:if(f!==$)C=" "}break;case xe:C="\\0";break;case Le:C="\\f";break;case Te:C="\\v";break;case Me:if(c+l+s===0&&se>0)x=1,M=1,C="\f"+C;break;case 108:if(c+l+s+ie===0&&b>0)switch(w-b){case 2:if(h===De&&n.charCodeAt(w-3)===Z)ie=h;case 8:if(m===Ye)ie=m}break;case Z:if(c+l+s===0)b=w;break;case Q:if(l+u+c+s===0)M=1,C+="\r";break;case ee:case X:if(0===l)c=c===f?0:0===c?f:c;break;case V:if(c+l+u===0)s++;break;case we:if(c+l+u===0)s--;break;case W:if(c+l+s===0)u--;break;case z:if(c+l+s===0){if(0===_)switch(2*h+3*m){case 533:break;default:g=0,_=1}u++}break;case G:if(l+u+c+s+b+v===0)v=1;break;case J:case te:if(c+s+u>0)break;switch(l){case 0:switch(2*f+3*n.charCodeAt(w+1)){case 235:l=te;break;case 220:L=w,l=J}break;case J:if(f===te&&h===J&&L+2!==w){if(33===n.charCodeAt(L+2))Y+=n.substring(L,w+1);C="",l=0}}}if(0===l){if(se+c+s+v===0&&r!==Se&&f!==H)switch(f){case Q:case ke:case ne:case re:case W:case z:if(0===_){switch(h){case K:case $:case B:case U:C+="\0";break;default:C="\0"+C+(f===Q?"":"\0")}M=1}else switch(f){case z:if(b+7===w&&108===h)b=0;_=++g;break;case W:if(0==(_=--g))M=1,C+="\0"}break;case K:case $:switch(h){case xe:case F:case I:case H:case Q:case Le:case K:case $:case B:case U:break;default:if(0===_)M=1,C+="\0"}}if(E+=C,f!==$&&f!==K)y=f}}m=h,h=f,w++}if(L=Y.length,He>0)if(0===L&&0===O.length&&0===t[0].length==false)if(r!==Ce||1===t.length&&(se>0?de:pe)===t[0])L=t.join(",").length+2;if(L>0){if(o=0===se&&r!==Se?function(e){for(var t,n,r=0,a=e.length,o=Array(a);r1)continue;if(c=s.charCodeAt(s.length-1),d=n.charCodeAt(0),t="",0!==l)switch(c){case J:case ke:case ne:case re:case $:case z:break;default:t=" "}switch(d){case Me:n=t+de;case ke:case ne:case re:case $:case W:case z:break;case V:n=t+n+de;break;case Z:switch(2*n.charCodeAt(1)+3*n.charCodeAt(2)){case 530:if(Ae>0){n=t+n.substring(8,u-1);break}default:if(l<1||i[l-1].length<1)n=t+de+n}break;case Q:t="";default:if(u>1&&n.indexOf(":")>0)n=t+n.replace(ve,"$1"+de+"$2");else n=t+n+de}s+=n}o[r]=s.replace(N,"").trim()}return o}(t):t,ue>0)if(void 0!==(i=fe(We,Y,o,e,oe,ae,L,r,a,r))&&0===(Y=i).length)return P+Y+O;if(Y=o.join(",")+"{"+Y+"}",le*ie!=0){if(2===le&&!qe(Y,2))ie=0;switch(ie){case Ye:Y=Y.replace(_e,":"+A+"$1")+Y;break;case De:Y=Y.replace(ge,"::"+j+"input-$1")+Y.replace(ge,"::"+A+"$1")+Y.replace(ge,":"+R+"input-$1")+Y}ie=0}}return P+Y+O}function Ge(e,t,n){var r=t.trim().split(h),a=r,o=r.length,i=e.length;switch(i){case 0:case 1:for(var s=0,l=0===i?"":e[0]+" ";s0&&se>0)return a.replace(m,"$1").replace(i,"$1"+pe);break;default:return e.trim()+a.replace(i,"$1"+e.trim())}default:if(n*se>0&&a.indexOf("\f")>0)return a.replace(i,(e.charCodeAt(0)===Z?"":"$1")+e.trim())}return e+a}function $e(e,t,n,r){var a,o=0,i=e+";",s=2*t+3*n+4*r;if(944===s)return function(e){var t=e.length,n=e.indexOf(":",9)+1,r=e.substring(0,n).trim(),a=e.substring(n,t-1).trim();switch(e.charCodeAt(9)*ce){case 0:break;case q:if(110!==e.charCodeAt(10))break;default:for(var o=a.split((a="",d)),i=0,n=0,t=o.length;iG&&u<90||u>96&&u<123||u===L||u===q&&s.charCodeAt(1)!==q))switch(isNaN(parseFloat(s))+(-1!==s.indexOf("("))){case 1:switch(s){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:s+=Ue}}l[n++]=s}a+=(0===i?"":",")+l.join(" ")}}if(a=r+a+";",1===le||2===le&&qe(a,1))return j+a+a;return a}(i);else if(0===le||2===le&&!qe(i,1))return i;switch(s){case 1015:return 97===i.charCodeAt(10)?j+i+i:i;case 951:return 116===i.charCodeAt(3)?j+i+i:i;case 963:return 110===i.charCodeAt(5)?j+i+i:i;case 1009:if(100!==i.charCodeAt(4))break;case 969:case 942:return j+i+i;case 978:return j+i+A+i+i;case 1019:case 983:return j+i+A+i+R+i+i;case 883:if(i.charCodeAt(8)===q)return j+i+i;if(i.indexOf("image-set(",11)>0)return i.replace(x,"$1"+j+"$2")+i;return i;case 932:if(i.charCodeAt(4)===q)switch(i.charCodeAt(5)){case 103:return j+"box-"+i.replace("-grow","")+j+i+R+i.replace("grow","positive")+i;case 115:return j+i+R+i.replace("shrink","negative")+i;case 98:return j+i+R+i.replace("basis","preferred-size")+i}return j+i+R+i+i;case 964:return j+i+R+"flex-"+i+i;case 1023:if(99!==i.charCodeAt(8))break;return a=i.substring(i.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),j+"box-pack"+a+j+i+R+"flex-pack"+a+i;case 1005:return u.test(i)?i.replace(l,":"+j)+i.replace(l,":"+A)+i:i;case 1e3:switch(o=(a=i.substring(13).trim()).indexOf("-")+1,a.charCodeAt(0)+a.charCodeAt(o)){case 226:a=i.replace(w,"tb");break;case 232:a=i.replace(w,"tb-rl");break;case 220:a=i.replace(w,"lr");break;default:return i}return j+i+R+a+i;case 1017:if(-1===i.indexOf("sticky",9))return i;case 975:switch(o=(i=e).length-10,s=(a=(33===i.charCodeAt(o)?i.substring(0,o):i).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|a.charCodeAt(7))){case 203:if(a.charCodeAt(8)<111)break;case 115:i=i.replace(a,j+a)+";"+i;break;case 207:case 102:i=i.replace(a,j+(s>102?"inline-":"")+"box")+";"+i.replace(a,j+a)+";"+i.replace(a,R+a+"box")+";"+i}return i+";";case 938:if(i.charCodeAt(5)===q)switch(i.charCodeAt(6)){case 105:return a=i.replace("-items",""),j+i+j+"box-"+a+R+"flex-"+a+i;case 115:return j+i+R+"flex-item-"+i.replace(M,"")+i;default:return j+i+R+"flex-line-pack"+i.replace("align-content","").replace(M,"")+i}break;case 973:case 989:if(i.charCodeAt(3)!==q||122===i.charCodeAt(4))break;case 931:case 953:if(true===k.test(e))if(115===(a=e.substring(e.indexOf(":")+1)).charCodeAt(0))return $e(e.replace("stretch","fill-available"),t,n,r).replace(":fill-available",":stretch");else return i.replace(a,j+a)+i.replace(a,A+a.replace("fill-",""))+i;break;case 962:if(i=j+i+(102===i.charCodeAt(5)?R+i:"")+i,n+r===211&&105===i.charCodeAt(13)&&i.indexOf("transform",10)>0)return i.substring(0,i.indexOf(";",27)+1).replace(c,"$1"+j+"$2")+i}return i}function qe(e,t){var n=e.indexOf(1===t?":":"{"),r=e.substring(0,3!==t?n:10),a=e.substring(n+1,e.length-1);return C(2!==t?r:r.replace(o,"$1"),a,t)}function Je(e,t){var n=$e(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return n!==t+";"?n.replace(r," or ($1)").substring(4):"("+t+")"}function fe(e,t,n,r,a,o,i,s,l,u){for(var c,d=0,p=t;d0)Ue=n.replace(y,r===V?"":"-");if(r=1,1===se)pe=n;else de=n;var a,o=[pe];if(ue>0)if(void 0!==(a=fe(D,t,o,o,oe,ae,0,0,0,0))&&"string"==typeof a)t=a;var i=Ke(Ie,o,t,0,0);if(ue>0)if(void 0!==(a=fe(E,i,o,o,oe,ae,i.length,0,0,0))&&"string"!=typeof(i=a))r=0;return Ue="",pe="",de="",ie=0,oe=1,ae=1,T*r==0?i:i.replace(N,"").replace(g,"").replace(_,"$1").replace(v,"$1").replace(b," ")}if(f.use=function e(t){switch(t){case void 0:case null:ue=S.length=0;break;default:if("function"==typeof t)S[ue++]=t;else if("object"==typeof t)for(var n=0,r=t.length;na;)!i(r,n=t[a++])||~l(o,n)||o.push(n);return o}},function(e,t,n){var r=n(86);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(84),a=n(57).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,a)}},function(e,t,n){var r=n(42),a=n(39),o=n(29),i=n(52),s=n(24),l=n(81),u=Object.getOwnPropertyDescriptor;t.f=n(21)?u:function(e,t){if(e=o(e),t=i(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var r=function(e){{if(e&&e.__esModule)return e;var t,n={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&((t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,r):{}).get||t.set?Object.defineProperty(n,r,t):n[r]=e[r]);return n.default=e,n}}(n(0)),o=s(n(1)),i=s(n(9)),a=n(10);n(90);function s(e){return e&&e.__esModule?e:{default:e}}var l="unmounted",u=(t.UNMOUNTED=l,"exited"),c=(t.EXITED=u,"entering"),d=(t.ENTERING=c,"entered"),p=(t.ENTERED=d,"exiting"),n=(t.EXITING=p,function(a){var e;function t(e,t){var n,r=a.call(this,e,t)||this,t=t.transitionGroup,t=t&&!t.isMounting?e.enter:e.appear;return r.appearStatus=null,e.in?t?(n=u,r.appearStatus=c):n=d:n=e.unmountOnExit||e.mountOnEnter?l:u,r.state={status:n},r.nextCallback=null,r}e=a,(n=t).prototype=Object.create(e.prototype),(n.prototype.constructor=n).__proto__=e;var n=t.prototype;return n.getChildContext=function(){return{transitionGroup:null}},t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===l?{status:u}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;e!==this.props&&(e=this.state.status,this.props.in?e!==c&&e!==d&&(t=c):e!==c&&e!==d||(t=p)),this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n=this.props.timeout,r=e=t=n;return null!=n&&"number"!=typeof n&&(r=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:r,enter:e,appear:t}},n.updateStatus=function(e,t){var n;void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),n=i.default.findDOMNode(this),t===c?this.performEnter(n,e):this.performExit(n)):this.props.unmountOnExit&&this.state.status===u&&this.setState({status:l})},n.performEnter=function(e,t){var n=this,r=this.props.enter,a=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,o=this.getTimeouts(),i=a?o.appear:o.enter;t||r?(this.props.onEnter(e,a),this.safeSetState({status:c},function(){n.props.onEntering(e,a),n.onTransitionEnd(e,i,function(){n.safeSetState({status:d},function(){n.props.onEntered(e,a)})})})):this.safeSetState({status:d},function(){n.props.onEntered(e)})},n.performExit=function(e){var t=this,n=this.props.exit,r=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:p},function(){t.props.onExiting(e),t.onTransitionEnd(e,r.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(t){var n=this,r=!0;return this.nextCallback=function(e){r&&(r=!1,n.nextCallback=null,t(e))},this.nextCallback.cancel=function(){r=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);n=null==t&&!this.props.addEndListener;!e||n?setTimeout(this.nextCallback,0):(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t))},n.render=function(){var e=this.state.status;if(e===l)return null;var t=this.props,n=t.children,t=function(e,t){if(null==e)return{};for(var n,r={},a=Object.keys(e),o=0;oa;)!i(r,n=t[a++])||~l(o,n)||o.push(n);return o}},function(e,t,n){var r=n(93);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(91),a=n(61).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,a)}},function(e,t,n){var r=n(45),a=n(42),o=n(30),i=n(56),s=n(24),l=n(88),u=Object.getOwnPropertyDescriptor;t.f=n(21)?u:function(e,t){if(e=o(e),t=i(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";t.__esModule=!0,t.default=t.EXITING=t.ENTERED=t.ENTERING=t.EXITED=t.UNMOUNTED=void 0;var r=function(e){{if(e&&e.__esModule)return e;var t,n={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&((t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,r):{}).get||t.set?Object.defineProperty(n,r,t):n[r]=e[r]);return n.default=e,n}}(n(0)),o=s(n(1)),i=s(n(9)),a=n(10);n(97);function s(e){return e&&e.__esModule?e:{default:e}}var l="unmounted",u=(t.UNMOUNTED=l,"exited"),c=(t.EXITED=u,"entering"),d=(t.ENTERING=c,"entered"),p=(t.ENTERED=d,"exiting"),n=(t.EXITING=p,function(a){var e;function t(e,t){var n,r=a.call(this,e,t)||this,t=t.transitionGroup,t=t&&!t.isMounting?e.enter:e.appear;return r.appearStatus=null,e.in?t?(n=u,r.appearStatus=c):n=d:n=e.unmountOnExit||e.mountOnEnter?l:u,r.state={status:n},r.nextCallback=null,r}e=a,(n=t).prototype=Object.create(e.prototype),(n.prototype.constructor=n).__proto__=e;var n=t.prototype;return n.getChildContext=function(){return{transitionGroup:null}},t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===l?{status:u}:null},n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;e!==this.props&&(e=this.state.status,this.props.in?e!==c&&e!==d&&(t=c):e!==c&&e!==d||(t=p)),this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n=this.props.timeout,r=e=t=n;return null!=n&&"number"!=typeof n&&(r=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:r,enter:e,appear:t}},n.updateStatus=function(e,t){var n;void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),n=i.default.findDOMNode(this),t===c?this.performEnter(n,e):this.performExit(n)):this.props.unmountOnExit&&this.state.status===u&&this.setState({status:l})},n.performEnter=function(e,t){var n=this,r=this.props.enter,a=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,o=this.getTimeouts(),i=a?o.appear:o.enter;t||r?(this.props.onEnter(e,a),this.safeSetState({status:c},function(){n.props.onEntering(e,a),n.onTransitionEnd(e,i,function(){n.safeSetState({status:d},function(){n.props.onEntered(e,a)})})})):this.safeSetState({status:d},function(){n.props.onEntered(e)})},n.performExit=function(e){var t=this,n=this.props.exit,r=this.getTimeouts();n?(this.props.onExit(e),this.safeSetState({status:p},function(){t.props.onExiting(e),t.onTransitionEnd(e,r.exit,function(){t.safeSetState({status:u},function(){t.props.onExited(e)})})})):this.safeSetState({status:u},function(){t.props.onExited(e)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(t){var n=this,r=!0;return this.nextCallback=function(e){r&&(r=!1,n.nextCallback=null,t(e))},this.nextCallback.cancel=function(){r=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);n=null==t&&!this.props.addEndListener;!e||n?setTimeout(this.nextCallback,0):(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t))},n.render=function(){var e,t,n=this.state.status;return n===l?null:(e=(t=this.props).children,delete(t=function(e,t){if(null==e)return{};for(var n,r={},a=Object.keys(e),o=0;o=20?"ste":"de")},week:{dow:1,doy:4}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration @@ -294,7 +294,7 @@ var t;e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_ //! moment.js locale configuration var t;e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var r=e*100+t;if(r<600)return"凌晨";else if(r<900)return"早上";else if(r<1130)return"上午";else if(r<1230)return"中午";else if(r<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){!function(e){"use strict"; //! moment.js locale configuration -var t;e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){if(e===12)e=0;if(t==="凌晨"||t==="早上"||t==="上午")return e;else if(t==="中午")return e>=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var r=e*100+t;if(r<600)return"凌晨";else if(r<900)return"早上";else if(r<1130)return"上午";else if(r<1230)return"中午";else if(r<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t){var n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){function n(){return e.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t68?1900:2e3)},a=function(t){return function(e){this[t]=+e}},o=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],i=function(e){var t=h[e];return t&&(t.indexOf?t:t.s.concat(t.f))},s=function(e,t){var n,r=h.meridiem;if(r){for(var a=1;a<=24;a+=1)if(e.indexOf(r(a,0,t))>-1){n=a>12;break}}else n=e===(t?"pm":"PM");return n},p={A:[n,function(e){this.afternoon=s(e,!1)}],a:[n,function(e){this.afternoon=s(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[e,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[t,a("seconds")],ss:[t,a("seconds")],m:[t,a("minutes")],mm:[t,a("minutes")],H:[t,a("hours")],h:[t,a("hours")],HH:[t,a("hours")],hh:[t,a("hours")],D:[t,a("day")],DD:[e,a("day")],Do:[n,function(e){var t=h.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[t,a("month")],MM:[e,a("month")],MMM:[n,function(e){var t=i("months"),n=(i("monthsShort")||t.map(function(e){return e.slice(0,3)})).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[n,function(e){var t=i("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,a("year")],YY:[e,function(e){this.year=r(e)}],YYYY:[/\d{4}/,a("year")],Z:o,ZZ:o};function b(e){var t,a;t=e,a=h&&h.formats;for(var u=(e=t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,t,n){var r=n&&n.toUpperCase();return t||a[n]||l[n]||a[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})})).match(d),c=u.length,n=0;n-1)return new Date(("X"===t?1e3:1)*e);var r=b(t)(e),a=r.year,o=r.month,i=r.day,s=r.hours,l=r.minutes,u=r.seconds,c=r.milliseconds,d=r.zone,p=new Date,f=i||(a||o?1:p.getDate()),h=a||p.getFullYear(),m=0;a&&!o||(m=o>0?o-1:p.getMonth());var y=s||0,g=l||0,_=u||0,v=c||0;return d?new Date(Date.UTC(h,m,f,y,g,_,v+60*d.offset*1e3)):n?new Date(Date.UTC(h,m,f,y,g,_,v)):new Date(h,m,f,y,g,_,v)}catch(e){return new Date("")}}(t,a,n),this.init(),l&&!0!==l&&(this.$L=this.locale(l).$L),s&&t!=this.format(a)&&(this.$d=new Date("")),h={}}else if(a instanceof Array)for(var u=a.length,c=1;c<=u;c+=1){r[1]=a[c-1];var d=p.apply(this,r);if(d.isValid()){this.$d=d.$d,this.$L=d.$L,this.init();break}c===u&&(this.$d=new Date(""))}else f.call(this,e)}}}()},function(e,t,n){e.exports=function(){"use strict";return function(e,t,r){r.updateLocale=function(e,t){var n=r.Ls[e];if(n)return(t?Object.keys(t):[]).forEach(function(e){n[e]=t[e]}),n}}}()},function(e,t,n){e.exports=function(e,t,n){function r(e,t,n,r,a){var e=e.name?e:e.$locale(),t=s(e[t]),n=s(e[n]),o=t||n.map(function(e){return e.slice(0,r)});if(!a)return o;var i=e.weekStart;return o.map(function(e,t){return o[(t+(i||0))%7]})}function a(){return n.Ls[n.locale()]}function o(e,t){return e.formats[t]||e.formats[t.toUpperCase()].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})}var t=t.prototype,s=function(e){return e&&(e.indexOf?e:e.s)};t.localeData=function(){return function(){var t=this;return{months:function(e){return e?e.format("MMMM"):r(t,"months")},monthsShort:function(e){return e?e.format("MMM"):r(t,"monthsShort","months",3)},firstDayOfWeek:function(){return t.$locale().weekStart||0},weekdays:function(e){return e?e.format("dddd"):r(t,"weekdays")},weekdaysMin:function(e){return e?e.format("dd"):r(t,"weekdaysMin","weekdays",2)},weekdaysShort:function(e){return e?e.format("ddd"):r(t,"weekdaysShort","weekdays",3)},longDateFormat:function(e){return o(t.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}}.bind(this)()},n.localeData=function(){var t=a();return{firstDayOfWeek:function(){return t.weekStart||0},weekdays:function(){return n.weekdays()},weekdaysShort:function(){return n.weekdaysShort()},weekdaysMin:function(){return n.weekdaysMin()},months:function(){return n.months()},monthsShort:function(){return n.monthsShort()},longDateFormat:function(e){return o(t,e)},meridiem:t.meridiem,ordinal:t.ordinal}},n.months=function(){return r(a(),"months")},n.monthsShort=function(){return r(a(),"monthsShort","months",3)},n.weekdays=function(e){return r(a(),"weekdays",null,null,e)},n.weekdaysShort=function(e){return r(a(),"weekdaysShort","weekdays",3,e)},n.weekdaysMin=function(e){return r(a(),"weekdaysMin","weekdays",2,e)}}},function(e,t,n){e.exports=function(){"use strict";var i="month",s="quarter";return function(e,t){var n=t.prototype;n.quarter=function(e){return this.$utils().u(e)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(e-1))};var r=n.add;n.add=function(e,t){return e=Number(e),this.$utils().p(t)===s?this.add(3*e,i):r.bind(this)(e,t)};var o=n.startOf;n.startOf=function(e,t){var n=this.$utils(),r=!!n.u(t)||t;if(n.p(e)===s){var a=this.quarter()-1;return r?this.month(3*a).startOf(i).startOf("day"):this.month(3*a+2).endOf(i).endOf("day")}return o.bind(this)(e,t)}}}()},function(e,t,n){e.exports=function(){"use strict";return function(e,t,n){var r=t.prototype,o=r.format;n.en.ordinal=function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"},r.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return o.bind(this)(e);var r=this.$utils(),a=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return n.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return n.ordinal(t.week(),"W");case"w":case"ww":return r.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return r.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return r.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}});return o.bind(this)(a)}}}()},function(e,t,n){e.exports=function(){"use strict";var s="week",l="year";return function(e,t,i){var n=t.prototype;n.week=function(e){if(void 0===e&&(e=null),null!==e)return this.add(7*(e-this.week()),"day");var t=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var n=i(this).startOf(l).add(1,l).date(t),r=i(this).endOf(s);if(n.isBefore(r))return 1}var a=i(this).startOf(l).date(t).startOf(s).subtract(1,"millisecond"),o=this.diff(a,s,!0);return o<0?i(this).startOf("week").week():Math.ceil(o)},n.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}()},function(e,t,n){"use strict";var r=n(25),m=(Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(n(63))),i=r(n(372)),a=r(n(65)),o=r(n(64)),b=r(n(66)),w=r(n(229)),s=r(n(230)),l=r(n(231)),y=r(n(378)),M=n(387),u={state:"",valueName:"value",trigger:"onChange",inputValues:[]},r=function(){function r(e){var t=this,n=1=11?e:e+12;else if(t==="下午"||t==="晚上")return e+12},meridiem:function(e,t,n){var r=e*100+t;if(r<600)return"凌晨";else if(r<900)return"早上";else if(r<1130)return"上午";else if(r<1230)return"中午";else if(r<1800)return"下午";else return"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(8))},function(e,t,n){var r=n(37).default,a=n(390);e.exports=function(e){return e=a(e,"string"),"symbol"===r(e)?e:String(e)},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){function n(){return e.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t68?1900:2e3)},a=function(t){return function(e){this[t]=+e}},o=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],i=function(e){var t=h[e];return t&&(t.indexOf?t:t.s.concat(t.f))},s=function(e,t){var n,r=h.meridiem;if(r){for(var a=1;a<=24;a+=1)if(e.indexOf(r(a,0,t))>-1){n=a>12;break}}else n=e===(t?"pm":"PM");return n},p={A:[n,function(e){this.afternoon=s(e,!1)}],a:[n,function(e){this.afternoon=s(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[e,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[t,a("seconds")],ss:[t,a("seconds")],m:[t,a("minutes")],mm:[t,a("minutes")],H:[t,a("hours")],h:[t,a("hours")],HH:[t,a("hours")],hh:[t,a("hours")],D:[t,a("day")],DD:[e,a("day")],Do:[n,function(e){var t=h.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[t,a("month")],MM:[e,a("month")],MMM:[n,function(e){var t=i("months"),n=(i("monthsShort")||t.map(function(e){return e.slice(0,3)})).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[n,function(e){var t=i("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,a("year")],YY:[e,function(e){this.year=r(e)}],YYYY:[/\d{4}/,a("year")],Z:o,ZZ:o};function b(e){var t,a;t=e,a=h&&h.formats;for(var u=(e=t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,t,n){var r=n&&n.toUpperCase();return t||a[n]||l[n]||a[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})})).match(d),c=u.length,n=0;n-1)return new Date(("X"===t?1e3:1)*e);var r=b(t)(e),a=r.year,o=r.month,i=r.day,s=r.hours,l=r.minutes,u=r.seconds,c=r.milliseconds,d=r.zone,p=new Date,f=i||(a||o?1:p.getDate()),h=a||p.getFullYear(),m=0;a&&!o||(m=o>0?o-1:p.getMonth());var y=s||0,g=l||0,_=u||0,v=c||0;return d?new Date(Date.UTC(h,m,f,y,g,_,v+60*d.offset*1e3)):n?new Date(Date.UTC(h,m,f,y,g,_,v)):new Date(h,m,f,y,g,_,v)}catch(e){return new Date("")}}(t,a,n),this.init(),l&&!0!==l&&(this.$L=this.locale(l).$L),s&&t!=this.format(a)&&(this.$d=new Date("")),h={}}else if(a instanceof Array)for(var u=a.length,c=1;c<=u;c+=1){r[1]=a[c-1];var d=p.apply(this,r);if(d.isValid()){this.$d=d.$d,this.$L=d.$L,this.init();break}c===u&&(this.$d=new Date(""))}else f.call(this,e)}}}()},function(e,t,n){e.exports=function(){"use strict";return function(e,t,r){r.updateLocale=function(e,t){var n=r.Ls[e];if(n)return(t?Object.keys(t):[]).forEach(function(e){n[e]=t[e]}),n}}}()},function(e,t,n){e.exports=function(e,t,n){function r(e,t,n,r,a){var o,e=e.name?e:e.$locale(),t=s(e[t]),n=s(e[n]),i=t||n.map(function(e){return e.slice(0,r)});return a?(o=e.weekStart,i.map(function(e,t){return i[(t+(o||0))%7]})):i}function a(){return n.Ls[n.locale()]}function o(e,t){return e.formats[t]||e.formats[t.toUpperCase()].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,n){return t||n.slice(1)})}var t=t.prototype,s=function(e){return e&&(e.indexOf?e:e.s)};t.localeData=function(){return function(){var t=this;return{months:function(e){return e?e.format("MMMM"):r(t,"months")},monthsShort:function(e){return e?e.format("MMM"):r(t,"monthsShort","months",3)},firstDayOfWeek:function(){return t.$locale().weekStart||0},weekdays:function(e){return e?e.format("dddd"):r(t,"weekdays")},weekdaysMin:function(e){return e?e.format("dd"):r(t,"weekdaysMin","weekdays",2)},weekdaysShort:function(e){return e?e.format("ddd"):r(t,"weekdaysShort","weekdays",3)},longDateFormat:function(e){return o(t.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}}.bind(this)()},n.localeData=function(){var t=a();return{firstDayOfWeek:function(){return t.weekStart||0},weekdays:function(){return n.weekdays()},weekdaysShort:function(){return n.weekdaysShort()},weekdaysMin:function(){return n.weekdaysMin()},months:function(){return n.months()},monthsShort:function(){return n.monthsShort()},longDateFormat:function(e){return o(t,e)},meridiem:t.meridiem,ordinal:t.ordinal}},n.months=function(){return r(a(),"months")},n.monthsShort=function(){return r(a(),"monthsShort","months",3)},n.weekdays=function(e){return r(a(),"weekdays",null,null,e)},n.weekdaysShort=function(e){return r(a(),"weekdaysShort","weekdays",3,e)},n.weekdaysMin=function(e){return r(a(),"weekdaysMin","weekdays",2,e)}}},function(e,t,n){e.exports=function(){"use strict";var i="month",s="quarter";return function(e,t){var n=t.prototype;n.quarter=function(e){return this.$utils().u(e)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(e-1))};var r=n.add;n.add=function(e,t){return e=Number(e),this.$utils().p(t)===s?this.add(3*e,i):r.bind(this)(e,t)};var o=n.startOf;n.startOf=function(e,t){var n=this.$utils(),r=!!n.u(t)||t;if(n.p(e)===s){var a=this.quarter()-1;return r?this.month(3*a).startOf(i).startOf("day"):this.month(3*a+2).endOf(i).endOf("day")}return o.bind(this)(e,t)}}}()},function(e,t,n){e.exports=function(){"use strict";return function(e,t){var n=t.prototype,o=n.format;n.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return o.bind(this)(e);var r=this.$utils(),a=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return n.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return n.ordinal(t.week(),"W");case"w":case"ww":return r.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return r.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return r.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}});return o.bind(this)(a)}}}()},function(e,t,n){e.exports=function(){"use strict";var s="week",l="year";return function(e,t,i){var n=t.prototype;n.week=function(e){if(void 0===e&&(e=null),null!==e)return this.add(7*(e-this.week()),"day");var t=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var n=i(this).startOf(l).add(1,l).date(t),r=i(this).endOf(s);if(n.isBefore(r))return 1}var a=i(this).startOf(l).date(t).startOf(s).subtract(1,"millisecond"),o=this.diff(a,s,!0);return o<0?i(this).startOf("week").week():Math.ceil(o)},n.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}()},function(e,t,n){"use strict";var r=n(25),m=(Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(n(67))),i=r(n(384)),a=r(n(68)),o=r(n(37)),b=r(n(69)),w=r(n(236)),s=r(n(237)),l=r(n(238)),y=r(n(391)),M=n(400),u={state:"",valueName:"value",trigger:"onChange",inputValues:[]},r=function(){function r(e){var t=this,n=1