From 3dad97038a357cec3d8d482d0a3033aa5305e0ec Mon Sep 17 00:00:00 2001 From: srikanth Date: Wed, 5 Aug 2020 13:03:25 +0530 Subject: [PATCH] Initial commit --- CompareTables/.gitignore | 31 + .../.mvn/wrapper/MavenWrapperDownloader.java | 117 + CompareTables/.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes .../.mvn/wrapper/maven-wrapper.properties | 2 + CompareTables/mvnw | 310 +++ CompareTables/mvnw.cmd | 182 ++ CompareTables/pom.xml | 99 + .../src/main/java/META-INF/MANIFEST.MF | 3 + .../com/demo/CompareTablesApplication.java | 14 + .../main/java/com/demo/DataSourceDbUtil.java | 96 + .../demo/config/SecurityConfiguration.java | 51 + .../com/demo/controller/MainController.java | 255 +++ .../controller/VerifyMigrationController.java | 58 + .../com/demo/service/CompareTwoTables.java | 1998 +++++++++++++++++ .../src/main/java/com/demo/service/Test.java | 247 ++ .../src/main/resources/application.properties | 36 + .../resources/static/3rdpartylicenses.txt | 268 +++ .../src/main/resources/static/favicon.ico | Bin 0 -> 948 bytes .../src/main/resources/static/index.html | 18 + .../static/main.6dc7dc0e2b978f7aa770.js | 1 + .../static/polyfills.a4021de53358bb0fec14.js | 1 + .../static/runtime.e227d1a0e31cbccbf8ec.js | 1 + .../static/styles.280e991c5992f8630bc9.css | 0 .../src/main/resources/test-server.ldif | 141 ++ .../demo/CompareTablesApplicationTests.java | 13 + 25 files changed, 3942 insertions(+) create mode 100644 CompareTables/.gitignore create mode 100644 CompareTables/.mvn/wrapper/MavenWrapperDownloader.java create mode 100644 CompareTables/.mvn/wrapper/maven-wrapper.jar create mode 100644 CompareTables/.mvn/wrapper/maven-wrapper.properties create mode 100644 CompareTables/mvnw create mode 100644 CompareTables/mvnw.cmd create mode 100644 CompareTables/pom.xml create mode 100644 CompareTables/src/main/java/META-INF/MANIFEST.MF create mode 100644 CompareTables/src/main/java/com/demo/CompareTablesApplication.java create mode 100644 CompareTables/src/main/java/com/demo/DataSourceDbUtil.java create mode 100644 CompareTables/src/main/java/com/demo/config/SecurityConfiguration.java create mode 100644 CompareTables/src/main/java/com/demo/controller/MainController.java create mode 100644 CompareTables/src/main/java/com/demo/controller/VerifyMigrationController.java create mode 100644 CompareTables/src/main/java/com/demo/service/CompareTwoTables.java create mode 100644 CompareTables/src/main/java/com/demo/service/Test.java create mode 100644 CompareTables/src/main/resources/application.properties create mode 100644 CompareTables/src/main/resources/static/3rdpartylicenses.txt create mode 100644 CompareTables/src/main/resources/static/favicon.ico create mode 100644 CompareTables/src/main/resources/static/index.html create mode 100644 CompareTables/src/main/resources/static/main.6dc7dc0e2b978f7aa770.js create mode 100644 CompareTables/src/main/resources/static/polyfills.a4021de53358bb0fec14.js create mode 100644 CompareTables/src/main/resources/static/runtime.e227d1a0e31cbccbf8ec.js create mode 100644 CompareTables/src/main/resources/static/styles.280e991c5992f8630bc9.css create mode 100644 CompareTables/src/main/resources/test-server.ldif create mode 100644 CompareTables/src/test/java/com/demo/CompareTablesApplicationTests.java diff --git a/CompareTables/.gitignore b/CompareTables/.gitignore new file mode 100644 index 0000000..a2a3040 --- /dev/null +++ b/CompareTables/.gitignore @@ -0,0 +1,31 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/CompareTables/.mvn/wrapper/MavenWrapperDownloader.java b/CompareTables/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/CompareTables/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * 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 + * + * https://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. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/CompareTables/.mvn/wrapper/maven-wrapper.jar b/CompareTables/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054 GIT binary patch literal 50710 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 EfAhh=DF6Tf literal 0 HcmV?d00001 diff --git a/CompareTables/.mvn/wrapper/maven-wrapper.properties b/CompareTables/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /dev/null +++ b/CompareTables/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/CompareTables/mvnw b/CompareTables/mvnw new file mode 100644 index 0000000..a16b543 --- /dev/null +++ b/CompareTables/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 +# +# https://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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/CompareTables/mvnw.cmd b/CompareTables/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/CompareTables/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/CompareTables/pom.xml b/CompareTables/pom.xml new file mode 100644 index 0000000..22badd8 --- /dev/null +++ b/CompareTables/pom.xml @@ -0,0 +1,99 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.3.1.RELEASE + + + com.example + CompareTables + 0.0.1-SNAPSHOT + CompareTables + Demo project for Spring Boot + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.ldap + spring-ldap-core + + + org.springframework.security + spring-security-ldap + + + com.unboundid + unboundid-ldapsdk + + + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + mysql + mysql-connector-java + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + com.oracle.database.jdbc + ojdbc8 + 18.3.0.0 + + + + + com.zaxxer + HikariCP + 3.4.5 + + + + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/CompareTables/src/main/java/META-INF/MANIFEST.MF b/CompareTables/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/CompareTables/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/CompareTables/src/main/java/com/demo/CompareTablesApplication.java b/CompareTables/src/main/java/com/demo/CompareTablesApplication.java new file mode 100644 index 0000000..1f9fbfc --- /dev/null +++ b/CompareTables/src/main/java/com/demo/CompareTablesApplication.java @@ -0,0 +1,14 @@ +package com.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + + +@SpringBootApplication +public class CompareTablesApplication { + + public static void main(String[] args) { + SpringApplication.run(CompareTablesApplication.class, args); + } + +} diff --git a/CompareTables/src/main/java/com/demo/DataSourceDbUtil.java b/CompareTables/src/main/java/com/demo/DataSourceDbUtil.java new file mode 100644 index 0000000..8241ea5 --- /dev/null +++ b/CompareTables/src/main/java/com/demo/DataSourceDbUtil.java @@ -0,0 +1,96 @@ +package com.demo; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +@Configuration +@PropertySource("classpath:application.properties") +public class DataSourceDbUtil { + + @Autowired + private Environment env; + + @Bean + public DataSource sourceDataSource() { + + HikariConfig hikariConfig = new HikariConfig(); + hikariConfig.setDriverClassName(env.getProperty("sourceDataSource.driver-class-name")); + hikariConfig.setJdbcUrl(env.getProperty("sourceDataSource.url")); + hikariConfig.setUsername(env.getProperty("sourceDataSource.username")); + hikariConfig.setPassword(env.getProperty("sourceDataSource.password")); + + hikariConfig.setMaximumPoolSize(10); + hikariConfig.setPoolName("springHikariCP"); + hikariConfig.setMaxLifetime(300000); + + hikariConfig.addDataSourceProperty("dataSource.cachePrepStmts", "true"); + hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSize", "250"); + hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSqlLimit", "2048"); + hikariConfig.addDataSourceProperty("dataSource.useServerPrepStmts", "true"); + + HikariDataSource dataSource = new HikariDataSource(hikariConfig); + + return dataSource; + + } + + + @Bean + public DataSource destinationDataSource() { + + HikariConfig hikariConfig = new HikariConfig(); + hikariConfig.setDriverClassName(env.getProperty("desticationDataSource.driver-class-name")); + hikariConfig.setJdbcUrl(env.getProperty("desticationDataSource.url")); + hikariConfig.setUsername(env.getProperty("desticationDataSource.username")); + hikariConfig.setPassword(env.getProperty("desticationDataSource.password")); + + hikariConfig.setMaximumPoolSize(10); + hikariConfig.setPoolName("springHikariCP"); + hikariConfig.setMaxLifetime(300000); + + hikariConfig.addDataSourceProperty("dataSource.cachePrepStmts", "true"); + hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSize", "250"); + hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSqlLimit", "2048"); + hikariConfig.addDataSourceProperty("dataSource.useServerPrepStmts", "true"); + + HikariDataSource dataSource = new HikariDataSource(hikariConfig); + + return dataSource; + + } + + + @Bean + public DataSource appDataSource() { + + HikariConfig hikariConfig = new HikariConfig(); + hikariConfig.setDriverClassName(env.getProperty("appDB.driver-class-name")); + hikariConfig.setJdbcUrl(env.getProperty("appDB.url")); + hikariConfig.setUsername(env.getProperty("appDB.username")); + hikariConfig.setPassword(env.getProperty("appDB.password")); + + hikariConfig.setMaximumPoolSize(10); + hikariConfig.setPoolName("springHikariCP"); + hikariConfig.setMaxLifetime(300000); + + hikariConfig.addDataSourceProperty("dataSource.cachePrepStmts", "true"); + hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSize", "250"); + hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSqlLimit", "2048"); + hikariConfig.addDataSourceProperty("dataSource.useServerPrepStmts", "true"); + + HikariDataSource dataSource = new HikariDataSource(hikariConfig); + + return dataSource; + + } + + +} diff --git a/CompareTables/src/main/java/com/demo/config/SecurityConfiguration.java b/CompareTables/src/main/java/com/demo/config/SecurityConfiguration.java new file mode 100644 index 0000000..3879382 --- /dev/null +++ b/CompareTables/src/main/java/com/demo/config/SecurityConfiguration.java @@ -0,0 +1,51 @@ +package com.demo.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.ldap.DefaultSpringSecurityContextSource; + +import java.util.Arrays; + +@EnableGlobalMethodSecurity(prePostEnabled = true) +@Configuration +public class SecurityConfiguration extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .anyRequest().authenticated() + .and() + .httpBasic() + .and() + .csrf().disable() + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); + http.cors(); + + } + + + @Override + public void configure(AuthenticationManagerBuilder auth) throws Exception { + auth + .ldapAuthentication() + .userDnPatterns("uid={0},ou=people") + .groupSearchBase("ou=groups") + .contextSource(contextSource()) + .passwordCompare() + .passwordAttribute("userPassword"); + } + + @Bean + public DefaultSpringSecurityContextSource contextSource() { + return new DefaultSpringSecurityContextSource(Arrays.asList("ldap://localhost:8389/"), "dc=springframework,dc=org"); + } +} + + diff --git a/CompareTables/src/main/java/com/demo/controller/MainController.java b/CompareTables/src/main/java/com/demo/controller/MainController.java new file mode 100644 index 0000000..cbb08d4 --- /dev/null +++ b/CompareTables/src/main/java/com/demo/controller/MainController.java @@ -0,0 +1,255 @@ +package com.demo.controller; + +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.demo.service.CompareTwoTables; +import com.unboundid.util.json.JSONObject; + +@RestController +@RequestMapping("/api") +@CrossOrigin +public class MainController { + + @Autowired + CompareTwoTables service; + + @RequestMapping("/getCompareData") + public Map demo(@RequestParam("srcTable") String srcTable, + @RequestParam("destTable") String destTable, @RequestParam("srcColumn") String srcColumn, + @RequestParam("destColumn") String destColumn, @RequestParam("srcKey") String srcKey, + @RequestParam("destKey") String destKey, @RequestParam int currentPageNo) throws Exception { + + System.out.println(srcTable + "-->" + destTable + "-->" + srcColumn + "-->" + destColumn); + + return service.getCompareTwoTables(srcTable, destTable, srcColumn, destColumn, srcKey, destKey, currentPageNo); + + } + + @RequestMapping("/getSrcRow") + public Map getSrcRow(@RequestParam("tableName") String tableName, + @RequestParam("columns") String columns, @RequestParam("tableKey") String tableKey, + @RequestParam("keyValue") String keyValue) throws Exception { + + System.out.println(tableName + "-->" + columns + "-->" + tableKey); + + return service.getSrcRow(tableName, columns, tableKey, keyValue); + + } + + @RequestMapping("/getDestRow") + public Map getDestRow(@RequestParam("tableName") String tableName, + @RequestParam("columns") String columns, @RequestParam("tableKey") String tableKey, + @RequestParam("keyValue") String keyValue) throws Exception { + + System.out.println(tableName + "-->" + columns + "-->" + tableKey); + + return service.getDestRow(tableName, columns, tableKey, keyValue); + + } + + @RequestMapping(value = "/updateSourceRowById", method = RequestMethod.POST) + public String updateSourceRowById(@RequestBody Map map) throws Exception { + + System.out.println(map); + + return service.updateSourceRowById(map); + + } + + @RequestMapping(value = "/updateDestRowById", method = RequestMethod.POST) + public String updateDestRowById(@RequestBody Map map) throws Exception { + + System.out.println(map); + + return service.updateDestRowById(map); + + } + + @RequestMapping("/dataMigration") + public Map dataMigration(@RequestParam("srcTable") String srcTable, + @RequestParam("destTable") String destTable, @RequestParam("srcColumn") String srcColumn, + @RequestParam("destColumn") String destColumn, @RequestParam("srcKey") String srcKey, + @RequestParam("destKey") String destKey, @RequestParam String query) throws Exception { + + System.out.println("Tables : "+srcTable + "-->" + destTable); + System.out.println("Cols :"+ srcColumn + "-->" + destColumn); + String status = service.dataMigration(srcTable, destTable, srcColumn, destColumn, srcKey, destKey, query); + + Map map = new HashMap<>(); + + map.put("status", status); + + return map; + + } + + @RequestMapping("/getCategory") + public List> getCategory(@RequestParam String category) throws Exception { + + return service.getCategory(category); + + } + + @RequestMapping("/saveRecommendedName") + public Map saveRecommendedName(@RequestBody Map map) throws Exception { + + System.out.println(map); + + String status = service.saveRecommendedName(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + + } + + @RequestMapping("/getCategoryRecommendedList") + public List> getCategoryRecommendedList(@RequestParam String NAME) throws Exception { + + return service.getCategoryRecommendedList(NAME); + + } + + @RequestMapping("/approveCategoryValue") + public Map approveCategoryValue(@RequestBody Map map) throws Exception { + + System.out.println(map); + + String status = service.approveCategoryValue(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + + } + + @RequestMapping("/getCategories") + public List> getCategories() throws Exception { + + return service.getCategories(); + + } + + @RequestMapping(value = "/getSrcTree") + public Map getSrcTree() throws Exception { + + return service.getSrcTablesHierarchy(); + + } + + @RequestMapping(value = "/getDestTree") + public Map getDestTree() throws Exception { + + return service.getDestTablesHierarchy(); + + } + + @RequestMapping("/saveRule") + public Map saveRule(@RequestBody Map map) { + + System.out.println(map); + String status = service.saveRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } + + @RequestMapping("/migrateBasedOnIgnoreColumnRule") + public Map migrateBasedOnIgnoreColumnRule(@RequestBody Map map) + throws ClassNotFoundException, SQLException { + + String status = service.migrateBasedOnIgnoreColumnRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } + + @RequestMapping("/getRules") + public List> getRules() throws Exception { + + return service.getRules(); + + } + + @RequestMapping("/migrateBasedOnSplitRule") + public Map migrateBasedOnSplitRule(@RequestBody Map map) + throws ClassNotFoundException, SQLException { + + String status = service.migrateBasedOnSplitRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } + + @RequestMapping("/migrateBasedOnMergeColumnsRule") + public Map migrateBasedOnMergeColumnsRule(@RequestBody Map map) + throws ClassNotFoundException, SQLException { + + String status = service.migrateBasedOnMergeColumnsRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } + + @RequestMapping("/migrateBasedOnScalarColumnsRule") + public Map migrateBasedOnScalarColumnsRule(@RequestBody Map map) + throws ClassNotFoundException, SQLException { + + String status = service.migrateBasedOnScalarColumnsRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } + + + @RequestMapping("/migrateBasedOnAggregateColumnsRule") + public Map migrateBasedOnAggregateColumnsRule(@RequestBody Map map) + throws ClassNotFoundException, SQLException { + + String status = service.migrateBasedOnAggregateColumnsRule(map); + + Map res = new HashMap<>(); + + res.put("status", status); + + return res; + } + + @RequestMapping("/getDBFunctions") + public List getDBFunctions() throws SQLException{ + + return service.getDBFunctions(); + + } + +} diff --git a/CompareTables/src/main/java/com/demo/controller/VerifyMigrationController.java b/CompareTables/src/main/java/com/demo/controller/VerifyMigrationController.java new file mode 100644 index 0000000..8a1004b --- /dev/null +++ b/CompareTables/src/main/java/com/demo/controller/VerifyMigrationController.java @@ -0,0 +1,58 @@ +package com.demo.controller; + +import org.springframework.web.bind.annotation.RestController; + +import com.demo.service.CompareTwoTables; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + + + +@RestController +@CrossOrigin +public class VerifyMigrationController { + @Autowired + CompareTwoTables service ; + + + @RequestMapping("/tables") + @ResponseBody + public Map> getTables() { + + Map> tables = new HashMap>(); + + tables.put("source",service.getSourceTables()); + tables.put("destination",service.getDesticationTables()); + + + + return tables; + } + + + @RequestMapping("/columns") + @ResponseBody + public Map> getColumns(@RequestParam("srcTable") String srcTable,@RequestParam("destTable") String destTable) { + + + Map> tableColumns = new HashMap>(); + + tableColumns.put("source",service.getSourceColumns(srcTable)); + tableColumns.put("destination",service.getDestinationColumns(destTable)); + tableColumns.put("srcKeys",service.getSourceTablesKey(srcTable)); + tableColumns.put("destKeys",service.getDestinationTablesKey(destTable)); + + + return tableColumns; + } + +} diff --git a/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java b/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java new file mode 100644 index 0000000..d89adcc --- /dev/null +++ b/CompareTables/src/main/java/com/demo/service/CompareTwoTables.java @@ -0,0 +1,1998 @@ +package com.demo.service; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Service; + +import com.demo.DataSourceDbUtil; + +@Service +public class CompareTwoTables { + + @Autowired + private DataSourceDbUtil dataSource; + + public Map getCompareTwoTables(String srcTable, String destTable, String srcColumn, + String destColumn, String srcKey, String destKey, int currentPageNo) throws Exception { + + Map map = new HashMap<>(); + + // step3 create the statement object + Long begin = 0l; + Long end = 0l; + + begin = Calendar.getInstance().getTimeInMillis(); + int srcRowcount = getSrcRowCount(srcTable); + int destRowCount = getDestRowCount(srcTable); + int count = 0; + int temp = 0; + + if (srcRowcount > destRowCount) { + System.out.println("elese block "); + count = srcRowcount; + temp = srcRowcount; + System.out.println("count ::: " + count); + } else { + System.out.println("elese block "); + count = destRowCount; + temp = destRowCount; + System.out.println("count ::: " + count); + } + + // LinkedList pages = new LinkedList<>(); + Map pages = new HashMap<>(); + int i = 0; + int j = 1; + System.out.println("count ::: > " + count); + while (count > 0) { + count = count - 10; + System.out.println(i + "==>" + count); + + if (count > 0) + pages.put(j, i); + // pages.add(i); + j++; + i++; + } + System.out.println(pages); + // pages.pop(); + if (pages.size() == 0) { + pages.put(1, 0); + } + + System.out.println("currentPageNo --->" + currentPageNo); + + int startPage = pages.get(currentPageNo) * 10; + int endPage = 0; + try { + + endPage = pages.get(currentPageNo + 1) * 10; + + } catch (Exception e) { + e.printStackTrace(); + endPage = temp; + } + + HashMap source_data = getSource(srcTable, srcColumn, srcKey, startPage, endPage); + map.put("source_data", source_data); + + end = Calendar.getInstance().getTimeInMillis(); + System.out.println("Time for Source" + (end - begin)); + begin = Calendar.getInstance().getTimeInMillis(); + + HashMap dest_data = getDestination(destTable, destColumn, destKey, startPage, endPage); + + map.put("dest_data", dest_data); + + end = Calendar.getInstance().getTimeInMillis(); + System.out.println("Time for Destination" + (end - begin)); + + begin = Calendar.getInstance().getTimeInMillis(); + Map mismatch_data = source_data.entrySet().parallelStream().filter( + e -> dest_data.get(e.getKey()) != null && !dest_data.get(e.getKey()).equalsIgnoreCase(e.getValue())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getKey)); + end = Calendar.getInstance().getTimeInMillis(); + System.out.println("Time for Comparison" + (end - begin)); + + map.put("mismatch_data", mismatch_data); + + // step5 close the connection object + + map.put("pages", pages.keySet()); + map.put("currentPageNo", currentPageNo); + + return map; + } + + public HashMap getSource(String srcTable, String srcColumn, String srcKey, int currentPageNo, + int toPage) throws Exception { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + Statement stmt = con.createStatement(); + + // step4 execute query + // ResultSet rs_source = stmt.executeQuery("select " + srcColumn + " from " + + // srcTable); + + ResultSet rs_source = stmt + .executeQuery(" SELECT * FROM ( SELECT " + srcColumn + ", ROW_NUMBER() OVER (ORDER BY " + srcKey + + ") Row_Num FROM " + srcTable + ") WHERE Row_Num BETWEEN " + currentPageNo + " and " + toPage); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + HashMap rs_source_data = new HashMap(); + while (rs_source.next()) { + StringBuffer coldata = new StringBuffer(); + for (String colName : rs_source_columns) { + coldata.append(rs_source.getString(colName)); + coldata.append("#"); + } + rs_source_data.put(rs_source.getString(srcKey), coldata.toString()); + + } + con.close(); + return rs_source_data; + } + + public HashMap getDestination(String destTable, String destColumn, String destKey, + int currentPageNo, int toPage) throws Exception { + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + Statement stmt = con.createStatement(); + + // step4 execute query + // ResultSet rs_dest = stmt.executeQuery("select " + destColumn + " from " + + // destTable); + + String sql = "SELECT * FROM ( SELECT " + destColumn + ", ROW_NUMBER() OVER (ORDER BY " + destKey + + ") Row_Num FROM " + destTable + ") WHERE Row_Num BETWEEN " + currentPageNo + " and " + toPage; + + System.out.println(sql); + + ResultSet rs_dest = stmt.executeQuery(sql); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_dest.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + HashMap rs_dest_data = new HashMap(); + while (rs_dest.next()) { + StringBuffer coldata = new StringBuffer(); + for (String colName : rs_source_columns) { + coldata.append(rs_dest.getString(colName)); + coldata.append("#"); + } + rs_dest_data.put(rs_dest.getString(destKey), coldata.toString()); + + } + con.close(); + return rs_dest_data; + } + + public List getSourceTables() { + + List tables = new LinkedList<>(); + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + // Creating a Statement object + Statement stmt = con.createStatement(); + // Retrieving the data + ResultSet rs = stmt.executeQuery("SELECT table_name FROM user_tables ORDER BY table_name"); + System.out.println("Tables in the current database: "); + while (rs.next()) { + System.out.print(rs.getString(1)); + tables.add(rs.getString(1)); + System.out.println(); + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + + return tables; + } + + public List getDesticationTables() { + + List tablesList = new LinkedList<>(); + try { + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + // Retrieving the meta data object +// DatabaseMetaData metaData = con.getMetaData(); +// String[] types = { "TABLE" }; +// // Retrieving the columns in the database +// ResultSet tables = metaData.getTables(null, null, "%", types); +// +// while (tables.next()) { +// System.out.println(tables.getString("TABLE_NAME")); +// tablesList.add(tables.getString("TABLE_NAME")); +// } + + Statement stmt = con.createStatement(); + // Retrieving the data + ResultSet rs = stmt.executeQuery("SELECT table_name FROM user_tables ORDER BY table_name"); + System.out.println("Tables in the current database: "); + while (rs.next()) { + System.out.print(rs.getString(1)); + tablesList.add(rs.getString(1)); + System.out.println(); + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + return tablesList; + } + + public List getSourceColumns(String tableName) { + + List columns = new LinkedList<>(); + // Registering the Driver + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT *FROM " + tableName); + ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); + int counter = md.getColumnCount(); + + System.out.println("The column names are as follows:"); + for (int loop = 1; loop <= counter; loop++) { + + columns.add(md.getColumnLabel(loop)); + + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + return columns; + } + + public List getDestinationColumns(String tableName) { + + List columns = new LinkedList<>(); + // Registering the Driver + try { + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT *FROM " + tableName); + ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); + int counter = md.getColumnCount(); + + System.out.println("The column names are as follows:"); + for (int loop = 1; loop <= counter; loop++) { + + columns.add(md.getColumnLabel(loop)); + + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + return columns; + } + + public List getSourceTablesKey(String tableName) { + + List tables = new LinkedList<>(); + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + // Creating a Statement object + Statement stmt = con.createStatement(); + // Retrieving the data + ResultSet rs = stmt + .executeQuery("SELECT cols.column_name FROM user_constraints cons, user_cons_columns cols " + + "WHERE cols.table_name = '" + tableName + "' " + "AND cons.constraint_type = 'P' " + + "AND cons.constraint_name = cols.constraint_name " + "AND cons.owner = cols.owner " + + "ORDER BY cols.table_name, cols.position "); + + System.out.println("Tables in the current database: "); + while (rs.next()) { + System.out.print(rs.getString(1)); + tables.add(rs.getString(1)); + System.out.println(); + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + return tables; + } + + public List getDestinationTablesKey(String tableName) { + + List tables = new LinkedList<>(); + try { + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + // Creating a Statement object + Statement stmt = con.createStatement(); + // Retrieving the data + ResultSet rs = stmt + .executeQuery("SELECT cols.column_name FROM all_constraints cons, all_cons_columns cols " + + "WHERE cols.table_name = '" + tableName + "' " + "AND cons.constraint_type = 'P' " + + "AND cons.constraint_name = cols.constraint_name " + "AND cons.owner = cols.owner " + + "ORDER BY cols.table_name, cols.position "); + + System.out.println("Tables in the current database: "); + while (rs.next()) { + System.out.print(rs.getString(1)); + tables.add(rs.getString(1)); + System.out.println(); + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + return tables; + } + + public Map getSrcRow(String tableName, String columns, String tableKey, String keyValue) + throws Exception { + + Map rowMap = new HashMap<>(); + // Registering the Driver + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT " + columns + " FROM " + tableName + " WHERE " + tableKey + "= '" + keyValue+"'"); + ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); + int counter = md.getColumnCount(); + + System.out.println("The column names are as follows:"); + while (rs.next()) { + for (int loop = 1; loop <= counter; loop++) { + + rowMap.put(md.getColumnLabel(loop), rs.getString(loop)); + + } + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + + System.out.println(rowMap); + return rowMap; + + } + + public Map getDestRow(String tableName, String columns, String tableKey, String keyValue) + throws Exception { + + Map rowMap = new HashMap<>(); + // Registering the Driver + try { + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT " + columns + " FROM " + tableName + " WHERE " + tableKey + "= '" + keyValue+"'"); + ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); + int counter = md.getColumnCount(); + + System.out.println("The column names are as follows:"); + while (rs.next()) { + for (int loop = 1; loop <= counter; loop++) { + + rowMap.put(md.getColumnLabel(loop), rs.getString(loop)); + + } + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + + System.out.println(rowMap); + return rowMap; + + } + + public String updateSourceRowById(Map map) { + + String tableName = (String) map.get("tableName"); + String tableKey = (String) map.get("tableKey"); + String tableKeyValue = (String) map.get("tableKeyValue"); + + Map rowMap = (Map) map.get("rowMap"); + try { + + for (String key : rowMap.keySet()) { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + PreparedStatement ps = con + .prepareStatement("UPDATE " + tableName + " SET " + key + " = ? WHERE " + tableKey + "= ?"); + + ps.setObject(1, rowMap.get(key)); + + ps.setObject(2, tableKeyValue); + + // String sql = "UPDATE "+tableName+" SET "+key+" = "+rowMap.get(key)+" WHERE + // "+tableKey+"="+tableKeyValue; + + // System.out.println("==>"+sql); + + int i = ps.executeUpdate(); + + System.out.println("updated " + i); + // con.commit(); + + con.close(); + } + + } catch (Exception e) { + e.printStackTrace(); + return "Fail"; + + } + + return "success"; + } + + public String updateDestRowById(Map map) { + + String tableName = (String) map.get("tableName"); + String tableKey = (String) map.get("tableKey"); + String tableKeyValue = (String) map.get("tableKeyValue"); + + Map rowMap = (Map) map.get("rowMap"); + try { + + for (String key : rowMap.keySet()) { + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + PreparedStatement ps = con + .prepareStatement("UPDATE " + tableName + " SET " + key + " = ? WHERE " + tableKey + "= ?"); + + ps.setObject(1, rowMap.get(key)); + + ps.setObject(2, tableKeyValue); + + // String sql = "UPDATE "+tableName+" SET "+key+" = "+rowMap.get(key)+" WHERE + // "+tableKey+"="+tableKeyValue; + + // System.out.println("==>"+sql); + + int i = ps.executeUpdate(); + + System.out.println("updated " + i); + // con.commit(); + + con.close(); + + } + + } catch (Exception e) { + e.printStackTrace(); + return "Fail"; + + } + + return "success"; + } + + public String dataMigration(String srcTable, String destTable, String srcColumn, String destColumn, String srcKey, + String destKey, String query) { + System.out.println("------------- Strat dataMigration--------------------- "); + + System.out.println(destColumn); + try { + + Map> map = getSourceData(srcTable, srcColumn, srcKey, query); + + String cols[] = srcColumn.split(","); + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'").execute(); + + for (String k : map.keySet()) { + + Map rowMap = map.get(k); + + Statement stmt = con.createStatement(); + String sql = "INSERT INTO " + destTable + " (" + destColumn + ") VALUES ("; + + for (int i = 0; i < cols.length; i++) { + + String temp = (String) rowMap.get(cols[i].trim()); + String temp2 = null; + + if (i == cols.length - 1) { + try { + if (temp.equals("null")) { + sql = sql + "," + temp2 + ")"; + } else + sql = sql + ",'" + rowMap.get(cols[i].trim()) + "')"; + } catch (Exception e) { + e.printStackTrace(); + sql = sql + "," + temp2 + ")"; + } + } else if (i == 0) { + try { + if (temp.equals("null")) { + sql = sql + temp2; + } else + sql = sql + "'" + rowMap.get(cols[i].trim()) + "'"; + } catch (Exception e) { + e.printStackTrace(); + sql = sql + temp2; + } + } else { + try { + if (temp.equals("null")) { + sql = sql + "," + temp2; + } else + sql = sql + ",'" + rowMap.get(cols[i].trim()) + "'"; + } catch (Exception e) { + e.printStackTrace(); + sql = sql + "," + temp2; + } + } + } + + System.out.println(sql); + + int i = stmt.executeUpdate(sql); + + } + + con.close(); + } catch (Exception e) { + e.printStackTrace(); + return "Migration fail with floowing error --> " + e; + } + + System.out.println("------------- end dataMigration--------------------- "); + return "Migration success"; + + } + + public HashMap> getSourceData(String srcTable, String srcColumn, String srcKey, + String query) throws Exception { + + System.out.println("------------- Strat getSourceData--------------------- "); + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + ResultSet rs_source = stmt.executeQuery("select " + srcColumn + " from " + srcTable + " " + query); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + HashMap> rs_source_data = new HashMap<>(); + + while (rs_source.next()) { + Map rowMap = new HashMap<>(); + for (String colName : rs_source_columns) { + + rowMap.put(colName, rs_source.getString(colName)); + } + + rs_source_data.put(rs_source.getString(srcKey), rowMap); + + } + + con.close(); + System.out.println("------------- end getSourceData--------------------- "); + return rs_source_data; + } + + public List> getCategory(String category) { + + List> categorys = new LinkedList<>(); + + try { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + ResultSet rs_source = stmt.executeQuery("select * FROM LIST_VALUES WHERE category='" + category + "'"); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + System.out.println("000 :: " + rs_source.getString(colName)); + + map.put(colName, rs_source.getString(colName)); + } + categorys.add(map); + + con.close(); + + } + + } catch (Exception e) { + e.printStackTrace(); + } + + return categorys; + } + + public String saveRecommendedName(Map map) { + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + String sql = "INSERT INTO CATEGORY_TRANACTION (CAT_USER, CAT_NAME, CAT_OLD_VALUE, CAT_REC_VALUE, CAT_STATUS, CAT_CATEGORY) VALUES" + + " ('" + map.get("CAT_USER") + "', '" + map.get("CAT_NAME") + "', '" + map.get("CAT_OLD_VALUE") + + "', '" + map.get("CAT_REC_VALUE") + "', '" + map.get("CAT_STATUS") + "', '" + + map.get("CAT_CATEGORY") + "')"; + int i = stmt.executeUpdate(sql); + System.out.println("i ===> " + i); + con.close(); + } catch (Exception e) { + e.printStackTrace(); + return "Fail"; + } + return "Success"; + } + + public List> getCategoryRecommendedList(String NAME) { + + List> categorys = new LinkedList<>(); + + try { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + ResultSet rs_source = stmt.executeQuery( + "select CAT_USER,CAT_NAME,CAT_OLD_VALUE,CAT_REC_VALUE,CAT_STATUS,cat_category from CATEGORY_TRANACTION WHERE cat_name='" + + NAME + "'"); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + System.out.println("000 :: " + rs_source.getString(colName)); + + map.put(colName, rs_source.getString(colName)); + } + categorys.add(map); + + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + + return categorys; + } + + public String approveCategoryValue(Map map) { + + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + String sql = "UPDATE CATEGORY_TRANACTION SET CAT_STATUS = '" + map.get("CAT_STATUS") + + "' WHERE CAT_USER = '" + map.get("CAT_USER") + "' AND CAT_OLD_VALUE = '" + + map.get("CAT_OLD_VALUE") + "' AND CAT_NAME='" + map.get("CAT_NAME") + "'"; + int i = stmt.executeUpdate(sql); + + int j = stmt.executeUpdate("UPDATE LIST_VALUES SET VALUE = '" + map.get("CAT_REC_VALUE") + + "' WHERE NAME = '" + map.get("CAT_NAME") + "'"); + + System.out.println("updated " + i); + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + return "Fail"; + } + + return "Success"; + } + + public List> getCategories() { + + List> categorys = new LinkedList<>(); + + try { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + Statement stmt = con.createStatement(); + + // step4 execute query + ResultSet rs_source = stmt.executeQuery("select DISTINCT CATEGORY from LIST_VALUES"); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + System.out.println("000 :: " + rs_source.getString(colName)); + + map.put(colName, rs_source.getString(colName)); + } + categorys.add(map); + + } + + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + + return categorys; + } + + public int getSrcRowCount(String table) throws Exception { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + ResultSet rs = stmt.executeQuery("select count(*) from " + table); + rs.next(); + int count = rs.getInt(1); + System.out.println(count); + + con.close(); + + return count; + } + + public int getDestRowCount(String table) throws Exception { + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + ResultSet rs = stmt.executeQuery("select count(*) from " + table); + rs.next(); + int count = rs.getInt(1); + System.out.println(count); + + con.close(); + + return count; + } + + public Map getSrcTablesHierarchy() throws Exception { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + return getTablesHierarchy(con); + + } + + public Map getDestTablesHierarchy() throws Exception { + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + + System.out.println("Connection established......"); + + return getTablesHierarchy(con); + + } + + public Map getTablesHierarchy(Connection con) throws Exception { + + Statement stmt = con.createStatement(); + + Map map = new HashMap<>(); + + // step4 execute query + ResultSet rs_root_tables = stmt.executeQuery("select user_tables.table_name,constraint_name" + + " from user_tables left outer join user_constraints on user_tables.table_name = user_constraints.table_name and constraint_type = 'P' "); + + Map tableHierarchy = new HashMap(); + while (rs_root_tables.next()) { + tableHierarchy.put(rs_root_tables.getString("table_name"), rs_root_tables.getString("constraint_name")); + + } + + for (String key : tableHierarchy.keySet()) { + + if (tableHierarchy.get(key) != null) { + Map childTables = getChildTables(con, tableHierarchy, key, tableHierarchy.get(key)); + map.put(key, childTables); + } + + } + + return map; + } + + public static Map getChildTables(Connection con, Map tableHierarchy, + String tableName, String constraintName) { + Map childTables = new HashMap(); + + try { + PreparedStatement ps = con.prepareStatement( + "select table_name,constraint_name from user_constraints where constraint_type = 'R' and r_constraint_name = ?"); + ps.setString(1, constraintName); + ResultSet rs = ps.executeQuery(); + if (rs != null) { + + while (rs.next()) { + + childTables.put(rs.getString("table_name"), rs.getString("constraint_name")); + + } + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return childTables; + } + + public String saveRule(Map map) { + + try { + DataSource ds = dataSource.appDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + String sql = "INSERT INTO RULES (SRCTBL, DESTTBL, SRC_KEY, DEST_KEY, RULE_NAME, VALUE1, VALUE2, VALUE3,FILTER_CONDITION) VALUES ('" + + map.get("srcTbl") + "', '" + map.get("destTbl") + "', '" + map.get("ruleSrcKey") + "', '" + + map.get("ruleDestKey") + "', '" + map.get("applyRule") + "', '" + map.get("ruleValue1") + "', '" + + map.get("ruleValue2") + "', '" + map.get("ruleValue3") + "',?)"; + // int i = stmt.executeUpdate(sql); + + PreparedStatement ps = con.prepareStatement( + "INSERT INTO RULES (SRCTBL, DESTTBL, SRC_KEY, DEST_KEY, RULE_NAME, VALUE1, VALUE2, VALUE3, FILTER_CONDITION,SRC_COLUMNS,DEST_COLUMNS,VALUE4) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); + + ps.setObject(1, map.get("srcTbl")); + ps.setObject(2, map.get("destTbl")); + ps.setObject(3, map.get("ruleSrcKey")); + ps.setObject(4, map.get("ruleDestKey")); + ps.setObject(5, map.get("applyRule")); + ps.setObject(6, map.get("ruleValue1")); + ps.setObject(7, map.get("ruleValue2")); + ps.setObject(8, map.get("ruleValue3")); + ps.setObject(9, map.get("filterCondition")); + ps.setObject(10, map.get("SRC_COLUMNS")); + ps.setObject(11, map.get("DEST_COLUMNS")); + ps.setObject(12, map.get("ruleValue4")); + + int i = ps.executeUpdate(); + + System.out.println("i ===> " + i); + con.close(); + } catch (Exception e) { + e.printStackTrace(); + return "Fail"; + } + return "Success"; + + } + + public String migrateBasedOnIgnoreColumnRule(Map map) throws SQLException, ClassNotFoundException { + + try { + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("source Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String sourceTable = (String) map.get("sourceTable");// "EMPLOYEES_SOURCE"; + String destTable = (String) map.get("destTable");// "EMPLOYEES_DEST"; + String value1 = (String) map.get("value1"); + + String srcCols = null; + String destCols = null; + String srcColsArray[] = null; + String destColsArray[] = null; + + srcCols = (String) map.get("SRC_COLUMNS"); + destCols = (String) map.get("DEST_COLUMNS"); + + if (srcCols != null) { + srcColsArray = srcCols.split(","); + } + if (destCols != null) { + destColsArray = destCols.split(","); + } + + List columnsToIgnore = new LinkedList<>();// getIgnoreColumnsList(con, sourceTable, destTable, + // ruleName); + + String[] ls = value1.split(","); + + for (String col : ls) { + columnsToIgnore.add(col); + } + + String whereCondition = (String) map.get("whereCondition"); + + List sourceColumns = new ArrayList(); + + if (srcCols != null) { + + for (String col : srcColsArray) { + // if (!columnsToIgnore.contains(col)) + sourceColumns.add(col); + } + } + + else { + + ResultSet res = con.getMetaData().getColumns(null, null, sourceTable, null); + while (res.next()) { + String sourceColumn = res.getString("COLUMN_NAME"); + if (!columnsToIgnore.contains(sourceColumn)) + sourceColumns.add(sourceColumn); + } + + } + // System.out.println(sourceColumns); + + StringBuffer sourceTableData = new StringBuffer(); + sourceTableData.append("SELECT "); + for (String c : sourceColumns) { + sourceTableData.append(c); + sourceTableData.append(","); + } + + sourceTableData.deleteCharAt(sourceTableData.length() - 1); + + sourceTableData.append(" FROM " + sourceTable); + + if (whereCondition != null) { + sourceTableData.append(" " + whereCondition); + } + + System.out.println(sourceTableData.toString()); + + StringBuffer insertTargetTableData = new StringBuffer(); + + insertTargetTableData.append("INSERT INTO "); + insertTargetTableData.append(destTable); + insertTargetTableData.append("("); + + if (destCols != null) { + + for (String c : destColsArray) { + insertTargetTableData.append(c); + insertTargetTableData.append(","); + } + + } else { + + for (String c : sourceColumns) { + insertTargetTableData.append(c); + insertTargetTableData.append(","); + } + + } + + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + insertTargetTableData.append(") VALUES ("); + + if (destCols != null) { + + for (String c : destColsArray) { + insertTargetTableData.append("?"); + insertTargetTableData.append(","); + } + + } else { + for (String c : sourceColumns) { + insertTargetTableData.append("?"); + insertTargetTableData.append(","); + } + } + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + insertTargetTableData.append(")"); + + DataSource ds2 = dataSource.destinationDataSource(); + Connection con2 = ds2.getConnection(); + System.out.println("destication Connection established......"); + con2.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + System.out.println(insertTargetTableData.toString()); + PreparedStatement psTargetData = con2.prepareStatement(insertTargetTableData.toString()); + + ResultSet processSourceData = (con.prepareStatement(sourceTableData.toString())).executeQuery(); + while (processSourceData.next()) { + for (int i = 0; i < sourceColumns.size(); i++) { + // System.out.println(processSourceData.getString(i+1)); + psTargetData.setString(i + 1, processSourceData.getString(i + 1)); + } + psTargetData.execute(); + + } + con.close(); + con2.close(); + System.out.println("Done"); + return "Migration success"; + } catch (Exception e) { + e.printStackTrace(); + return "Migration failed due to " + e; + } + + } + + public List> getRules() { + + List> rules = new LinkedList<>(); + + try { + + DataSource ds = dataSource.appDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + ResultSet rs_source = stmt.executeQuery("select * from rules"); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return rules; + } + + public String migrateBasedOnSplitRule(Map map) throws SQLException, ClassNotFoundException { + + try { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String sourceTable = map.get("sourceTable"); // "SPLIT_SRC";//"EMPLOYEES_SOURCE"; + String destTable = map.get("destTable");// "SPLIT_DEST";//"EMPLOYEES_DEST"; + String columnToSplit = map.get("value1");// "FULL_NAME"; + String splitString = map.get("value2"); + + String mappedSrcCols = map.get("SRC_COLUMNS"); + + String mappedSrcColsArray[] = null; + if (mappedSrcCols != null) + mappedSrcColsArray = mappedSrcCols.split(","); + + String mappedDestCols = map.get("DEST_COLUMNS"); + + String mappedDestColsArray[] = null; + if (mappedDestCols != null) + mappedDestColsArray = mappedDestCols.split(","); + + List destColsList = new LinkedList<>(); + + String tempCols = map.get("value3"); + + if (mappedDestColsArray != null) + for (String col : mappedDestColsArray) { + + if (!tempCols.contains(col)) + destColsList.add(col); + } + + String cols[] = tempCols.split(","); + + String whereCondition = map.get("whereCondition"); + List splitColumns = new ArrayList(); + for (String col : cols) { + splitColumns.add(col); + destColsList.add(col); + } + + List sourceColumns = new ArrayList(); + + if (mappedSrcCols != null) { + for (String col : mappedSrcColsArray) { + + if (!columnToSplit.equalsIgnoreCase(col)) + sourceColumns.add(col); + } + } else { + + ResultSet res = con.getMetaData().getColumns(null, null, sourceTable, null); + while (res.next()) { + String sourceColumn = res.getString("COLUMN_NAME"); + + if (!columnToSplit.equalsIgnoreCase(sourceColumn)) + sourceColumns.add(sourceColumn); + } + } + sourceColumns + .add("SUBSTR(" + columnToSplit + ",1," + "INSTR(" + columnToSplit + ",'" + splitString + "')-1)"); + sourceColumns.add("SUBSTR(" + columnToSplit + ",INSTR(" + columnToSplit + ",'" + splitString + "')+1)"); + + System.out.println(sourceColumns); + + StringBuffer sourceTableData = new StringBuffer(); + sourceTableData.append("SELECT "); + for (String c : sourceColumns) { + + sourceTableData.append(c); + sourceTableData.append(","); + + } + + sourceTableData.deleteCharAt(sourceTableData.length() - 1); + + sourceTableData.append(" FROM " + sourceTable); + + if (whereCondition != null) { + sourceTableData.append(" " + whereCondition); + } + + System.out.println("sourceTableData ==>" + sourceTableData); + System.out.println("destColsList ==>" + destColsList); + + StringBuffer insertTargetTableData = new StringBuffer(); + + insertTargetTableData.append("INSERT INTO "); + insertTargetTableData.append(destTable); + + insertTargetTableData.append("("); + + if (destColsList.size() > 0) { + + for (String c : destColsList) { + + insertTargetTableData.append(c); + insertTargetTableData.append(","); + + } + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + + } else { + + sourceColumns.remove(sourceColumns.size() - 2); + sourceColumns.remove(sourceColumns.size() - 1); + for (String c : splitColumns) { + sourceColumns.add(c); + } + + System.out.println(sourceColumns); + + for (String c : sourceColumns) { + + insertTargetTableData.append(c); + insertTargetTableData.append(","); + + } + + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + } + insertTargetTableData.append(") VALUES ("); + + if (destColsList.size() > 0) { + for (String c : destColsList) { + + insertTargetTableData.append("?"); + insertTargetTableData.append(","); + + } + } else { + + for (String c : sourceColumns) { + + insertTargetTableData.append("?"); + insertTargetTableData.append(","); + + } + + } + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + insertTargetTableData.append(")"); + + DataSource ds2 = dataSource.destinationDataSource(); + Connection con2 = ds2.getConnection(); + System.out.println("destication Connection established......"); + con2.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + PreparedStatement psTargetData = con2.prepareStatement(insertTargetTableData.toString()); + + System.out.println(insertTargetTableData); + + ResultSet processSourceData = (con.prepareStatement(sourceTableData.toString())).executeQuery(); + while (processSourceData.next()) { + for (int i = 0; i < sourceColumns.size(); i++) { + System.out.println(processSourceData.getString(i + 1)); + psTargetData.setString(i + 1, processSourceData.getString(i + 1)); + } + psTargetData.execute(); + + } + System.out.println("Done"); + con.close(); + con2.close(); + return "Migration success"; + + } catch (Exception e) { + e.printStackTrace(); + return "Unable to migrate data " + e; + + } + + } + + public String migrateBasedOnMergeColumnsRule(Map map) throws SQLException, ClassNotFoundException { + + try { + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String sourceTable = map.get("sourceTable"); // "SPLIT_SRC";//"EMPLOYEES_SOURCE"; + String destTable = map.get("destTable");// "SPLIT_DEST";//"EMPLOYEES_DEST"; + + String mappedSrcCols = map.get("SRC_COLUMNS"); + + String mappedSrcColsArray[] = null; + if (mappedSrcCols != null) + mappedSrcColsArray = mappedSrcCols.split(","); + + String mappedDestCols = map.get("DEST_COLUMNS"); + + String mappedDestColsArray[] = null; + if (mappedDestCols != null) + mappedDestColsArray = mappedDestCols.split(","); + + String tempCols = map.get("value1"); + String cols[] = tempCols.split(","); + + String whereCondition = map.get("whereCondition"); + + List columnsToMerge = new ArrayList(); + + for (String col : cols) { + columnsToMerge.add(col); + } + + String mergeOperator = "||' '||"; + String targetMergedColumn = map.get("value3"); + + List sourceColumns = new ArrayList(); + + if (mappedSrcCols != null) { + + for (String col : mappedSrcColsArray) { + if (!columnsToMerge.contains(col)) + sourceColumns.add(col); + } + + } else { + ResultSet res = con.getMetaData().getColumns(null, null, sourceTable, null); + while (res.next()) { + String sourceColumn = res.getString("COLUMN_NAME"); + if (!columnsToMerge.contains(sourceColumn)) + sourceColumns.add(sourceColumn); + } + } + + StringBuffer colMergeStr = new StringBuffer(); + for (int i = 0; i < columnsToMerge.size() - 1; i++) { + colMergeStr.append(columnsToMerge.get(i) + mergeOperator); + } + colMergeStr.append(columnsToMerge.get(columnsToMerge.size() - 1)); + sourceColumns.add(colMergeStr.toString()); + + System.out.println("-->" + sourceColumns); + + StringBuffer sourceTableData = new StringBuffer(); + sourceTableData.append("SELECT "); + for (String c : sourceColumns) { + sourceTableData.append(c); + sourceTableData.append(","); + } + + sourceTableData.deleteCharAt(sourceTableData.length() - 1); + + sourceTableData.append(" FROM " + sourceTable); + + if (whereCondition != null) { + sourceTableData.append(" " + whereCondition); + } + + System.out.println(sourceTableData); + + StringBuffer insertTargetTableData = new StringBuffer(); + + insertTargetTableData.append("INSERT INTO "); + insertTargetTableData.append(destTable); + + insertTargetTableData.append("("); + sourceColumns.remove(sourceColumns.size() - 1); + sourceColumns.add(targetMergedColumn); + + System.out.println("==>" + sourceColumns); + + if (mappedDestCols != null) { + for (String c : sourceColumns) { + insertTargetTableData.append(c); + insertTargetTableData.append(","); + } + } else { + for (String c : sourceColumns) { + insertTargetTableData.append(c); + insertTargetTableData.append(","); + } + } + + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + insertTargetTableData.append(") VALUES ("); + + if (mappedDestCols != null) { + for (String c : mappedDestColsArray) { + insertTargetTableData.append("?"); + insertTargetTableData.append(","); + } + } else { + for (String c : sourceColumns) { + + insertTargetTableData.append("?"); + insertTargetTableData.append(","); + } + } + insertTargetTableData.deleteCharAt(insertTargetTableData.length() - 1); + insertTargetTableData.append(")"); + + DataSource ds2 = dataSource.destinationDataSource(); + Connection con2 = ds2.getConnection(); + System.out.println("destication Connection established......"); + con2.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + PreparedStatement psTargetData = con2.prepareStatement(insertTargetTableData.toString()); + + ResultSet processSourceData = (con.prepareStatement(sourceTableData.toString())).executeQuery(); + while (processSourceData.next()) { + for (int i = 0; i < sourceColumns.size(); i++) { + + psTargetData.setString(i + 1, processSourceData.getString(i + 1)); + } + System.out.println(sourceTableData); + System.out.println(insertTargetTableData); + psTargetData.execute(); + + } + System.out.println("Done"); + + con.close(); + con2.close(); + return "Migration success"; + + } catch (Exception e) { + e.printStackTrace(); + return "Unable to migrate data " + e; + + } + + } + + public String migrateBasedOnScalarColumnsRule(Map dataMap) + throws SQLException, ClassNotFoundException { + + String srcTbl = dataMap.get("sourceTable"); + String srcTblCols = dataMap.get("SRC_COLUMNS"); + + String sumCols = dataMap.get("value1"); + + String srcTblKry = dataMap.get("srcKey"); + + String srcTblColsArray[] = srcTblCols.split(","); + + List srcTblColsList = new LinkedList<>(); + + for (String col : srcTblColsArray) { + if (!sumCols.contains(col)) { + srcTblColsList.add(col); + } + } + + srcTblCols = srcTblColsList.toString(); + + String destTbl = dataMap.get("destTable"); + String destTblCols = dataMap.get("DEST_COLUMNS"); + + String destSumCol = dataMap.get("value2"); + + String destTblColsArray[] = destTblCols.split(","); + + List destTblColsList = new LinkedList<>(); + + for (String col : destTblColsArray) { + if (!sumCols.contains(col)) { + destTblColsList.add(col); + } + } + + destTblCols = destTblColsList.toString(); + + destTblCols = destTblCols.replace("[", ""); + destTblCols = destTblCols.replace("]", ""); + + List> list = getSrcColsForScalarRule(srcTbl, srcTblCols, srcTblKry); + + int i = 0; + for (Map map : list) { + + i = instertDestSumRuleData(destTbl, destTblCols, destSumCol, map, srcTbl, sumCols, srcTblKry); + } + + if (i == 1) { + System.out.println("Migration success"); + } + return "Migration success"; + + } + + public int instertDestSumRuleData(String destTbl, String destTblCols, String destSumCol, Map map, + String srcTbl, String sumCols, String srcTblKry) throws ClassNotFoundException, SQLException { + + System.out.println("--------------instertDestSumRuleData start------------------"); + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String tempDestCols = destTblCols + "," + destSumCol; + + String tempDestColsArray[] = destTblCols.split(","); + + String sql1 = "INSERT INTO " + destTbl + " ( " + tempDestCols + ") VALUES ("; + + String sql2 = ""; + + for (String col : tempDestColsArray) { + sql2 = sql2 + "?,"; + } + sql2 = sql2 + "? )"; + + String finalsql = sql1 + sql2; + + System.out.println(finalsql); + + tempDestColsArray = tempDestCols.split(","); + try { + + PreparedStatement ps = con.prepareStatement(finalsql); + + int i = 1; + + for (String col : tempDestColsArray) { + String temp = col.trim(); + if (temp.equals(destSumCol)) { + + ps.setObject(i, getSumOfCols(srcTbl, sumCols, srcTblKry, map.get(srcTblKry))); + } else { + ps.setObject(i, map.get(temp)); + } + + i++; + + } + int j = ps.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + con.close(); + return 0; + } + + System.out.println("--------------instertDestSumRuleData end------------------"); + con.close(); + return 1; + } + + public long getSumOfCols(String tblName, String cols, String tblKey, Object keyValue) + throws ClassNotFoundException, SQLException { + + System.out.println("=====================getSingleValue start============================"); + + long value = 0; + Statement stmt = null; + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String temp = cols.replace(",", "+"); + + String sql = "SELECT SUM(" + temp + ") from " + tblName + " where " + tblKey + "=" + keyValue; + System.out.println(sql); + try { + stmt = con.createStatement(); + ResultSet rs = stmt.executeQuery(sql); + + while (rs.next()) + value = value + rs.getLong(1); + } + + catch (SQLException e) { + e.printStackTrace(); + con.close(); + } + System.out.println("=====================getSingleValue end============================"); + + con.close(); + + return value; + + } + + public List> getSrcColsForScalarRule(String srcTbl, String srcTblCols, String srcTblKry) + throws ClassNotFoundException, SQLException { + + List> rules = new LinkedList<>(); + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + srcTblCols = srcTblCols.replace("[", ""); + srcTblCols = srcTblCols.replace("]", ""); + + String sql = "select " + srcTblCols + " from " + srcTbl; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return rules; + } + + public String migrateBasedOnAggregateColumnsRule(Map map) + throws SQLException, ClassNotFoundException { + + String srcTbl = map.get("sourceTable"); + + String srcCols = map.get("SRC_COLUMNS"); + + String aggFunCol = map.get("value1"); + + String groupBy = map.get("value3"); + + String aggFuntiong = map.get("value4"); + + String destTbl = map.get("destTable"); + + String destCols = map.get("DEST_COLUMNS"); + + String destAggCol = map.get("value2"); + + String destColsArray[] = destCols.split(","); + + List destColsList = new LinkedList<>(); + + try { + + for (String col : destColsArray) { + + if (!col.equals(destAggCol)) { + destColsList.add(col); + } + + } + + String destFinalScrCols = destColsList.toString(); + + destFinalScrCols = destFinalScrCols.replace("[", ""); + destFinalScrCols = destFinalScrCols.replace("]", ""); + + List> list = getSrcAggRuleData(srcTbl, srcCols, aggFunCol, groupBy); + + for (Map map2 : list) { + int i = instertDestSumRuleData(destTbl, destFinalScrCols, map2); + } + + List> aggList = getAggRuleData(srcTbl, aggFunCol, groupBy, aggFuntiong); + + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + for (Map map2 : aggList) { + + String finalsql = "UPDATE EMP_SCLAR_DEST SET SUM_AMOUNT ='" + map2.get("RES") + "' WHERE BONUS ='" + + map2.get(groupBy) + "'"; + + System.out.println(finalsql); + + Statement st = con.createStatement(); + + int j = st.executeUpdate(finalsql); + } + + System.out.println("done"); + con.close(); + + } catch (Exception e) { + e.printStackTrace(); + + return "Migration fail"; + } + + return "Migration success"; + + } + + public List> getAggRuleData(String srcTbl, String aggFunCol, String groupBy, String aggFuntiong) + throws ClassNotFoundException, SQLException { + + List> rules = new LinkedList<>(); + + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + String sql = "select " + groupBy + ", " + aggFuntiong + "(" + aggFunCol + ") as res from " + srcTbl + + " group by " + groupBy; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return rules; + } + + public List> getSrcAggRuleData(String srcTbl, String srcTblCols, String aggFunCol, + String groupBy) throws ClassNotFoundException, SQLException { + + List> rules = new LinkedList<>(); + DataSource ds = dataSource.sourceDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + srcTblCols = srcTblCols.replace("[", ""); + srcTblCols = srcTblCols.replace("]", ""); + + String sql = "select " + srcTblCols + " from " + srcTbl; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + con.close(); + } + + con.close(); + return rules; + } + + public int instertDestSumRuleData(String destTbl, String destTblCols, Map map) + throws ClassNotFoundException, SQLException { + + System.out.println("--------------instertDestSumRuleData start------------------"); + DataSource ds = dataSource.destinationDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String tempDestColsArray[] = destTblCols.split(","); + + String sql1 = "INSERT INTO " + destTbl + " ( " + destTblCols + ") VALUES ("; + + String sql2 = ""; + + for (String col : tempDestColsArray) { + sql2 = sql2 + "?,"; + } + + StringBuilder sb = new StringBuilder(sql2); + sb.deleteCharAt(sb.length() - 1); + sb.append(")"); + sql2 = sb.toString(); + + String finalsql = sql1 + sql2; + + System.out.println(finalsql); + + tempDestColsArray = destTblCols.split(","); + try { + + PreparedStatement ps = con.prepareStatement(finalsql); + + int i = 1; + + for (String col : tempDestColsArray) { + String temp = col.trim(); + + ps.setObject(i, map.get(temp)); + + i++; + + } + int j = ps.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + con.close(); + return 0; + } + + System.out.println("--------------instertDestSumRuleData end------------------"); + con.close(); + return 1; + } + + public List getDBFunctions() throws SQLException { + List functions = new LinkedList<>(); + + DataSource ds = dataSource.appDataSource(); + Connection con = ds.getConnection(); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + String sql = "select * from DB_FUNCTIONS_MASTER"; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + + + + while (rs_source.next()) { + + functions.add(rs_source.getString(1)); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + con.close(); + } + con.close(); + System.out.println(functions); + return functions; + } + +} diff --git a/CompareTables/src/main/java/com/demo/service/Test.java b/CompareTables/src/main/java/com/demo/service/Test.java new file mode 100644 index 0000000..e7c8fe3 --- /dev/null +++ b/CompareTables/src/main/java/com/demo/service/Test.java @@ -0,0 +1,247 @@ +package com.demo.service; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +public class Test { + + public static void main(String[] args) throws SQLException, ClassNotFoundException { + + String srcTbl = "EMP_SCLAR_SRC"; + + String srcCols = "EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,SALARY,BONUS"; + + String aggFunCol = "SALARY"; + + String groupBy = "BONUS"; + + String aggFuntiong = "SUM"; + + String destTbl = "EMP_SCLAR_DEST"; + + String destCols = "EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,SALARY,BONUS,SUM_AMOUNT"; + + String destAggCol = "SUM_AMOUNT"; + + String destColsArray[] = destCols.split(","); + + List destColsList = new LinkedList<>(); + + for (String col : destColsArray) { + + if (!col.equals(destAggCol)) { + destColsList.add(col); + } + + } + + String destFinalScrCols = destColsList.toString(); + + destFinalScrCols = destFinalScrCols.replace("[", ""); + destFinalScrCols = destFinalScrCols.replace("]", ""); + + + List> list = getSrcAggRuleData(srcTbl, srcCols, aggFunCol, groupBy); + + for (Map map : list) { + int i = instertDestSumRuleData(destTbl, destFinalScrCols, map); + } + + List> aggList = getAggRuleData(srcTbl, aggFunCol, groupBy, aggFuntiong); + + + Class.forName("oracle.jdbc.driver.OracleDriver"); + + Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "hr", "Machint"); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + for (Map map : aggList) { + + String finalsql = "UPDATE EMP_SCLAR_DEST SET SUM_AMOUNT ='" + map.get("RES") + "' WHERE BONUS ='" + + map.get(groupBy) + "'"; + + System.out.println(finalsql); + + Statement st = con.createStatement(); + + int j = st.executeUpdate(finalsql); + } + + System.out.println("done"); + + } + + public static List> getAggRuleData(String srcTbl, String aggFunCol, String groupBy, + String aggFuntiong) throws ClassNotFoundException, SQLException { + + List> rules = new LinkedList<>(); + + Class.forName("oracle.jdbc.driver.OracleDriver"); + + Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "hr", "Machint"); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + String sql = "select " + groupBy + ", " + aggFuntiong + "(" + aggFunCol + ") as res from " + srcTbl + + " group by " + groupBy; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return rules; + } + + public static List> getSrcAggRuleData(String srcTbl, String srcTblCols, String aggFunCol, + String groupBy) throws ClassNotFoundException, SQLException { + + List> rules = new LinkedList<>(); + + Class.forName("oracle.jdbc.driver.OracleDriver"); + + Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "hr", "Machint"); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + try { + + System.out.println("Connection established......"); + + Statement stmt = con.createStatement(); + + // step4 execute query + srcTblCols = srcTblCols.replace("[", ""); + srcTblCols = srcTblCols.replace("]", ""); + + String sql = "select " + srcTblCols + " from " + srcTbl; + System.out.println(sql); + ResultSet rs_source = stmt.executeQuery(sql); + + ArrayList rs_source_columns = new ArrayList(); + ResultSetMetaData metadata = rs_source.getMetaData(); + int columnCount = metadata.getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + rs_source_columns.add(metadata.getColumnName(i)); + } + + while (rs_source.next()) { + HashMap map = new HashMap<>(); + for (String colName : rs_source_columns) { + + map.put(colName, rs_source.getString(colName)); + } + rules.add(map); + + } + con.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return rules; + } + + public static int instertDestSumRuleData(String destTbl, String destTblCols, Map map) + throws ClassNotFoundException, SQLException { + + System.out.println("--------------instertDestSumRuleData start------------------"); + + Class.forName("oracle.jdbc.driver.OracleDriver"); + + Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "hr", "Machint"); + System.out.println("Connection established......"); + + con.prepareStatement("alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'").execute(); + + String tempDestColsArray[] = destTblCols.split(","); + + String sql1 = "INSERT INTO " + destTbl + " ( " + destTblCols + ") VALUES ("; + + String sql2 = ""; + + for (String col : tempDestColsArray) { + sql2 = sql2 + "?,"; + } + + StringBuilder sb = new StringBuilder(sql2); + sb.deleteCharAt(sb.length() - 1); + sb.append(")"); + sql2 = sb.toString(); + + String finalsql = sql1 + sql2; + + System.out.println(finalsql); + + tempDestColsArray = destTblCols.split(","); + try { + + PreparedStatement ps = con.prepareStatement(finalsql); + + int i = 1; + + for (String col : tempDestColsArray) { + String temp = col.trim(); + + ps.setObject(i, map.get(temp)); + + i++; + + } + int j = ps.executeUpdate(); + + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + + System.out.println("--------------instertDestSumRuleData end------------------"); + return 1; + } + +} diff --git a/CompareTables/src/main/resources/application.properties b/CompareTables/src/main/resources/application.properties new file mode 100644 index 0000000..f56d24e --- /dev/null +++ b/CompareTables/src/main/resources/application.properties @@ -0,0 +1,36 @@ +debug=true + +#spring.datasource.url=jdbc:mysql://localhost/assessment +#spring.datasource.username=root +#spring.datasource.password=root +#pring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + + +sourceDataSource.url=jdbc:oracle:thin:@localhost:1521:orcl +sourceDataSource.username=hr +sourceDataSource.password=Machint +sourceDataSource.driver-class-name=oracle.jdbc.driver.OracleDriver + +desticationDataSource.url=jdbc:oracle:thin:@localhost:1521:orcl +desticationDataSource.username=hr +desticationDataSource.password=Machint +desticationDataSource.driver-class-name=oracle.jdbc.driver.OracleDriver + + +appDB.url=jdbc:oracle:thin:@localhost:1521:orcl +appDB.username=hr +appDB.password=Machint +appDB.driver-class-name=oracle.jdbc.driver.OracleDriver + +spring.ldap.embedded.ldif=classpath:test-server.ldif +spring.ldap.embedded.base-dn=dc=springframework,dc=org +spring.ldap.embedded.port=8389 + +#server port +server.port=8080 + + + +#server.servlet.context-path=/mdata + + diff --git a/CompareTables/src/main/resources/static/3rdpartylicenses.txt b/CompareTables/src/main/resources/static/3rdpartylicenses.txt new file mode 100644 index 0000000..8839cb5 --- /dev/null +++ b/CompareTables/src/main/resources/static/3rdpartylicenses.txt @@ -0,0 +1,268 @@ +@angular/common +MIT + +@angular/core +MIT + +@angular/forms +MIT + +@angular/platform-browser +MIT + +@angular/router +MIT + +css-loader +MIT +Copyright JS Foundation and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +rxjs +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + 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. + + + +zone.js +MIT +The MIT License + +Copyright (c) 2010-2020 Google LLC. http://angular.io/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/CompareTables/src/main/resources/static/favicon.ico b/CompareTables/src/main/resources/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 + + + + Verify Mismatches + + + + + + + + + + + + + diff --git a/CompareTables/src/main/resources/static/main.6dc7dc0e2b978f7aa770.js b/CompareTables/src/main/resources/static/main.6dc7dc0e2b978f7aa770.js new file mode 100644 index 0000000..e2c4a84 --- /dev/null +++ b/CompareTables/src/main/resources/static/main.6dc7dc0e2b978f7aa770.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{0:function(t,e,n){t.exports=n("zUnb")},zUnb:function(t,e,n){"use strict";function r(t){return"function"==typeof t}n.r(e);let s=!1;const i={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else s&&console.log("RxJS: Back to a better error behavior. Thank you. <3");s=t},get useDeprecatedSynchronousErrorHandling(){return s}};function o(t){setTimeout(()=>{throw t},0)}const a={closed:!0,next(t){},error(t){if(i.useDeprecatedSynchronousErrorHandling)throw t;o(t)},complete(){}},l=(()=>Array.isArray||(t=>t&&"number"==typeof t.length))();function c(t){return null!==t&&"object"==typeof t}const u=(()=>{function t(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((t,e)=>`${e+1}) ${t.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return t.prototype=Object.create(Error.prototype),t})();let h=(()=>{class t{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_unsubscribe:s,_subscriptions:i}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof t)n.remove(this);else if(null!==n)for(let t=0;tt.concat(e instanceof u?e.errors:e),[])}const p=(()=>"function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random())();class f extends h{constructor(t,e,n){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=a;break;case 1:if(!t){this.destination=a;break}if("object"==typeof t){t instanceof f?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new g(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new g(this,t,e,n)}}[p](){return this}static create(t,e,n){const r=new f(t,e,n);return r.syncErrorThrowable=!1,r}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class g extends f{constructor(t,e,n,s){let i;super(),this._parentSubscriber=t;let o=this;r(e)?i=e:e&&(i=e.next,n=e.error,s=e.complete,e!==a&&(o=Object.create(e),r(o.unsubscribe)&&this.add(o.unsubscribe.bind(o)),o.unsubscribe=this.unsubscribe.bind(this))),this._context=o,this._next=i,this._error=n,this._complete=s}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:e}=this;i.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:e}=this,{useDeprecatedSynchronousErrorHandling:n}=i;if(this._error)n&&e.syncErrorThrowable?(this.__tryOrSetError(e,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(e.syncErrorThrowable)n?(e.syncErrorValue=t,e.syncErrorThrown=!0):o(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;o(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const e=()=>this._complete.call(this._context);i.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,e),this.unsubscribe()):(this.__tryOrUnsub(e),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),i.useDeprecatedSynchronousErrorHandling)throw n;o(n)}}__tryOrSetError(t,e,n){if(!i.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(r){return i.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=r,t.syncErrorThrown=!0,!0):(o(r),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const m=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")();function y(t){return t}let v=(()=>{class t{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(e){const n=new t;return n.source=this,n.operator=e,n}subscribe(t,e,n){const{operator:r}=this,s=function(t,e,n){if(t){if(t instanceof f)return t;if(t[p])return t[p]()}return t||e||n?new f(t,e,n):new f(a)}(t,e,n);if(s.add(r?r.call(s,this.source):this.source||i.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),i.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(t){try{return this._subscribe(t)}catch(e){i.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),function(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof f?n:null}return!0}(t)?t.error(e):console.warn(e)}}forEach(t,e){return new(e=b(e))((e,n)=>{let r;r=this.subscribe(e=>{try{t(e)}catch(s){n(s),r&&r.unsubscribe()}},n,e)})}_subscribe(t){const{source:e}=this;return e&&e.subscribe(t)}[m](){return this}pipe(...t){return 0===t.length?this:(0===(e=t).length?y:1===e.length?e[0]:function(t){return e.reduce((t,e)=>e(t),t)})(this);var e}toPromise(t){return new(t=b(t))((t,e)=>{let n;this.subscribe(t=>n=t,t=>e(t),()=>t(n))})}}return t.create=e=>new t(e),t})();function b(t){if(t||(t=i.Promise||Promise),!t)throw new Error("no Promise impl found");return t}const _=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})();class w extends h{constructor(t,e){super(),this.subject=t,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,e=t.observers;if(this.subject=null,!e||0===e.length||t.isStopped||t.closed)return;const n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}class C extends f{constructor(t){super(t),this.destination=t}}let S=(()=>{class t extends v{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[p](){return new C(this)}lift(t){const e=new E(this,this);return e.operator=t,e}next(t){if(this.closed)throw new _;if(!this.isStopped){const{observers:e}=this,n=e.length,r=e.slice();for(let s=0;snew E(t,e),t})();class E extends S{constructor(t,e){super(),this.destination=t,this.source=e}next(t){const{destination:e}=this;e&&e.next&&e.next(t)}error(t){const{destination:e}=this;e&&e.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:e}=this;return e?this.source.subscribe(t):h.EMPTY}}function x(t){return t&&"function"==typeof t.schedule}class T extends f{constructor(t,e,n){super(),this.parent=t,this.outerValue=e,this.outerIndex=n,this.index=0}_next(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)}_error(t){this.parent.notifyError(t,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}const A=t=>e=>{for(let n=0,r=t.length;nt&&"number"==typeof t.length&&"function"!=typeof t;function I(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}const N=t=>{if(t&&"function"==typeof t[m])return r=t,t=>{const e=r[m]();if("function"!=typeof e.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return e.subscribe(t)};if(R(t))return A(t);if(I(t))return n=t,t=>(n.then(e=>{t.closed||(t.next(e),t.complete())},e=>t.error(e)).then(null,o),t);if(t&&"function"==typeof t[k])return e=t,t=>{const n=e[k]();for(;;){const e=n.next();if(e.done){t.complete();break}if(t.next(e.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t};{const e=c(t)?"an invalid object":`'${t}'`;throw new TypeError(`You provided ${e} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`)}var e,n,r};function P(t,e,n,r,s=new T(t,n,r)){if(!s.closed)return e instanceof v?e.subscribe(s):N(e)(s)}class V extends f{notifyNext(t,e,n,r,s){this.destination.next(e)}notifyError(t,e){this.destination.error(t)}notifyComplete(t){this.destination.complete()}}function D(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new M(t,e))}}class M{constructor(t,e){this.project=t,this.thisArg=e}call(t,e){return e.subscribe(new L(t,this.project,this.thisArg))}}class L extends f{constructor(t,e,n){super(t),this.project=e,this.count=0,this.thisArg=n||this}_next(t){let e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}function U(t,e){return new v(n=>{const r=new h;let s=0;return r.add(e.schedule((function(){s!==t.length?(n.next(t[s++]),n.closed||r.add(this.schedule())):n.complete()}))),r})}function j(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[m]}(t))return function(t,e){return new v(n=>{const r=new h;return r.add(e.schedule(()=>{const s=t[m]();r.add(s.subscribe({next(t){r.add(e.schedule(()=>n.next(t)))},error(t){r.add(e.schedule(()=>n.error(t)))},complete(){r.add(e.schedule(()=>n.complete()))}}))})),r})}(t,e);if(I(t))return function(t,e){return new v(n=>{const r=new h;return r.add(e.schedule(()=>t.then(t=>{r.add(e.schedule(()=>{n.next(t),r.add(e.schedule(()=>n.complete()))}))},t=>{r.add(e.schedule(()=>n.error(t)))}))),r})}(t,e);if(R(t))return U(t,e);if(function(t){return t&&"function"==typeof t[k]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new v(n=>{const r=new h;let s;return r.add(()=>{s&&"function"==typeof s.return&&s.return()}),r.add(e.schedule(()=>{s=t[k](),r.add(e.schedule((function(){if(n.closed)return;let t,e;try{const n=s.next();t=n.value,e=n.done}catch(r){return void n.error(r)}e?n.complete():(n.next(t),this.schedule())})))})),r})}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof v?t:new v(N(t))}function F(t,e,n=Number.POSITIVE_INFINITY){return"function"==typeof e?r=>r.pipe(F((n,r)=>j(t(n,r)).pipe(D((t,s)=>e(n,t,r,s))),n)):("number"==typeof e&&(n=e),e=>e.lift(new H(t,n)))}class H{constructor(t,e=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=e}call(t,e){return e.subscribe(new $(t,this.project,this.concurrent))}}class $ extends V{constructor(t,e,n=Number.POSITIVE_INFINITY){super(t),this.project=e,this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}function B(t=Number.POSITIVE_INFINITY){return F(y,t)}function z(t,e){return e?U(t,e):new v(A(t))}function G(){return function(t){return t.lift(new q(t))}}class q{constructor(t){this.connectable=t}call(t,e){const{connectable:n}=this;n._refCount++;const r=new K(t,n),s=e.subscribe(r);return r.closed||(r.connection=n.connect()),s}}class K extends f{constructor(t,e){super(t),this.connectable=e}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const e=t._refCount;if(e<=0)return void(this.connection=null);if(t._refCount=e-1,e>1)return void(this.connection=null);const{connection:n}=this,r=t._connection;this.connection=null,!r||n&&r!==n||r.unsubscribe()}}class W extends v{constructor(t,e){super(),this.source=t,this.subjectFactory=e,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new h,t.add(this.source.subscribe(new Q(this.getSubject(),this))),t.closed&&(this._connection=null,t=h.EMPTY)),t}refCount(){return G()(this)}}const Z=(()=>{const t=W.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}})();class Q extends C{constructor(t,e){super(t),this.connectable=e}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}function Y(){return new S}function J(t){return{toString:t}.toString()}function X(t,e,n){return J(()=>{const r=function(t){return function(...e){if(t){const n=t(...e);for(const t in n)this[t]=n[t]}}}(e);function s(...t){if(this instanceof s)return r.apply(this,t),this;const e=new s(...t);return n.annotation=e,n;function n(t,n,r){const s=t.hasOwnProperty("__parameters__")?t.__parameters__:Object.defineProperty(t,"__parameters__",{value:[]}).__parameters__;for(;s.length<=r;)s.push(null);return(s[r]=s[r]||[]).push(e),t}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s})}const tt=X("Inject",t=>({token:t})),et=X("Optional"),nt=X("Self"),rt=X("SkipSelf");var st=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}({});function it(t){for(let e in t)if(t[e]===it)return e;throw Error("Could not find renamed property on target object.")}function ot(t,e){for(const n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}function at(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function lt(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function ct(t){return ut(t,t[dt])||ut(t,t[gt])}function ut(t,e){return e&&e.token===t?e:null}function ht(t){return t&&(t.hasOwnProperty(pt)||t.hasOwnProperty(mt))?t[pt]:null}const dt=it({"\u0275prov":it}),pt=it({"\u0275inj":it}),ft=it({"\u0275provFallback":it}),gt=it({ngInjectableDef:it}),mt=it({ngInjectorDef:it});function yt(t){if("string"==typeof t)return t;if(Array.isArray(t))return"["+t.map(yt).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return""+t.overriddenName;if(t.name)return""+t.name;const e=t.toString();if(null==e)return""+e;const n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}function vt(t,e){return null==t||""===t?null===e?"":e:null==e||""===e?t:t+" "+e}const bt=it({__forward_ref__:it});function _t(t){return t.__forward_ref__=_t,t.toString=function(){return yt(this())},t}function wt(t){return Ct(t)?t():t}function Ct(t){return"function"==typeof t&&t.hasOwnProperty(bt)&&t.__forward_ref__===_t}const St="undefined"!=typeof globalThis&&globalThis,Et="undefined"!=typeof window&&window,xt="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,Tt="undefined"!=typeof global&&global,At=St||Tt||Et||xt,Ot=it({"\u0275cmp":it}),kt=it({"\u0275dir":it}),Rt=it({"\u0275pipe":it}),It=it({"\u0275mod":it}),Nt=it({"\u0275loc":it}),Pt=it({"\u0275fac":it}),Vt=it({__NG_ELEMENT_ID__:it});class Dt{constructor(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=at({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}toString(){return"InjectionToken "+this._desc}}const Mt=new Dt("INJECTOR",-1),Lt={},Ut=/\n/gm,jt=it({provide:String,useValue:it});let Ft,Ht=void 0;function $t(t){const e=Ht;return Ht=t,e}function Bt(t){const e=Ft;return Ft=t,e}function zt(t,e=st.Default){if(void 0===Ht)throw new Error("inject() must be called from an injection context");return null===Ht?qt(t,void 0,e):Ht.get(t,e&st.Optional?null:void 0,e)}function Gt(t,e=st.Default){return(Ft||zt)(wt(t),e)}function qt(t,e,n){const r=ct(t);if(r&&"root"==r.providedIn)return void 0===r.value?r.value=r.factory():r.value;if(n&st.Optional)return null;if(void 0!==e)return e;throw new Error(`Injector: NOT_FOUND [${yt(t)}]`)}function Kt(t){const e=[];for(let n=0;nArray.isArray(t)?Yt(t,e):e(t))}function Jt(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function Xt(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function te(t,e,n){let r=ne(t,e);return r>=0?t[1|r]=n:(r=~r,function(t,e,n,r){let s=t.length;if(s==e)t.push(n,r);else if(1===s)t.push(r,t[0]),t[0]=n;else{for(s--,t.push(t[s-1],t[s]);s>e;)t[s]=t[s-2],s--;t[e]=n,t[e+1]=r}}(t,r,e,n)),r}function ee(t,e){const n=ne(t,e);if(n>=0)return t[1|n]}function ne(t,e){return function(t,e,n){let r=0,s=t.length>>1;for(;s!==r;){const n=r+(s-r>>1),i=t[n<<1];if(e===i)return n<<1;i>e?s=n:r=n+1}return~(s<<1)}(t,e)}var re=function(t){return t[t.OnPush=0]="OnPush",t[t.Default=1]="Default",t}({}),se=function(t){return t[t.Emulated=0]="Emulated",t[t.Native=1]="Native",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",t}({});const ie={},oe=[];let ae=0;function le(t){return J(()=>{const e=t.type,n=e.prototype,r={},s={type:e,providersResolver:null,decls:t.decls,vars:t.vars,factory:null,template:t.template||null,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:r,inputs:null,outputs:null,exportAs:t.exportAs||null,onChanges:null,onInit:n.ngOnInit||null,doCheck:n.ngDoCheck||null,afterContentInit:n.ngAfterContentInit||null,afterContentChecked:n.ngAfterContentChecked||null,afterViewInit:n.ngAfterViewInit||null,afterViewChecked:n.ngAfterViewChecked||null,onDestroy:n.ngOnDestroy||null,onPush:t.changeDetection===re.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors||oe,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||se.Emulated,id:"c",styles:t.styles||oe,_:null,setInput:null,schemas:t.schemas||null,tView:null},i=t.directives,o=t.features,a=t.pipes;return s.id+=ae++,s.inputs=pe(t.inputs,r),s.outputs=pe(t.outputs),o&&o.forEach(t=>t(s)),s.directiveDefs=i?()=>("function"==typeof i?i():i).map(ce):null,s.pipeDefs=a?()=>("function"==typeof a?a():a).map(ue):null,s})}function ce(t){return me(t)||function(t){return t[kt]||null}(t)}function ue(t){return function(t){return t[Rt]||null}(t)}const he={};function de(t){const e={type:t.type,bootstrap:t.bootstrap||oe,declarations:t.declarations||oe,imports:t.imports||oe,exports:t.exports||oe,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null};return null!=t.id&&J(()=>{he[t.id]=t.type}),e}function pe(t,e){if(null==t)return ie;const n={};for(const r in t)if(t.hasOwnProperty(r)){let s=t[r],i=s;Array.isArray(s)&&(i=s[1],s=s[0]),n[s]=r,e&&(e[s]=i)}return n}const fe=le;function ge(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function me(t){return t[Ot]||null}function ye(t,e){return t.hasOwnProperty(Pt)?t[Pt]:null}function ve(t,e){const n=t[It]||null;if(!n&&!0===e)throw new Error(`Type ${yt(t)} does not have '\u0275mod' property.`);return n}function be(t){return Array.isArray(t)&&"object"==typeof t[1]}function _e(t){return Array.isArray(t)&&!0===t[1]}function we(t){return 0!=(8&t.flags)}function Ce(t){return 2==(2&t.flags)}function Se(t){return 1==(1&t.flags)}function Ee(t){return null!==t.template}function xe(t){return 0!=(512&t[2])}let Te=void 0;function Ae(){return void 0!==Te?Te:"undefined"!=typeof document?document:void 0}function Oe(t){return!!t.listen}const ke={createRenderer:(t,e)=>Ae()};function Re(t){for(;Array.isArray(t);)t=t[0];return t}function Ie(t,e){return Re(e[t+20])}function Ne(t,e){return Re(e[t.index])}function Pe(t,e){return t.data[e+20]}function Ve(t,e){const n=e[t];return be(n)?n:n[0]}function De(t){const e=function(t){return t.__ngContext__||null}(t);return e?Array.isArray(e)?e:e.lView:null}function Me(t){return 128==(128&t[2])}function Le(t,e){return null===t||null==e?null:t[e]}function Ue(t){t[18]=0}function je(t,e){t[5]+=e;let n=t,r=t[3];for(;null!==r&&(1===e&&1===n[5]||-1===e&&0===n[5]);)r[5]+=e,n=r,r=r[3]}const Fe={lFrame:an(null),bindingsEnabled:!0,checkNoChangesMode:!1};function He(){return Fe.bindingsEnabled}function $e(){return Fe.lFrame.lView}function Be(){return Fe.lFrame.tView}function ze(t){Fe.lFrame.contextLView=t}function Ge(){return Fe.lFrame.previousOrParentTNode}function qe(t,e){Fe.lFrame.previousOrParentTNode=t,Fe.lFrame.isParent=e}function Ke(){return Fe.lFrame.isParent}function We(){return Fe.checkNoChangesMode}function Ze(t){Fe.checkNoChangesMode=t}function Qe(){const t=Fe.lFrame;let e=t.bindingRootIndex;return-1===e&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function Ye(){return Fe.lFrame.bindingIndex}function Je(){return Fe.lFrame.bindingIndex++}function Xe(t){const e=Fe.lFrame,n=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,n}function tn(t,e){const n=Fe.lFrame;n.bindingIndex=n.bindingRootIndex=t,en(e)}function en(t){Fe.lFrame.currentDirectiveIndex=t}function nn(t){Fe.lFrame.currentQueryIndex=t}function rn(t,e){const n=on();Fe.lFrame=n,n.previousOrParentTNode=e,n.lView=t}function sn(t,e){const n=on(),r=t[1];Fe.lFrame=n,n.previousOrParentTNode=e,n.lView=t,n.tView=r,n.contextLView=t,n.bindingIndex=r.bindingStartIndex}function on(){const t=Fe.lFrame,e=null===t?null:t.child;return null===e?an(t):e}function an(t){const e={previousOrParentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:0,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null};return null!==t&&(t.child=e),e}function ln(){const t=Fe.lFrame;return Fe.lFrame=t.parent,t.previousOrParentTNode=null,t.lView=null,t}const cn=ln;function un(){const t=ln();t.isParent=!0,t.tView=null,t.selectedIndex=0,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function hn(){return Fe.lFrame.selectedIndex}function dn(t){Fe.lFrame.selectedIndex=t}function pn(){const t=Fe.lFrame;return Pe(t.tView,t.selectedIndex)}function fn(t,e){for(let n=e.directiveStart,r=e.directiveEnd;n=r)break}else e[o]<0&&(t[18]+=65536),(i>11>16&&(3&t[2])===e&&(t[2]+=2048,i.call(o)):i.call(o)}class _n{constructor(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}function wn(t,e,n){const r=Oe(t);let s=0;for(;se){o=i-1;break}}}for(;i>16}function kn(t,e){let n=On(t),r=e;for(;n>0;)r=r[15],n--;return r}function Rn(t){return"string"==typeof t?t:null==t?"":""+t}function In(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():Rn(t)}const Nn=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(At))();function Pn(t){return t instanceof Function?t():t}let Vn=!0;function Dn(t){const e=Vn;return Vn=t,e}let Mn=0;function Ln(t,e){const n=jn(t,e);if(-1!==n)return n;const r=e[1];r.firstCreatePass&&(t.injectorIndex=e.length,Un(r.data,t),Un(e,null),Un(r.blueprint,null));const s=Fn(t,e),i=t.injectorIndex;if(Tn(s)){const t=An(s),n=kn(s,e),r=n[1].data;for(let s=0;s<8;s++)e[i+s]=n[t+s]|r[t+s]}return e[i+8]=s,i}function Un(t,e){t.push(0,0,0,0,0,0,0,0,e)}function jn(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+8]?-1:t.injectorIndex}function Fn(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let n=e[6],r=1;for(;n&&-1===n.injectorIndex;)n=(e=e[15])?e[6]:null,r++;return n?n.injectorIndex|r<<16:-1}function Hn(t,e,n){!function(t,e,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(Vt)&&(r=n[Vt]),null==r&&(r=n[Vt]=Mn++);const s=255&r,i=1<0?255&e:e}(n);if("function"==typeof s){rn(e,t);try{const t=s();if(null!=t||r&st.Optional)return t;throw new Error(`No provider for ${In(n)}!`)}finally{cn()}}else if("number"==typeof s){if(-1===s)return new Wn(t,e);let i=null,o=jn(t,e),a=-1,l=r&st.Host?e[16][6]:null;for((-1===o||r&st.SkipSelf)&&(a=-1===o?Fn(t,e):e[o+8],Kn(r,!1)?(i=e[1],o=An(a),e=kn(a,e)):o=-1);-1!==o;){a=e[o+8];const t=e[1];if(qn(s,o,t.data)){const t=zn(o,e,n,i,r,l);if(t!==Bn)return t}Kn(r,e[1].data[o+8]===l)&&qn(s,o,e)?(i=t,o=An(a),e=kn(a,e)):o=-1}}}if(r&st.Optional&&void 0===s&&(s=null),0==(r&(st.Self|st.Host))){const t=e[9],i=Bt(void 0);try{return t?t.get(n,s,r&st.Optional):qt(n,s,r&st.Optional)}finally{Bt(i)}}if(r&st.Optional)return s;throw new Error(`NodeInjector: NOT_FOUND [${In(n)}]`)}const Bn={};function zn(t,e,n,r,s,i){const o=e[1],a=o.data[t+8],l=function(t,e,n,r,s){const i=t.providerIndexes,o=e.data,a=65535&i,l=t.directiveStart,c=i>>16,u=s?a+c:t.directiveEnd;for(let h=r?a:a+c;h=l&&t.type===n)return h}if(s){const t=o[l];if(t&&Ee(t)&&t.type===n)return l}return null}(a,o,n,null==r?Ce(a)&&Vn:r!=o&&3===a.type,s&st.Host&&i===a);return null!==l?Gn(e,o,l,a):Bn}function Gn(t,e,n,r){let s=t[n];const i=e.data;if(s instanceof _n){const o=s;if(o.resolving)throw new Error("Circular dep for "+In(i[n]));const a=Dn(o.canSeeViewProviders);let l;o.resolving=!0,o.injectImpl&&(l=Bt(o.injectImpl)),rn(t,r);try{s=t[n]=o.factory(void 0,i,t,r),e.firstCreatePass&&n>=r.directiveStart&&function(t,e,n){const{onChanges:r,onInit:s,doCheck:i}=e;r&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,r),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,r)),s&&(n.preOrderHooks||(n.preOrderHooks=[])).push(-t,s),i&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,i),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,i))}(n,i[n],e)}finally{o.injectImpl&&Bt(l),Dn(a),o.resolving=!1,cn()}}return s}function qn(t,e,n){const r=64&t,s=32&t;let i;return i=128&t?r?s?n[e+7]:n[e+6]:s?n[e+5]:n[e+4]:r?s?n[e+3]:n[e+2]:s?n[e+1]:n[e],!!(i&1<{const t=Zn(wt(e));return t?t():null};let n=ye(e);if(null===n){const t=ht(e);n=t&&t.factory}return n||null}function Qn(t){return J(()=>{const e=t.prototype.constructor,n=e[Pt]||Zn(e),r=Object.prototype;let s=Object.getPrototypeOf(t.prototype).constructor;for(;s&&s!==r;){const t=s[Pt]||Zn(s);if(t&&t!==n)return t;s=Object.getPrototypeOf(s)}return t=>new t})}function Yn(t){return t.ngDebugContext}function Jn(t){return t.ngOriginalError}function Xn(t,...e){t.error(...e)}class tr{constructor(){this._console=console}handleError(t){const e=this._findOriginalError(t),n=this._findContext(t),r=function(t){return t.ngErrorLogger||Xn}(t);r(this._console,"ERROR",t),e&&r(this._console,"ORIGINAL ERROR",e),n&&r(this._console,"ERROR CONTEXT",n)}_findContext(t){return t?Yn(t)?Yn(t):this._findContext(Jn(t)):null}_findOriginalError(t){let e=Jn(t);for(;e&&Jn(e);)e=Jn(e);return e}}class er{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"}}function nr(t){return t instanceof er?t.changingThisBreaksApplicationSecurity:t}function rr(t,e){const n=function(t){return t instanceof er&&t.getTypeName()||null}(t);if(null!=n&&n!==e){if("ResourceURL"===n&&"URL"===e)return!0;throw new Error(`Required a safe ${e}, got a ${n} (see http://g.co/ng/security#xss)`)}return n===e}let sr=!0,ir=!1;function or(){return ir=!0,sr}class ar{getInertBodyElement(t){t=""+t+"";try{const e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(e){return null}}}class lr{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){const t=this.inertDocument.createElement("html");this.inertDocument.appendChild(t);const e=this.inertDocument.createElement("body");t.appendChild(e)}}getInertBodyElement(t){const e=this.inertDocument.createElement("template");if("content"in e)return e.innerHTML=t,e;const n=this.inertDocument.createElement("body");return n.innerHTML=t,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(n),n}stripCustomNsAttrs(t){const e=t.attributes;for(let r=e.length-1;0hr(t.trim())).join(", ")),this.buf.push(" ",e,'="',Tr(o),'"')}var r;return this.buf.push(">"),!0}endElement(t){const e=t.nodeName.toLowerCase();vr.hasOwnProperty(e)&&!fr.hasOwnProperty(e)&&(this.buf.push(""))}chars(t){this.buf.push(Tr(t))}checkClobberedElement(t,e){if(e&&(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error("Failed to sanitize html because the element is clobbered: "+t.outerHTML);return e}}const Er=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,xr=/([^\#-~ |!])/g;function Tr(t){return t.replace(/&/g,"&").replace(Er,(function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"})).replace(xr,(function(t){return"&#"+t.charCodeAt(0)+";"})).replace(//g,">")}let Ar;function Or(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var kr=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}({});function Rr(t){const e=Nr();return e?e.sanitize(kr.HTML,t)||"":rr(t,"HTML")?nr(t):function(t,e){let n=null;try{Ar=Ar||function(t){return function(){try{return!!(new window.DOMParser).parseFromString("","text/html")}catch(t){return!1}}()?new ar:new lr(t)}(t);let r=e?String(e):"";n=Ar.getInertBodyElement(r);let s=5,i=r;do{if(0===s)throw new Error("Failed to sanitize html because the input is unstable");s--,r=i,i=n.innerHTML,n=Ar.getInertBodyElement(r)}while(r!==i);const o=new Sr,a=o.sanitizeChildren(Or(n)||n);return or()&&o.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),a}finally{if(n){const t=Or(n)||n;for(;t.firstChild;)t.removeChild(t.firstChild)}}}(Ae(),Rn(t))}function Ir(t){const e=Nr();return e?e.sanitize(kr.URL,t)||"":rr(t,"URL")?nr(t):hr(Rn(t))}function Nr(){const t=$e();return t&&t[12]}function Pr(t,e){t.__ngContext__=e}function Vr(t){throw new Error("Multiple components match node with tagname "+t.tagName)}function Dr(){throw new Error("Cannot mix multi providers and regular providers")}function Mr(t,e,n){let r=t.length;for(;;){const s=t.indexOf(e,n);if(-1===s)return s;if(0===s||t.charCodeAt(s-1)<=32){const n=e.length;if(s+n===r||t.charCodeAt(s+n)<=32)return s}n=s+1}}function Lr(t,e,n){let r=0;for(;ri?"":s[u+1].toLowerCase();const e=8&r?t:null;if(e&&-1!==Mr(e,c,0)||2&r&&c!==t){if(Hr(r))return!1;o=!0}}}}else{if(!o&&!Hr(r)&&!Hr(l))return!1;if(o&&Hr(l))continue;o=!1,r=l|1&r}}return Hr(r)||o}function Hr(t){return 0==(1&t)}function $r(t,e,n,r){if(null===e)return-1;let s=0;if(r||!n){let n=!1;for(;s-1)for(n++;n0?'="'+e+'"':"")+"]"}else 8&r?s+="."+o:4&r&&(s+=" "+o);else""===s||Hr(o)||(e+=zr(i,s),s=""),r=o,i=i||!Hr(r);n++}return""!==s&&(e+=zr(i,s)),e}const qr={};function Kr(t){const e=t[3];return _e(e)?e[3]:e}function Wr(t){return Qr(t[13])}function Zr(t){return Qr(t[4])}function Qr(t){for(;null!==t&&!_e(t);)t=t[4];return t}function Yr(t){Jr(Be(),$e(),hn()+t,We())}function Jr(t,e,n,r){if(!r)if(3==(3&e[2])){const r=t.preOrderCheckHooks;null!==r&&gn(e,r,n)}else{const r=t.preOrderHooks;null!==r&&mn(e,r,0,n)}dn(n)}function Xr(t,e){return t<<17|e<<2}function ts(t){return t>>17&32767}function es(t){return 2|t}function ns(t){return(131068&t)>>2}function rs(t,e){return-131069&t|e<<2}function ss(t){return 1|t}function is(t,e){const n=t.contentQueries;if(null!==n)for(let r=0;r20&&Jr(t,e,0,We()),n(r,s)}finally{dn(i)}}function ps(t,e,n){He()&&(function(t,e,n,r){const s=n.directiveStart,i=n.directiveEnd;t.firstCreatePass||Ln(n,e),Pr(r,e);const o=n.initialInputs;for(let a=s;a0&&function t(e){for(let r=Wr(e);null!==r;r=Zr(r))for(let e=10;e0&&t(n)}const n=e[1].components;if(null!==n)for(let r=0;r0&&t(s)}}(n)}}function Vs(t,e){const n=Ve(e,t),r=n[1];!function(t,e){for(let n=e.length;nPromise.resolve(null))();function Hs(t){return t[7]||(t[7]=[])}function $s(t,e){const n=t[9],r=n?n.get(tr,null):null;r&&r.handleError(e)}function Bs(t,e,n,r,s){for(let i=0;i0&&(t[n-1][4]=r[4]);const i=Xt(t,10+e);Ks(r[1],r,!1,null);const o=i[19];null!==o&&o.detachView(i[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Qs(t,e){if(!(256&e[2])){const n=e[11];Oe(n)&&n.destroyNode&&oi(t,e,n,3,null,null),function(t){let e=t[13];if(!e)return Js(t[1],t);for(;e;){let n=null;if(be(e))n=e[13];else{const t=e[10];t&&(n=t)}if(!n){for(;e&&!e[4]&&e!==t;)be(e)&&Js(e[1],e),e=Ys(e,t);null===e&&(e=t),be(e)&&Js(e[1],e),n=e&&e[4]}e=n}}(e)}}function Ys(t,e){let n;return be(t)&&(n=t[6])&&2===n.type?zs(n,t):t[3]===e?null:t[3]}function Js(t,e){if(!(256&e[2])){e[2]&=-129,e[2]|=256,function(t,e){let n;if(null!=t&&null!=(n=t.destroyHooks))for(let r=0;r=0?t[a]():t[-a].unsubscribe(),r+=2}else n[r].call(t[n[r+1]]);e[7]=null}}(t,e);const n=e[6];n&&3===n.type&&Oe(e[11])&&e[11].destroy();const r=e[17];if(null!==r&&_e(e[3])){r!==e[3]&&Ws(r,e);const n=e[19];null!==n&&n.detachView(t)}}}function Xs(t,e,n,r){Oe(t)?t.insertBefore(e,n,r):e.insertBefore(n,r,!0)}function ti(t,e,n){Oe(t)?t.appendChild(e,n):e.appendChild(n)}function ei(t,e,n,r){null!==r?Xs(t,e,n,r):ti(t,e,n)}function ni(t,e){return Oe(t)?t.parentNode(e):e.parentNode}function ri(t,e,n,r){const s=function(t,e,n){let r=e.parent;for(;null!=r&&(4===r.type||5===r.type);)r=(e=r).parent;if(null==r){const t=n[6];return 2===t.type?Gs(t,n):n[0]}if(e&&5===e.type&&4&e.flags)return Ne(e,n).parentNode;if(2&r.flags){const e=t.data,n=e[e[r.index].directiveStart].encapsulation;if(n!==se.ShadowDom&&n!==se.Native)return null}return Ne(r,n)}(t,r,e);if(null!=s){const t=e[11],i=function(t,e){if(2===t.type){const n=zs(t,e);return null===n?null:si(n.indexOf(e,10)-10,n)}return 4===t.type||5===t.type?Ne(t,e):null}(r.parent||e[6],e);if(Array.isArray(n))for(let e=0;e-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}Qs(this._lView[1],this._lView)}onDestroy(t){!function(t,e,n,r){const s=Hs(e);s.push(null),t.firstCreatePass&&function(t){return t.cleanup||(t.cleanup=[])}(t).push(r,s.length-1)}(this._lView[1],this._lView,0,t)}markForCheck(){Ms(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){Ls(this._lView[1],this._lView,this.context)}checkNoChanges(){!function(t,e,n){Ze(!0);try{Ls(t,e,n)}finally{Ze(!1)}}(this._lView[1],this._lView,this.context)}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}detachFromAppRef(){var t;this._appRef=null,oi(this._lView[1],t=this._lView,t[11],2,null,null)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}}class hi extends ui{constructor(t){super(t),this._view=t}detectChanges(){Us(this._view)}checkNoChanges(){!function(t){Ze(!0);try{Us(t)}finally{Ze(!1)}}(this._view)}get context(){return null}}let di,pi,fi;function gi(t,e,n){return di||(di=class extends t{}),new di(Ne(e,n))}let mi=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>yi(),t})();const yi=function(t=!1){return function(t,e,n){if(!n&&Ce(t)){const n=Ve(t.index,e);return new ui(n,n)}return 3===t.type||0===t.type||4===t.type||5===t.type?new ui(e[16],e):null}(Ge(),$e(),t)},vi=Function,bi=new Dt("Set Injector scope."),_i={},wi={},Ci=[];let Si=void 0;function Ei(){return void 0===Si&&(Si=new Wt),Si}function xi(t,e=null,n=null,r){return new Ti(t,n,e||Ei(),r)}class Ti{constructor(t,e,n,r=null){this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const s=[];e&&Yt(e,n=>this.processProvider(n,t,e)),Yt([t],t=>this.processInjectorType(t,[],s)),this.records.set(Mt,ki(void 0,this));const i=this.records.get(bi);this.scope=null!=i?i.value:null,this.source=r||("object"==typeof t?null:yt(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,e=Lt,n=st.Default){this.assertNotDestroyed();const r=$t(this);try{if(!(n&st.SkipSelf)){let e=this.records.get(t);if(void 0===e){const n=("function"==typeof(s=t)||"object"==typeof s&&s instanceof Dt)&&ct(t);e=n&&this.injectableDefInScope(n)?ki(Ai(t),_i):null,this.records.set(t,e)}if(null!=e)return this.hydrate(t,e)}return(n&st.Self?Ei():this.parent).get(t,e=n&st.Optional&&e===Lt?null:e)}catch(i){if("NullInjectorError"===i.name){if((i.ngTempTokenPath=i.ngTempTokenPath||[]).unshift(yt(t)),r)throw i;return function(t,e,n,r){const s=t.ngTempTokenPath;throw e.__source&&s.unshift(e.__source),t.message=function(t,e,n,r=null){t=t&&"\n"===t.charAt(0)&&"\u0275"==t.charAt(1)?t.substr(2):t;let s=yt(e);if(Array.isArray(e))s=e.map(yt).join(" -> ");else if("object"==typeof e){let t=[];for(let n in e)if(e.hasOwnProperty(n)){let r=e[n];t.push(n+":"+("string"==typeof r?JSON.stringify(r):yt(r)))}s=`{${t.join(", ")}}`}return`${n}${r?"("+r+")":""}[${s}]: ${t.replace(Ut,"\n ")}`}("\n"+t.message,s,n,r),t.ngTokenPath=s,t.ngTempTokenPath=null,t}(i,t,"R3InjectorError",this.source)}throw i}finally{$t(r)}var s}_resolveInjectorDefTypes(){this.injectorDefTypes.forEach(t=>this.get(t))}toString(){const t=[];return this.records.forEach((e,n)=>t.push(yt(n))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,e,n){if(!(t=wt(t)))return!1;let r=ht(t);const s=null==r&&t.ngModule||void 0,i=void 0===s?t:s,o=-1!==n.indexOf(i);if(void 0!==s&&(r=ht(s)),null==r)return!1;if(null!=r.imports&&!o){let t;n.push(i);try{Yt(r.imports,r=>{this.processInjectorType(r,e,n)&&(void 0===t&&(t=[]),t.push(r))})}finally{}if(void 0!==t)for(let e=0;ethis.processProvider(t,n,r||Ci))}}this.injectorDefTypes.add(i),this.records.set(i,ki(r.factory,_i));const a=r.providers;if(null!=a&&!o){const e=t;Yt(a,t=>this.processProvider(t,e,a))}return void 0!==s&&void 0!==t.providers}processProvider(t,e,n){let r=Ii(t=wt(t))?t:wt(t&&t.provide);const s=function(t,e,n){return Ri(t)?ki(void 0,t.useValue):ki(Oi(t,e,n),_i)}(t,e,n);if(Ii(t)||!0!==t.multi){const t=this.records.get(r);t&&void 0!==t.multi&&Dr()}else{let e=this.records.get(r);e?void 0===e.multi&&Dr():(e=ki(void 0,_i,!0),e.factory=()=>Kt(e.multi),this.records.set(r,e)),r=t,e.multi.push(t)}this.records.set(r,s)}hydrate(t,e){var n;return e.value===wi?function(t){throw new Error("Cannot instantiate cyclic dependency! "+t)}(yt(t)):e.value===_i&&(e.value=wi,e.value=e.factory()),"object"==typeof e.value&&e.value&&null!==(n=e.value)&&"object"==typeof n&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value}injectableDefInScope(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||t.providedIn===this.scope:this.injectorDefTypes.has(t.providedIn))}}function Ai(t){const e=ct(t),n=null!==e?e.factory:ye(t);if(null!==n)return n;const r=ht(t);if(null!==r)return r.factory;if(t instanceof Dt)throw new Error(`Token ${yt(t)} is missing a \u0275prov definition.`);if(t instanceof Function)return function(t){const e=t.length;if(e>0){const n=function(t,e){const n=[];for(let r=0;rn.factory(t):()=>new t}(t);throw new Error("unreachable")}function Oi(t,e,n){let r=void 0;if(Ii(t)){const e=wt(t);return ye(e)||Ai(e)}if(Ri(t))r=()=>wt(t.useValue);else if((s=t)&&s.useFactory)r=()=>t.useFactory(...Kt(t.deps||[]));else if(function(t){return!(!t||!t.useExisting)}(t))r=()=>Gt(wt(t.useExisting));else{const s=wt(t&&(t.useClass||t.provide));if(s||function(t,e,n){let r="";throw t&&e&&(r=` - only instances of Provider and Type are allowed, got: [${e.map(t=>t==n?"?"+n+"?":"...").join(", ")}]`),new Error(`Invalid provider for the NgModule '${yt(t)}'`+r)}(e,n,t),!function(t){return!!t.deps}(t))return ye(s)||Ai(s);r=()=>new s(...Kt(t.deps))}var s;return r}function ki(t,e,n=!1){return{factory:t,value:e,multi:n?[]:void 0}}function Ri(t){return null!==t&&"object"==typeof t&&jt in t}function Ii(t){return"function"==typeof t}const Ni=function(t,e,n){return function(t,e=null,n=null,r){const s=xi(t,e,n,r);return s._resolveInjectorDefTypes(),s}({name:n},e,t,n)};let Pi=(()=>{class t{static create(t,e){return Array.isArray(t)?Ni(t,e,""):Ni(t.providers,t.parent,t.name||"")}}return t.THROW_IF_NOT_FOUND=Lt,t.NULL=new Wt,t.\u0275prov=at({token:t,providedIn:"any",factory:()=>Gt(Mt)}),t.__NG_ELEMENT_ID__=-1,t})();const Vi=new Dt("AnalyzeForEntryComponents");function Di(t,e,n){let r=n?t.styles:null,s=n?t.classes:null,i=0;if(null!==e)for(let o=0;oa(Re(t[r.index])).target:r.index;if(Oe(n)){let o=null;if(!a&&l&&(o=function(t,e,n,r){const s=t.cleanup;if(null!=s)for(let i=0;in?t[n]:null}"string"==typeof t&&(i+=2)}return null}(t,e,s,r.index)),null!==o)(o.__ngLastListenerFn__||o).__ngNextListenerFn__=i,o.__ngLastListenerFn__=i,h=!1;else{i=so(r,e,i,!1);const t=n.listen(p.name||f,s,i);u.push(i,t),c&&c.push(s,m,g,g+1)}}else i=so(r,e,i,!0),f.addEventListener(s,i,o),u.push(i),c&&c.push(s,m,g,o)}const d=r.outputs;let p;if(h&&null!==d&&(p=d[s])){const t=p.length;if(t)for(let n=0;n0;)e=e[15],t--;return e}(t,Fe.lFrame.contextLView))[8]}(t)}function oo(t,e,n){return ao(t,"",e,"",n),oo}function ao(t,e,n,r,s){const i=$e(),o=Gi(i,e,n,r);return o!==qr&&bs(Be(),pn(),i,t,o,i[11],s,!1),ao}function lo(t,e,n,r,s,i,o){const a=$e(),l=function(t,e,n,r,s,i){const o=Bi(t,Ye(),n,s);return Xe(2),o?e+Rn(n)+r+Rn(s)+i:qr}(a,e,n,r,s,i);return l!==qr&&bs(Be(),pn(),a,t,l,a[11],o,!1),lo}const co=[];function uo(t,e,n,r,s){const i=t[n+1],o=null===e;let a=r?ts(i):ns(i),l=!1;for(;0!==a&&(!1===l||o);){const n=t[a+1];ho(t[a],e)&&(l=!0,t[a+1]=r?ss(n):es(n)),a=r?ts(n):ns(n)}l&&(t[n+1]=r?es(i):ss(i))}function ho(t,e){return null===t||null==e||(Array.isArray(t)?t[1]:t)===e||!(!Array.isArray(t)||"string"!=typeof e)&&ne(t,e)>=0}function po(t,e){return function(t,e,n,r){const s=$e(),i=Be(),o=Xe(2);i.firstUpdatePass&&function(t,e,n,r){const s=t.data;if(null===s[n+1]){const r=s[hn()+20],i=function(t,e){return e>=t.expandoStartIndex}(t,n);(function(t,e){return 0!=(16&t.flags)})(r)&&null===e&&!i&&(e=!1),e=function(t,e,n,r){const s=function(t){const e=Fe.lFrame.currentDirectiveIndex;return-1===e?null:t[e]}(t);let i=e.residualClasses;if(null===s)0===e.classBindings&&(n=go(n=fo(null,t,e,n,!0),e.attrs,!0),i=null);else{const r=e.directiveStylingLast;if(-1===r||t[r]!==s)if(n=fo(s,t,e,n,!0),null===i){let n=function(t,e,n){const r=e.classBindings;if(0!==ns(r))return t[ts(r)]}(t,e);void 0!==n&&Array.isArray(n)&&(n=fo(null,t,e,n[1],!0),n=go(n,e.attrs,!0),function(t,e,n,r){t[ts(e.classBindings)]=r}(t,e,0,n))}else i=function(t,e,n){let r=void 0;const s=e.directiveEnd;for(let i=1+e.directiveStylingLast;i0)&&(u=!0)}else c=n;if(s)if(0!==l){const e=ts(t[a+1]);t[r+1]=Xr(e,a),0!==e&&(t[e+1]=rs(t[e+1],r)),t[a+1]=131071&t[a+1]|r<<17}else t[r+1]=Xr(a,0),0!==a&&(t[a+1]=rs(t[a+1],r)),a=r;else t[r+1]=Xr(l,0),0===a?a=r:t[l+1]=rs(t[l+1],r),l=r;u&&(t[r+1]=es(t[r+1])),uo(t,c,r,!0),uo(t,c,r,!1),function(t,e,n,r,s){const i=t.residualClasses;null!=i&&"string"==typeof e&&ne(i,e)>=0&&(n[r+1]=ss(n[r+1]))}(e,c,t,r),o=Xr(a,l),e.classBindings=o}(s,r,e,n,i)}}(i,t,o),e!==qr&&$i(s,o,e)&&function(t,e,n,r,s,i,o,a){if(3!==e.type)return;const l=t.data,c=l[a+1];yo(1==(1&c)?mo(l,e,n,s,ns(c),!0):void 0)||(yo(i)||function(t){return 2==(2&t)}(c)&&(i=mo(l,null,n,s,a,!0)),function(t,e,n,r,s){const i=Oe(t);s?i?t.addClass(n,r):n.classList.add(r):i?t.removeClass(n,r):n.classList.remove(r)}(r,0,Ie(hn(),n),s,i))}(i,i.data[hn()+20],s,s[11],t,s[o+1]=function(t,e){return null==t||"object"==typeof t&&(t=yt(nr(t))),t}(e),0,o)}(t,e),po}function fo(t,e,n,r,s){let i=null;const o=n.directiveEnd;let a=n.directiveStylingLast;for(-1===a?a=n.directiveStart:a++;a0;){const e=t[s],i=Array.isArray(e),l=i?e[1]:e,c=null===l;let u=n[s+1];u===qr&&(u=c?co:void 0);let h=c?ee(u,r):l===r?u:void 0;if(i&&!yo(h)&&(h=ee(e,r)),yo(h)&&(a=h,o))return a;const d=t[s+1];s=o?ts(d):ns(d)}if(null!==e){let t=i?e.residualClasses:e.residualStyles;null!=t&&(a=ee(t,r))}return a}function yo(t){return void 0!==t}function vo(t,e=""){const n=$e(),r=Be(),s=t+20,i=r.firstCreatePass?ls(r,n[6],t,3,null,null):r.data[s],o=n[s]=function(t,e){return Oe(e)?e.createText(t):e.createTextNode(t)}(e,n[11]);ri(r,n,o,i),qe(i,!1)}function bo(t){return _o("",t,""),bo}function _o(t,e,n){const r=$e(),s=Gi(r,t,e,n);return s!==qr&&function(t,e,n){const r=Ie(e,t),s=t[11];Oe(s)?s.setValue(r,n):r.textContent=n}(r,hn(),s),_o}function wo(t,e,n){const r=$e();return $i(r,Je(),e)&&bs(Be(),pn(),r,t,e,r[11],n,!0),wo}function Co(t,e){const n=De(t)[1],r=n.data.length-1;fn(n,{directiveStart:r,directiveEnd:r+1})}function So(t){let e=Object.getPrototypeOf(t.type.prototype).constructor,n=!0;const r=[t];for(;e;){let s=void 0;if(Ee(t))s=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new Error("Directives cannot inherit Components");s=e.\u0275dir}if(s){if(n){r.push(s);const e=t;e.inputs=Eo(t.inputs),e.declaredInputs=Eo(t.declaredInputs),e.outputs=Eo(t.outputs);const n=s.hostBindings;n&&Ao(t,n);const i=s.viewQuery,o=s.contentQueries;if(i&&xo(t,i),o&&To(t,o),ot(t.inputs,s.inputs),ot(t.declaredInputs,s.declaredInputs),ot(t.outputs,s.outputs),Ee(s)&&s.data.animation){const e=t.data;e.animation=(e.animation||[]).concat(s.data.animation)}e.afterContentChecked=e.afterContentChecked||s.afterContentChecked,e.afterContentInit=t.afterContentInit||s.afterContentInit,e.afterViewChecked=t.afterViewChecked||s.afterViewChecked,e.afterViewInit=t.afterViewInit||s.afterViewInit,e.doCheck=t.doCheck||s.doCheck,e.onDestroy=t.onDestroy||s.onDestroy,e.onInit=t.onInit||s.onInit}const e=s.features;if(e)for(let r=0;r=0;r--){const s=t[r];s.hostVars=e+=s.hostVars,s.hostAttrs=En(s.hostAttrs,n=En(n,s.hostAttrs))}}(r)}function Eo(t){return t===ie?{}:t===oe?[]:t}function xo(t,e){const n=t.viewQuery;t.viewQuery=n?(t,r)=>{e(t,r),n(t,r)}:e}function To(t,e){const n=t.contentQueries;t.contentQueries=n?(t,r,s)=>{e(t,r,s),n(t,r,s)}:e}function Ao(t,e){const n=t.hostBindings;t.hostBindings=n?(t,r)=>{e(t,r),n(t,r)}:e}class Oo{constructor(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}isFirstChange(){return this.firstChange}}function ko(t){t.type.prototype.ngOnChanges&&(t.setInput=Ro,t.onChanges=function(){const t=Io(this),e=t&&t.current;if(e){const n=t.previous;if(n===ie)t.previous=e;else for(let t in e)n[t]=e[t];t.current=null,this.ngOnChanges(e)}})}function Ro(t,e,n,r){const s=Io(t)||function(t,e){return t.__ngSimpleChanges__=e}(t,{previous:ie,current:null}),i=s.current||(s.current={}),o=s.previous,a=this.declaredInputs[n],l=o[a];i[a]=new Oo(l&&l.currentValue,e,o===ie),t[r]=e}function Io(t){return t.__ngSimpleChanges__||null}function No(t,e,n,r,s){if(t=wt(t),Array.isArray(t))for(let i=0;i>16;if(Ii(t)||!t.multi){const r=new _n(l,s,Ki),p=Do(a,e,s?u:u+d,h);-1===p?(Hn(Ln(c,o),i,a),Po(i,t,e.length),e.push(a),c.directiveStart++,c.directiveEnd++,s&&(c.providerIndexes+=65536),n.push(r),o.push(r)):(n[p]=r,o[p]=r)}else{const p=Do(a,e,u+d,h),f=Do(a,e,u,u+d),g=p>=0&&n[p],m=f>=0&&n[f];if(s&&!m||!s&&!g){Hn(Ln(c,o),i,a);const u=function(t,e,n,r,s){const i=new _n(t,n,Ki);return i.multi=[],i.index=e,i.componentProviders=0,Vo(i,s,r&&!n),i}(s?Lo:Mo,n.length,s,r,l);!s&&m&&(n[f].providerFactory=u),Po(i,t,e.length,0),e.push(a),c.directiveStart++,c.directiveEnd++,s&&(c.providerIndexes+=65536),n.push(u),o.push(u)}else Po(i,t,p>-1?p:f,Vo(n[s?f:p],l,!s&&r));!s&&r&&m&&n[f].componentProviders++}}}function Po(t,e,n,r){const s=Ii(e);if(s||e.useClass){const i=(e.useClass||e).prototype.ngOnDestroy;if(i){const o=t.destroyHooks||(t.destroyHooks=[]);if(!s&&e.multi){const t=o.indexOf(n);-1===t?o.push(n,[r,i]):o[t+1].push(r,i)}else o.push(n,i)}}}function Vo(t,e,n){return n&&t.componentProviders++,t.multi.push(e)-1}function Do(t,e,n,r){for(let s=n;s{n.providersResolver=(n,r)=>function(t,e,n){const r=Be();if(r.firstCreatePass){const s=Ee(t);No(n,r.data,r.blueprint,s,!0),No(e,r.data,r.blueprint,s,!1)}}(n,r?r(t):t,e)}}ko.ngInherit=!0;class Fo{}class Ho{resolveComponentFactory(t){throw function(t){const e=Error(`No component factory found for ${yt(t)}. Did you add it to @NgModule.entryComponents?`);return e.ngComponent=t,e}(t)}}let $o=(()=>{class t{}return t.NULL=new Ho,t})(),Bo=(()=>{class t{constructor(t){this.nativeElement=t}}return t.__NG_ELEMENT_ID__=()=>zo(t),t})();const zo=function(t){return gi(t,Ge(),$e())};class Go{}var qo=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({});let Ko=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>Wo(),t})();const Wo=function(){const t=$e(),e=Ve(Ge().index,t);return function(t){const e=t[11];if(Oe(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}(be(e)?e:t)};let Zo=(()=>{class t{}return t.\u0275prov=at({token:t,providedIn:"root",factory:()=>null}),t})();class Qo{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const Yo=new Qo("10.0.4");class Jo{constructor(){}supports(t){return ji(t)}create(t){return new ta(t)}}const Xo=(t,e)=>e;class ta{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||Xo}forEachItem(t){let e;for(e=this._itHead;null!==e;e=e._next)t(e)}forEachOperation(t){let e=this._itHead,n=this._removalsHead,r=0,s=null;for(;e||n;){const i=!n||e&&e.currentIndex{r=this._trackByFn(e,t),null!==s&&Object.is(s.trackById,r)?(i&&(s=this._verifyReinsertion(s,t,r,e)),Object.is(s.item,t)||this._addIdentityChange(s,t)):(s=this._mismatch(s,t,r,e),i=!0),s=s._next,e++}),this.length=e;return this._truncate(s),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t,e;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=e)t.previousIndex=t.currentIndex,e=t._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,e,n,r){let s;return null===t?s=this._itTail:(s=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,r))?(Object.is(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,s,r)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Object.is(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,s,r)):t=this._addAfter(new ea(e,n),s,r),t}_verifyReinsertion(t,e,n,r){let s=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==s?t=this._reinsertAfter(s,t._prev,r):t.currentIndex!=r&&(t.currentIndex=r,this._addToMoves(t,r)),t}_truncate(t){for(;null!==t;){const e=t._next;this._addToRemovals(this._unlink(t)),t=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const r=t._prevRemoved,s=t._nextRemoved;return null===r?this._removalsHead=s:r._nextRemoved=s,null===s?this._removalsTail=r:s._prevRemoved=r,this._insertAfter(t,e,n),this._addToMoves(t,n),t}_moveAfter(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t}_addAfter(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,e,n){const r=null===e?this._itHead:e._next;return t._next=r,t._prev=e,null===r?this._itTail=t:r._prev=t,null===e?this._itHead=t:e._next=t,null===this._linkedRecords&&(this._linkedRecords=new ra),this._linkedRecords.put(t),t.currentIndex=n,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t}_addToMoves(t,e){return t.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new ra),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class ea{constructor(t,e){this.item=t,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class na{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,e){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&Object.is(n.trackById,t))return n;return null}remove(t){const e=t._prevDup,n=t._nextDup;return null===e?this._head=n:e._nextDup=n,null===n?this._tail=e:n._prevDup=e,null===this._head}}class ra{constructor(){this.map=new Map}put(t){const e=t.trackById;let n=this.map.get(e);n||(n=new na,this.map.set(e,n)),n.add(t)}get(t,e){const n=this.map.get(t);return n?n.get(t,e):null}remove(t){const e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function sa(t,e,n){const r=t.previousIndex;if(null===r)return r;let s=0;return n&&r{if(e&&e.key===n)this._maybeAddToChanges(e,t),this._appendAfter=e,e=e._next;else{const r=this._getOrCreateRecordForKey(n,t);e=this._insertBeforeOrAppend(e,r)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let t=e;null!==t;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,e){if(t){const n=t._prev;return e._next=t,e._prev=n,t._prev=e,n&&(n._next=e),t===this._mapHead&&(this._mapHead=e),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(t,e){if(this._records.has(t)){const n=this._records.get(t);this._maybeAddToChanges(n,e);const r=n._prev,s=n._next;return r&&(r._next=s),s&&(s._prev=r),n._next=null,n._prev=null,n}const n=new aa(t);return this._records.set(t,n),n.currentValue=e,this._addToAdditions(n),n}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,e){Object.is(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(n=>e(t[n],n))}}class aa{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}let la=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(null!=n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new rt,new et]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(null!=e)return e;throw new Error(`Cannot find a differ supporting object '${t}' of type '${n=t,n.name||typeof n}'`);var n}}return t.\u0275prov=at({token:t,providedIn:"root",factory:()=>new t([new Jo])}),t})(),ca=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new rt,new et]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(e)return e;throw new Error(`Cannot find a differ supporting object '${t}'`)}}return t.\u0275prov=at({token:t,providedIn:"root",factory:()=>new t([new ia])}),t})();const ua=[new ia],ha=new la([new Jo]),da=new ca(ua);let pa=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>fa(t,Bo),t})();const fa=function(t,e){return function(t,e,n,r){return pi||(pi=class extends t{constructor(t,e,n){super(),this._declarationView=t,this._declarationTContainer=e,this.elementRef=n}createEmbeddedView(t){const e=this._declarationTContainer.tViews,n=as(this._declarationView,e,t,16,null,e.node);n[17]=this._declarationView[this._declarationTContainer.index];const r=this._declarationView[19];return null!==r&&(n[19]=r.createEmbeddedView(e)),cs(e,n,t),new ui(n)}}),0===n.type?new pi(r,n,gi(e,n,r)):null}(t,e,Ge(),$e())};let ga=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>ma(t,Bo),t})();const ma=function(t,e){return function(t,e,n,r){let s;fi||(fi=class extends t{constructor(t,e,n){super(),this._lContainer=t,this._hostTNode=e,this._hostView=n}get element(){return gi(e,this._hostTNode,this._hostView)}get injector(){return new Wn(this._hostTNode,this._hostView)}get parentInjector(){const t=Fn(this._hostTNode,this._hostView),e=kn(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){const t=n.parent.injectorIndex;let e=n.parent;for(;null!=e.parent&&t==e.parent.injectorIndex;)e=e.parent;return e}let r=On(t),s=e,i=e[6];for(;r>1;)s=s[15],i=s[6],r--;return i}(t,this._hostView,this._hostTNode);return Tn(t)&&null!=n?new Wn(n,e):new Wn(null,this._hostView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){return null!==this._lContainer[8]&&this._lContainer[8][t]||null}get length(){return this._lContainer.length-10}createEmbeddedView(t,e,n){const r=t.createEmbeddedView(e||{});return this.insert(r,n),r}createComponent(t,e,n,r,s){const i=n||this.parentInjector;if(!s&&null==t.ngModule&&i){const t=i.get(Zt,null);t&&(s=t)}const o=t.create(i,r,void 0,s);return this.insert(o.hostView,e),o}insert(t,e){const n=t._lView,r=n[1];if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");if(this.allocateContainerIfNeeded(),_e(n[3])){const e=this.indexOf(t);if(-1!==e)this.detach(e);else{const e=n[3],r=new fi(e,e[6],e[3]);r.detach(r.indexOf(t))}}const s=this._adjustIndex(e);return function(t,e,n,r){const s=10+r,i=n.length;r>0&&(n[s-1][4]=e),rNn});class wa extends Fo{constructor(t,e){super(),this.componentDef=t,this.ngModule=e,this.componentType=t.type,this.selector=t.selectors.map(Gr).join(","),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!e}get inputs(){return ba(this.componentDef.inputs)}get outputs(){return ba(this.componentDef.outputs)}create(t,e,n,r){const s=(r=r||this.ngModule)?function(t,e){return{get:(n,r,s)=>{const i=t.get(n,ya,s);return i!==ya||r===ya?i:e.get(n,r,s)}}}(t,r.injector):t,i=s.get(Go,ke),o=s.get(Zo,null),a=i.createRenderer(null,this.componentDef),l=this.componentDef.selectors[0][0]||"div",c=n?function(t,e,n){if(Oe(t))return t.selectRootElement(e,n===se.ShadowDom);let r="string"==typeof e?t.querySelector(e):e;return r.textContent="",r}(a,n,this.componentDef.encapsulation):os(l,i.createRenderer(null,this.componentDef),function(t){const e=t.toLowerCase();return"svg"===e?"http://www.w3.org/2000/svg":"math"===e?"http://www.w3.org/1998/MathML/":null}(l)),u=this.componentDef.onPush?576:528,h={components:[],scheduler:Nn,clean:Fs,playerHandler:null,flags:0},d=ms(0,-1,null,1,0,null,null,null,null,null),p=as(null,d,h,u,null,null,i,a,o,s);let f,g;sn(p,null);try{const t=function(t,e,n,r,s,i){const o=n[1];n[20]=t;const a=ls(o,null,0,3,null,null),l=a.mergedAttrs=e.hostAttrs;null!==l&&(Di(a,l,!0),null!==t&&(wn(s,t,l),null!==a.classes&&ci(s,t,a.classes),null!==a.styles&&li(s,t,a.styles)));const c=r.createRenderer(t,e),u=as(n,gs(e),null,e.onPush?64:16,n[20],a,r,c,void 0);return o.firstCreatePass&&(Hn(Ln(a,n),o,e.type),xs(o,a),As(a,n.length,1)),Ds(n,u),n[20]=u}(c,this.componentDef,p,i,a);if(c)if(n)wn(a,c,["ng-version",Yo.full]);else{const{attrs:t,classes:e}=function(t){const e=[],n=[];let r=1,s=2;for(;r0&&ci(a,c,e.join(" "))}if(g=Pe(d,0),void 0!==e){const t=g.projection=[];for(let n=0;nt(o,e)),e.contentQueries&&e.contentQueries(1,o,n.length-1);const a=Ge();if(i.firstCreatePass&&(null!==e.hostBindings||null!==e.hostAttrs)){dn(a.index-20);const t=n[1];ws(t,e),Cs(t,n,e.hostVars),Ss(e,o)}return o}(t,this.componentDef,p,h,[Co]),cs(d,p,null)}finally{un()}const m=new Ca(this.componentType,f,gi(Bo,g,p),p,g);return d.node.child=g,m}}class Ca extends class{}{constructor(t,e,n,r,s){super(),this.location=n,this._rootLView=r,this._tNode=s,this.destroyCbs=[],this.instance=e,this.hostView=this.changeDetectorRef=new hi(r),function(t,e,n,r){let s=t.node;null==s&&(t.node=s=ys(0,null,2,-1,null,null)),r[6]=s}(r[1],0,0,r),this.componentType=t}get injector(){return new Wn(this._tNode,this._rootLView)}destroy(){this.destroyCbs&&(this.destroyCbs.forEach(t=>t()),this.destroyCbs=null,!this.hostView.destroyed&&this.hostView.destroy())}onDestroy(t){this.destroyCbs&&this.destroyCbs.push(t)}}const Sa=void 0;var Ea=["en",[["a","p"],["AM","PM"],Sa],[["AM","PM"],Sa,Sa],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Sa,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Sa,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Sa,"{1} 'at' {0}",Sa],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function(t){let e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}];let xa={};function Ta(t){return t in xa||(xa[t]=At.ng&&At.ng.common&&At.ng.common.locales&&At.ng.common.locales[t]),xa[t]}var Aa=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}({});let Oa="en-US";function ka(t){var e,n;n="Expected localeId to be defined",null==(e=t)&&function(t,e,n,r){throw new Error("ASSERTION ERROR: "+t+` [Expected=> null != ${e} <=Actual]`)}(n,e),"string"==typeof t&&(Oa=t.toLowerCase().replace(/_/g,"-"))}const Ra=new Map;class Ia extends Zt{constructor(t,e){super(),this._parent=e,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[],this.componentFactoryResolver=new va(this);const n=ve(t),r=t[Nt]||null;r&&ka(r),this._bootstrapComponents=Pn(n.bootstrap),this._r3Injector=xi(t,e,[{provide:Zt,useValue:this},{provide:$o,useValue:this.componentFactoryResolver}],yt(t)),this._r3Injector._resolveInjectorDefTypes(),this.instance=this.get(t)}get(t,e=Pi.THROW_IF_NOT_FOUND,n=st.Default){return t===Pi||t===Zt||t===Mt?this:this._r3Injector.get(t,e,n)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Na extends Qt{constructor(t){super(),this.moduleType=t,null!==ve(t)&&function t(e){if(null!==e.\u0275mod.id){const t=e.\u0275mod.id;(function(t,e,n){if(e&&e!==n)throw new Error(`Duplicate module registered for ${t} - ${yt(e)} vs ${yt(e.name)}`)})(t,Ra.get(t),e),Ra.set(t,e)}let n=e.\u0275mod.imports;n instanceof Function&&(n=n()),n&&n.forEach(e=>t(e))}(t)}create(t){return new Ia(this.moduleType,t)}}function Pa(t,e,n,r){return Da($e(),Qe(),t,e,n,r)}function Va(t,e){const n=t[e];return n===qr?void 0:n}function Da(t,e,n,r,s,i){const o=e+n;return $i(t,o,s)?Hi(t,o+1,i?r.call(i,s):r(s)):Va(t,o+1)}const Ma=class extends S{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,e,n){let r,s=t=>null,i=()=>null;t&&"object"==typeof t?(r=this.__isAsync?e=>{setTimeout(()=>t.next(e))}:e=>{t.next(e)},t.error&&(s=this.__isAsync?e=>{setTimeout(()=>t.error(e))}:e=>{t.error(e)}),t.complete&&(i=this.__isAsync?()=>{setTimeout(()=>t.complete())}:()=>{t.complete()})):(r=this.__isAsync?e=>{setTimeout(()=>t(e))}:e=>{t(e)},e&&(s=this.__isAsync?t=>{setTimeout(()=>e(t))}:t=>{e(t)}),n&&(i=this.__isAsync?()=>{setTimeout(()=>n())}:()=>{n()}));const o=super.subscribe(r,s,i);return t instanceof h&&t.add(o),o}},La=new Dt("Application Initializer");let Ua=(()=>{class t{constructor(t){this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}runInitializers(){if(this.initialized)return;const t=[],e=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let n=0;n{e()}).catch(t=>{this.reject(t)}),0===t.length&&e(),this.initialized=!0}}return t.\u0275fac=function(e){return new(e||t)(Gt(La,8))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const ja=new Dt("AppId"),Fa={provide:ja,useFactory:function(){return`${Ha()}${Ha()}${Ha()}`},deps:[]};function Ha(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const $a=new Dt("Platform Initializer"),Ba=new Dt("Platform ID"),za=new Dt("appBootstrapListener");let Ga=(()=>{class t{log(t){console.log(t)}warn(t){console.warn(t)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const qa=new Dt("LocaleId"),Ka=new Dt("DefaultCurrencyCode");class Wa{constructor(t,e){this.ngModuleFactory=t,this.componentFactories=e}}const Za=function(t){return new Na(t)},Qa=Za,Ya=function(t){return Promise.resolve(Za(t))},Ja=function(t){const e=Za(t),n=Pn(ve(t).declarations).reduce((t,e)=>{const n=me(e);return n&&t.push(new wa(n)),t},[]);return new Wa(e,n)},Xa=Ja,tl=function(t){return Promise.resolve(Ja(t))};let el=(()=>{class t{constructor(){this.compileModuleSync=Qa,this.compileModuleAsync=Ya,this.compileModuleAndAllComponentsSync=Xa,this.compileModuleAndAllComponentsAsync=tl}clearCache(){}clearCacheFor(t){}getModuleId(t){}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const nl=(()=>Promise.resolve(0))();function rl(t){"undefined"==typeof Zone?nl.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class sl{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:e=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Ma(!1),this.onMicrotaskEmpty=new Ma(!1),this.onStable=new Ma(!1),this.onError=new Ma(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");Zone.assertZonePatched(),this._nesting=0,this._outer=this._inner=Zone.current,Zone.wtfZoneSpec&&(this._inner=this._inner.fork(Zone.wtfZoneSpec)),Zone.TaskTrackingZoneSpec&&(this._inner=this._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),this.shouldCoalesceEventChangeDetection=e,this.lastRequestAnimationFrameId=-1,this.nativeRequestAnimationFrame=function(){let t=At.requestAnimationFrame,e=At.cancelAnimationFrame;if("undefined"!=typeof Zone&&t&&e){const n=t[Zone.__symbol__("OriginalDelegate")];n&&(t=n);const r=e[Zone.__symbol__("OriginalDelegate")];r&&(e=r)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:e}}().nativeRequestAnimationFrame,function(t){const e=!!t.shouldCoalesceEventChangeDetection&&t.nativeRequestAnimationFrame&&(()=>{!function(t){-1===t.lastRequestAnimationFrameId&&(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(At,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,ll(t),al(t)},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),ll(t))}(t)});t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0,maybeDelayChangeDetection:e},onInvokeTask:(n,r,s,i,o,a)=>{try{return cl(t),n.invokeTask(s,i,o,a)}finally{e&&"eventTask"===i.type&&e(),ul(t)}},onInvoke:(e,n,r,s,i,o,a)=>{try{return cl(t),e.invoke(r,s,i,o,a)}finally{ul(t)}},onHasTask:(e,n,r,s)=>{e.hasTask(r,s),n===r&&("microTask"==s.change?(t._hasPendingMicrotasks=s.microTask,ll(t),al(t)):"macroTask"==s.change&&(t.hasPendingMacrotasks=s.macroTask))},onHandleError:(e,n,r,s)=>(e.handleError(r,s),t.runOutsideAngular(()=>t.onError.emit(s)),!1)})}(this)}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!sl.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(sl.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,e,n){return this._inner.run(t,e,n)}runTask(t,e,n,r){const s=this._inner,i=s.scheduleEventTask("NgZoneEvent: "+r,t,ol,il,il);try{return s.runTask(i,e,n)}finally{s.cancelTask(i)}}runGuarded(t,e,n){return this._inner.runGuarded(t,e,n)}runOutsideAngular(t){return this._outer.run(t)}}function il(){}const ol={};function al(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function ll(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||t.shouldCoalesceEventChangeDetection&&-1!==t.lastRequestAnimationFrameId)}function cl(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function ul(t){t._nesting--,al(t)}class hl{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new Ma,this.onMicrotaskEmpty=new Ma,this.onStable=new Ma,this.onError=new Ma}run(t,e,n){return t.apply(e,n)}runGuarded(t,e,n){return t.apply(e,n)}runOutsideAngular(t){return t()}runTask(t,e,n,r){return t.apply(e,n)}}let dl=(()=>{class t{constructor(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{sl.assertNotInAngularZone(),rl(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())rl(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(e=>!e.updateCb||!e.updateCb(t)||(clearTimeout(e.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,e,n){let r=-1;e&&e>0&&(r=setTimeout(()=>{this._callbacks=this._callbacks.filter(t=>t.timeoutId!==r),t(this._didWork,this.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:r,updateCb:n})}whenStable(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(t,e,n){return[]}}return t.\u0275fac=function(e){return new(e||t)(Gt(sl))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),pl=(()=>{class t{constructor(){this._applications=new Map,ml.addToWindow(this)}registerApplication(t,e){this._applications.set(t,e)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,e=!0){return ml.findTestabilityInTree(this,t,e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();class fl{addToWindow(t){}findTestabilityInTree(t,e,n){return null}}let gl,ml=new fl;const yl=new Dt("AllowMultipleToken");class vl{constructor(t,e){this.name=t,this.token=e}}function bl(t,e,n=[]){const r="Platform: "+e,s=new Dt(r);return(e=[])=>{let i=_l();if(!i||i.injector.get(yl,!1))if(t)t(n.concat(e).concat({provide:s,useValue:!0}));else{const t=n.concat(e).concat({provide:s,useValue:!0},{provide:bi,useValue:"platform"});!function(t){if(gl&&!gl.destroyed&&!gl.injector.get(yl,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");gl=t.get(wl);const e=t.get($a,null);e&&e.forEach(t=>t())}(Pi.create({providers:t,name:r}))}return function(t){const e=_l();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}(s)}}function _l(){return gl&&!gl.destroyed?gl:null}let wl=(()=>{class t{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,e){const n=function(t,e){let n;return n="noop"===t?new hl:("zone.js"===t?void 0:t)||new sl({enableLongStackTrace:or(),shouldCoalesceEventChangeDetection:e}),n}(e?e.ngZone:void 0,e&&e.ngZoneEventCoalescing||!1),r=[{provide:sl,useValue:n}];return n.run(()=>{const e=Pi.create({providers:r,parent:this.injector,name:t.moduleType.name}),s=t.create(e),i=s.injector.get(tr,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return s.onDestroy(()=>El(this._modules,s)),n.runOutsideAngular(()=>n.onError.subscribe({next:t=>{i.handleError(t)}})),function(t,e,n){try{const r=n();return to(r)?r.catch(n=>{throw e.runOutsideAngular(()=>t.handleError(n)),n}):r}catch(r){throw e.runOutsideAngular(()=>t.handleError(r)),r}}(i,n,()=>{const t=s.injector.get(Ua);return t.runInitializers(),t.donePromise.then(()=>(ka(s.injector.get(qa,"en-US")||"en-US"),this._moduleDoBootstrap(s),s))})})}bootstrapModule(t,e=[]){const n=Cl({},e);return function(t,e,n){const r=new Na(n);return Promise.resolve(r)}(0,0,t).then(t=>this.bootstrapModuleFactory(t,n))}_moduleDoBootstrap(t){const e=t.injector.get(Sl);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(t=>e.bootstrap(t));else{if(!t.instance.ngDoBootstrap)throw new Error(`The module ${yt(t.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);t.instance.ngDoBootstrap(e)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t()),this._destroyed=!0}get destroyed(){return this._destroyed}}return t.\u0275fac=function(e){return new(e||t)(Gt(Pi))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();function Cl(t,e){return Array.isArray(e)?e.reduce(Cl,t):Object.assign(Object.assign({},t),e)}let Sl=(()=>{class t{constructor(t,e,n,r,s,i){this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=r,this._componentFactoryResolver=s,this._initStatus=i,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=or(),this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new v(t=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{t.next(this._stable),t.complete()})}),a=new v(t=>{let e;this._zone.runOutsideAngular(()=>{e=this._zone.onStable.subscribe(()=>{sl.assertNotInAngularZone(),rl(()=>{this._stable||this._zone.hasPendingMacrotasks||this._zone.hasPendingMicrotasks||(this._stable=!0,t.next(!0))})})});const n=this._zone.onUnstable.subscribe(()=>{sl.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{t.next(!1)}))});return()=>{e.unsubscribe(),n.unsubscribe()}});this.isStable=function(...t){let e=Number.POSITIVE_INFINITY,n=null,r=t[t.length-1];return x(r)?(n=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(e=t.pop())):"number"==typeof r&&(e=t.pop()),null===n&&1===t.length&&t[0]instanceof v?t[0]:B(e)(z(t,n))}(o,a.pipe(t=>{return G()((e=Y,function(t){let n;n="function"==typeof e?e:function(){return e};const r=Object.create(t,Z);return r.source=t,r.subjectFactory=n,r})(t));var e}))}bootstrap(t,e){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let n;n=t instanceof Fo?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);const r=n.isBoundToModule?void 0:this._injector.get(Zt),s=n.create(Pi.NULL,[],e||n.selector,r);s.onDestroy(()=>{this._unloadComponent(s)});const i=s.injector.get(dl,null);return i&&s.injector.get(pl).registerApplication(s.location.nativeElement,i),this._loadComponent(s),or()&&this._console.log("Angular is running in development mode. Call enableProdMode() to enable production mode."),s}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");try{this._runningTick=!0;for(let t of this._views)t.detectChanges();if(this._enforceNoNewChanges)for(let t of this._views)t.checkNoChanges()}catch(t){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(t))}finally{this._runningTick=!1}}attachView(t){const e=t;this._views.push(e),e.attachToAppRef(this)}detachView(t){const e=t;El(this._views,e),e.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(za,[]).concat(this._bootstrapListeners).forEach(e=>e(t))}_unloadComponent(t){this.detachView(t.hostView),El(this.components,t)}ngOnDestroy(){this._views.slice().forEach(t=>t.destroy())}get viewCount(){return this._views.length}}return t.\u0275fac=function(e){return new(e||t)(Gt(sl),Gt(Ga),Gt(Pi),Gt(tr),Gt($o),Gt(Ua))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();function El(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}class xl{}class Tl{}const Al={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};let Ol=(()=>{class t{constructor(t,e){this._compiler=t,this._config=e||Al}load(t){return this.loadAndCompile(t)}loadAndCompile(t){let[e,r]=t.split("#");return void 0===r&&(r="default"),n("zn8P")(e).then(t=>t[r]).then(t=>kl(t,e,r)).then(t=>this._compiler.compileModuleAsync(t))}loadFactory(t){let[e,r]=t.split("#"),s="NgFactory";return void 0===r&&(r="default",s=""),n("zn8P")(this._config.factoryPathPrefix+e+this._config.factoryPathSuffix).then(t=>t[r+s]).then(t=>kl(t,e,r))}}return t.\u0275fac=function(e){return new(e||t)(Gt(el),Gt(Tl,8))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();function kl(t,e,n){if(!t)throw new Error(`Cannot find '${n}' in '${e}'`);return t}const Rl=bl(null,"core",[{provide:Ba,useValue:"unknown"},{provide:wl,deps:[Pi]},{provide:pl,deps:[]},{provide:Ga,deps:[]}]),Il=[{provide:Sl,useClass:Sl,deps:[sl,Ga,Pi,tr,$o,Ua]},{provide:_a,deps:[sl],useFactory:function(t){let e=[];return t.onStable.subscribe(()=>{for(;e.length;)e.pop()()}),function(t){e.push(t)}}},{provide:Ua,useClass:Ua,deps:[[new et,La]]},{provide:el,useClass:el,deps:[]},Fa,{provide:la,useFactory:function(){return ha},deps:[]},{provide:ca,useFactory:function(){return da},deps:[]},{provide:qa,useFactory:function(t){return ka(t=t||"undefined"!=typeof $localize&&$localize.locale||"en-US"),t},deps:[[new tt(qa),new et,new rt]]},{provide:Ka,useValue:"USD"}];let Nl=(()=>{class t{constructor(t){}}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)(Gt(Sl))},providers:Il}),t})(),Pl=null;function Vl(){return Pl}const Dl=new Dt("DocumentToken");let Ml=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({factory:Ll,token:t,providedIn:"platform"}),t})();function Ll(){return Gt(jl)}const Ul=new Dt("Location Initialized");let jl=(()=>{class t extends Ml{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=Vl().getLocation(),this._history=Vl().getHistory()}getBaseHrefFromDOM(){return Vl().getBaseHref(this._doc)}onPopState(t){Vl().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}onHashChange(t){Vl().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}get href(){return this.location.href}get protocol(){return this.location.protocol}get hostname(){return this.location.hostname}get port(){return this.location.port}get pathname(){return this.location.pathname}get search(){return this.location.search}get hash(){return this.location.hash}set pathname(t){this.location.pathname=t}pushState(t,e,n){Fl()?this._history.pushState(t,e,n):this.location.hash=n}replaceState(t,e,n){Fl()?this._history.replaceState(t,e,n):this.location.hash=n}forward(){this._history.forward()}back(){this._history.back()}getState(){return this._history.state}}return t.\u0275fac=function(e){return new(e||t)(Gt(Dl))},t.\u0275prov=at({factory:Hl,token:t,providedIn:"platform"}),t})();function Fl(){return!!window.history.pushState}function Hl(){return new jl(Gt(Dl))}function $l(t,e){if(0==t.length)return e;if(0==e.length)return t;let n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}function Bl(t){const e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}function zl(t){return t&&"?"!==t[0]?"?"+t:t}let Gl=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({factory:ql,token:t,providedIn:"root"}),t})();function ql(t){const e=Gt(Dl).location;return new Wl(Gt(Ml),e&&e.origin||"")}const Kl=new Dt("appBaseHref");let Wl=(()=>{class t extends Gl{constructor(t,e){if(super(),this._platformLocation=t,null==e&&(e=this._platformLocation.getBaseHrefFromDOM()),null==e)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=e}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return $l(this._baseHref,t)}path(t=!1){const e=this._platformLocation.pathname+zl(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?`${e}${n}`:e}pushState(t,e,n,r){const s=this.prepareExternalUrl(n+zl(r));this._platformLocation.pushState(t,e,s)}replaceState(t,e,n,r){const s=this.prepareExternalUrl(n+zl(r));this._platformLocation.replaceState(t,e,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}return t.\u0275fac=function(e){return new(e||t)(Gt(Ml),Gt(Kl,8))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Zl=(()=>{class t extends Gl{constructor(t,e){super(),this._platformLocation=t,this._baseHref="",null!=e&&(this._baseHref=e)}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}path(t=!1){let e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e}prepareExternalUrl(t){const e=$l(this._baseHref,t);return e.length>0?"#"+e:e}pushState(t,e,n,r){let s=this.prepareExternalUrl(n+zl(r));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(t,e,s)}replaceState(t,e,n,r){let s=this.prepareExternalUrl(n+zl(r));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}return t.\u0275fac=function(e){return new(e||t)(Gt(Ml),Gt(Kl,8))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Ql=(()=>{class t{constructor(t,e){this._subject=new Ma,this._urlChangeListeners=[],this._platformStrategy=t;const n=this._platformStrategy.getBaseHref();this._platformLocation=e,this._baseHref=Bl(Jl(n)),this._platformStrategy.onPopState(t=>{this._subject.emit({url:this.path(!0),pop:!0,state:t.state,type:t.type})})}path(t=!1){return this.normalize(this._platformStrategy.path(t))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(t,e=""){return this.path()==this.normalize(t+zl(e))}normalize(e){return t.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,Jl(e)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}go(t,e="",n=null){this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+zl(e)),n)}replaceState(t,e="",n=null){this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+zl(e)),n)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}onUrlChange(t){this._urlChangeListeners.push(t),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)}))}_notifyUrlChangeListeners(t="",e){this._urlChangeListeners.forEach(n=>n(t,e))}subscribe(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}}return t.\u0275fac=function(e){return new(e||t)(Gt(Gl),Gt(Ml))},t.normalizeQueryParams=zl,t.joinWithSlash=$l,t.stripTrailingSlash=Bl,t.\u0275prov=at({factory:Yl,token:t,providedIn:"root"}),t})();function Yl(){return new Ql(Gt(Gl),Gt(Ml))}function Jl(t){return t.replace(/\/index.html$/,"")}var Xl=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({});class tc{}let ec=(()=>{class t extends tc{constructor(t){super(),this.locale=t}getPluralCategory(t,e){switch(function(t){return function(t){const e=function(t){return t.toLowerCase().replace(/_/g,"-")}(t);let n=Ta(e);if(n)return n;const r=e.split("-")[0];if(n=Ta(r),n)return n;if("en"===r)return Ea;throw new Error(`Missing locale data for the locale "${t}".`)}(t)[Aa.PluralCase]}(e||this.locale)(t)){case Xl.Zero:return"zero";case Xl.One:return"one";case Xl.Two:return"two";case Xl.Few:return"few";case Xl.Many:return"many";default:return"other"}}}return t.\u0275fac=function(e){return new(e||t)(Gt(qa))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();function nc(t,e){e=encodeURIComponent(e);for(const n of t.split(";")){const t=n.indexOf("="),[r,s]=-1==t?[n,""]:[n.slice(0,t),n.slice(t+1)];if(r.trim()===e)return decodeURIComponent(s)}return null}let rc=(()=>{class t{constructor(t,e,n,r){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=r,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(ji(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachChangedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachRemovedItem(t=>{t.previousValue&&this._toggleClass(t.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(t=>{if("string"!=typeof t.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+yt(t.item));this._toggleClass(t.item,!0)}),t.forEachRemovedItem(t=>this._toggleClass(t.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!0)):Object.keys(t).forEach(e=>this._toggleClass(e,!!t[e])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!1)):Object.keys(t).forEach(t=>this._toggleClass(t,!1)))}_toggleClass(t,e){(t=t.trim())&&t.split(/\s+/g).forEach(t=>{e?this._renderer.addClass(this._ngEl.nativeElement,t):this._renderer.removeClass(this._ngEl.nativeElement,t)})}}return t.\u0275fac=function(e){return new(e||t)(Ki(la),Ki(ca),Ki(Bo),Ki(Ko))},t.\u0275dir=fe({type:t,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"}}),t})();class sc{constructor(t,e,n,r){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let ic=(()=>{class t{constructor(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){or()&&null!=t&&"function"!=typeof t&&console&&console.warn&&console.warn(`trackBy must be a function, but received ${JSON.stringify(t)}. See https://angular.io/api/common/NgForOf#change-propagation for more information.`),this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(e){throw new Error(`Cannot find a differ supporting object '${n}' of type '${t=n,t.name||typeof t}'. NgFor only supports binding to Iterables such as Arrays.`)}}var t;if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const e=[];t.forEachOperation((t,n,r)=>{if(null==t.previousIndex){const n=this._viewContainer.createEmbeddedView(this._template,new sc(null,this._ngForOf,-1,-1),null===r?void 0:r),s=new oc(t,n);e.push(s)}else if(null==r)this._viewContainer.remove(null===n?void 0:n);else if(null!==n){const s=this._viewContainer.get(n);this._viewContainer.move(s,r);const i=new oc(t,s);e.push(i)}});for(let n=0;n{this._viewContainer.get(t.currentIndex).context.$implicit=t.item})}_perViewChange(t,e){t.context.$implicit=e.item}static ngTemplateContextGuard(t,e){return!0}}return t.\u0275fac=function(e){return new(e||t)(Ki(ga),Ki(pa),Ki(la))},t.\u0275dir=fe({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}}),t})();class oc{constructor(t,e){this.record=t,this.view=e}}let ac=(()=>{class t{constructor(t,e){this._viewContainer=t,this._context=new lc,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){cc("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){cc("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(t,e){return!0}}return t.\u0275fac=function(e){return new(e||t)(Ki(ga),Ki(pa))},t.\u0275dir=fe({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}}),t})();class lc{constructor(){this.$implicit=null,this.ngIf=null}}function cc(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${yt(e)}'.`)}let uc=(()=>{class t{constructor(t){this.differs=t,this.keyValues=[]}transform(t,e=hc){if(!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());const n=this.differ.diff(t);return n&&(this.keyValues=[],n.forEachItem(t=>{this.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues}}return t.\u0275fac=function(e){return new(e||t)(Ki(ca))},t.\u0275pipe=ge({name:"keyvalue",type:t,pure:!1}),t})();function hc(t,e){const n=t.key,r=e.key;if(n===r)return 0;if(void 0===n)return 1;if(void 0===r)return-1;if(null===n)return 1;if(null===r)return-1;if("string"==typeof n&&"string"==typeof r)return n{class t{}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)},providers:[{provide:tc,useClass:ec}]}),t})(),pc=(()=>{class t{}return t.\u0275prov=at({token:t,providedIn:"root",factory:()=>new fc(Gt(Dl),window,Gt(tr))}),t})();class fc{constructor(t,e,n){this.document=t,this.window=e,this.errorHandler=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]}scrollToPosition(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){if(this.supportScrollRestoration()){t=this.window.CSS&&this.window.CSS.escape?this.window.CSS.escape(t):t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g,"\\$1");try{const e=this.document.querySelector("#"+t);if(e)return void this.scrollToElement(e);const n=this.document.querySelector(`[name='${t}']`);if(n)return void this.scrollToElement(n)}catch(e){this.errorHandler.handleError(e)}}}setHistoryScrollRestoration(t){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}scrollToElement(t){const e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,r=e.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo(n-s[0],r-s[1])}supportScrollRestoration(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}}}class gc extends class extends class{}{constructor(){super()}supportsDOMEvents(){return!0}}{static makeCurrent(){var t;t=new gc,Pl||(Pl=t)}getProperty(t,e){return t[e]}log(t){window.console&&window.console.log&&window.console.log(t)}logGroup(t){window.console&&window.console.group&&window.console.group(t)}logGroupEnd(){window.console&&window.console.groupEnd&&window.console.groupEnd()}onAndCancel(t,e,n){return t.addEventListener(e,n,!1),()=>{t.removeEventListener(e,n,!1)}}dispatchEvent(t,e){t.dispatchEvent(e)}remove(t){return t.parentNode&&t.parentNode.removeChild(t),t}getValue(t){return t.value}createElement(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}getHistory(){return window.history}getLocation(){return window.location}getBaseHref(t){const e=yc||(yc=document.querySelector("base"),yc)?yc.getAttribute("href"):null;return null==e?null:(n=e,mc||(mc=document.createElement("a")),mc.setAttribute("href",n),"/"===mc.pathname.charAt(0)?mc.pathname:"/"+mc.pathname);var n}resetBaseElement(){yc=null}getUserAgent(){return window.navigator.userAgent}performanceNow(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}supportsCookies(){return!0}getCookie(t){return nc(document.cookie,t)}}let mc,yc=null;const vc=new Dt("TRANSITION_ID"),bc=[{provide:La,useFactory:function(t,e,n){return()=>{n.get(Ua).donePromise.then(()=>{const n=Vl();Array.prototype.slice.apply(e.querySelectorAll("style[ng-transition]")).filter(e=>e.getAttribute("ng-transition")===t).forEach(t=>n.remove(t))})}},deps:[vc,Dl,Pi],multi:!0}];class _c{static init(){var t;t=new _c,ml=t}addToWindow(t){At.getAngularTestability=(e,n=!0)=>{const r=t.findTestabilityInTree(e,n);if(null==r)throw new Error("Could not find testability for element.");return r},At.getAllAngularTestabilities=()=>t.getAllTestabilities(),At.getAllAngularRootElements=()=>t.getAllRootElements(),At.frameworkStabilizers||(At.frameworkStabilizers=[]),At.frameworkStabilizers.push(t=>{const e=At.getAllAngularTestabilities();let n=e.length,r=!1;const s=function(e){r=r||e,n--,0==n&&t(r)};e.forEach((function(t){t.whenStable(s)}))})}findTestabilityInTree(t,e,n){if(null==e)return null;const r=t.getTestability(e);return null!=r?r:n?Vl().isShadowRoot(e)?this.findTestabilityInTree(t,e.host,!0):this.findTestabilityInTree(t,e.parentElement,!0):null}}const wc=new Dt("EventManagerPlugins");let Cc=(()=>{class t{constructor(t,e){this._zone=e,this._eventNameToPlugin=new Map,t.forEach(t=>t.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}addGlobalEventListener(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}getZone(){return this._zone}_findPluginFor(t){const e=this._eventNameToPlugin.get(t);if(e)return e;const n=this._plugins;for(let r=0;r{class t{constructor(){this._stylesSet=new Set}addStyles(t){const e=new Set;t.forEach(t=>{this._stylesSet.has(t)||(this._stylesSet.add(t),e.add(t))}),this.onStylesAdded(e)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),xc=(()=>{class t extends Ec{constructor(t){super(),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}_addStylesToHost(t,e){t.forEach(t=>{const n=this._doc.createElement("style");n.textContent=t,this._styleNodes.add(e.appendChild(n))})}addHost(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)}removeHost(t){this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach(e=>this._addStylesToHost(t,e))}ngOnDestroy(){this._styleNodes.forEach(t=>Vl().remove(t))}}return t.\u0275fac=function(e){return new(e||t)(Gt(Dl))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const Tc={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},Ac=/%COMP%/g;function Oc(t,e,n){for(let r=0;r{if("__ngUnwrap__"===e)return t;!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}let Rc=(()=>{class t{constructor(t,e,n){this.eventManager=t,this.sharedStylesHost=e,this.appId=n,this.rendererByCompId=new Map,this.defaultRenderer=new Ic(t)}createRenderer(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case se.Emulated:{let n=this.rendererByCompId.get(e.id);return n||(n=new Nc(this.eventManager,this.sharedStylesHost,e,this.appId),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n}case se.Native:case se.ShadowDom:return new Pc(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){const t=Oc(e.id,e.styles,[]);this.sharedStylesHost.addStyles(t),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return t.\u0275fac=function(e){return new(e||t)(Gt(Cc),Gt(xc),Gt(ja))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();class Ic{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,e){return e?document.createElementNS(Tc[e]||e,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,e){t.appendChild(e)}insertBefore(t,e,n){t&&t.insertBefore(e,n)}removeChild(t,e){t&&t.removeChild(e)}selectRootElement(t,e){let n="string"==typeof t?document.querySelector(t):t;if(!n)throw new Error(`The selector "${t}" did not match any elements`);return e||(n.textContent=""),n}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,e,n,r){if(r){e=r+":"+e;const s=Tc[r];s?t.setAttributeNS(s,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)}removeAttribute(t,e,n){if(n){const r=Tc[n];r?t.removeAttributeNS(r,e):t.removeAttribute(`${n}:${e}`)}else t.removeAttribute(e)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}setStyle(t,e,n,r){r&qo.DashCase?t.style.setProperty(e,n,r&qo.Important?"important":""):t.style[e]=n}removeStyle(t,e,n){n&qo.DashCase?t.style.removeProperty(e):t.style[e]=""}setProperty(t,e,n){t[e]=n}setValue(t,e){t.nodeValue=e}listen(t,e,n){return"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,kc(n)):this.eventManager.addEventListener(t,e,kc(n))}}class Nc extends Ic{constructor(t,e,n,r){super(t),this.component=n;const s=Oc(r+"-"+n.id,n.styles,[]);e.addStyles(s),this.contentAttr="_ngcontent-%COMP%".replace(Ac,r+"-"+n.id),this.hostAttr=function(t){return"_nghost-%COMP%".replace(Ac,t)}(r+"-"+n.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,e){const n=super.createElement(t,e);return super.setAttribute(n,this.contentAttr,""),n}}class Pc extends Ic{constructor(t,e,n,r){super(t),this.sharedStylesHost=e,this.hostEl=n,this.component=r,this.shadowRoot=r.encapsulation===se.ShadowDom?n.attachShadow({mode:"open"}):n.createShadowRoot(),this.sharedStylesHost.addHost(this.shadowRoot);const s=Oc(r.id,r.styles,[]);for(let i=0;i{class t extends Sc{constructor(t){super(t)}supports(t){return!0}addEventListener(t,e,n){return t.addEventListener(e,n,!1),()=>this.removeEventListener(t,e,n)}removeEventListener(t,e,n){return t.removeEventListener(e,n)}}return t.\u0275fac=function(e){return new(e||t)(Gt(Dl))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const Dc=["alt","control","meta","shift"],Mc={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Lc={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"},Uc={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let jc=(()=>{class t extends Sc{constructor(t){super(t)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,n,r){const s=t.parseEventName(n),i=t.eventCallback(s.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Vl().onAndCancel(e,s.domEventName,i))}static parseEventName(e){const n=e.toLowerCase().split("."),r=n.shift();if(0===n.length||"keydown"!==r&&"keyup"!==r)return null;const s=t._normalizeKey(n.pop());let i="";if(Dc.forEach(t=>{const e=n.indexOf(t);e>-1&&(n.splice(e,1),i+=t+".")}),i+=s,0!=n.length||0===s.length)return null;const o={};return o.domEventName=r,o.fullKey=i,o}static getEventFullKey(t){let e="",n=function(t){let e=t.key;if(null==e){if(e=t.keyIdentifier,null==e)return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&Lc.hasOwnProperty(e)&&(e=Lc[e]))}return Mc[e]||e}(t);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),Dc.forEach(r=>{r!=n&&(0,Uc[r])(t)&&(e+=r+".")}),e+=n,e}static eventCallback(e,n,r){return s=>{t.getEventFullKey(s)===e&&r.runGuarded(()=>n(s))}}static _normalizeKey(t){switch(t){case"esc":return"escape";default:return t}}}return t.\u0275fac=function(e){return new(e||t)(Gt(Dl))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const Fc=bl(Rl,"browser",[{provide:Ba,useValue:"browser"},{provide:$a,useValue:function(){gc.makeCurrent(),_c.init()},multi:!0},{provide:Dl,useFactory:function(){return function(t){Te=t}(document),document},deps:[]}]),Hc=[[],{provide:bi,useValue:"root"},{provide:tr,useFactory:function(){return new tr},deps:[]},{provide:wc,useClass:Vc,multi:!0,deps:[Dl,sl,Ba]},{provide:wc,useClass:jc,multi:!0,deps:[Dl]},[],{provide:Rc,useClass:Rc,deps:[Cc,xc,ja]},{provide:Go,useExisting:Rc},{provide:Ec,useExisting:xc},{provide:xc,useClass:xc,deps:[Dl]},{provide:dl,useClass:dl,deps:[sl]},{provide:Cc,useClass:Cc,deps:[wc,sl]},[]];let $c=(()=>{class t{constructor(t){if(t)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(e){return{ngModule:t,providers:[{provide:ja,useValue:e.appId},{provide:vc,useExisting:ja},bc]}}}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)(Gt(t,12))},providers:Hc,imports:[dc,Nl]}),t})();function Bc(...t){let e=t[t.length-1];return x(e)?(t.pop(),U(t,e)):z(t)}function zc(t,e){return F(t,e,1)}function Gc(t,e){return function(n){return n.lift(new qc(t,e))}}"undefined"!=typeof window&&window;class qc{constructor(t,e){this.predicate=t,this.thisArg=e}call(t,e){return e.subscribe(new Kc(t,this.predicate,this.thisArg))}}class Kc extends f{constructor(t,e,n){super(t),this.predicate=e,this.thisArg=n,this.count=0}_next(t){let e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)}}class Wc{}class Zc{}class Qc{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(t=>{const e=t.indexOf(":");if(e>0){const n=t.slice(0,e),r=n.toLowerCase(),s=t.slice(e+1).trim();this.maybeSetNormalizedName(n,r),this.headers.has(r)?this.headers.get(r).push(s):this.headers.set(r,[s])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(e=>{let n=t[e];const r=e.toLowerCase();"string"==typeof n&&(n=[n]),n.length>0&&(this.headers.set(r,n),this.maybeSetNormalizedName(e,r))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,e){return this.clone({name:t,value:e,op:"a"})}set(t,e){return this.clone({name:t,value:e,op:"s"})}delete(t,e){return this.clone({name:t,value:e,op:"d"})}maybeSetNormalizedName(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)}init(){this.lazyInit&&(this.lazyInit instanceof Qc?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(e=>{this.headers.set(e,t.headers.get(e)),this.normalizedNames.set(e,t.normalizedNames.get(e))})}clone(t){const e=new Qc;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Qc?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([t]),e}applyUpdate(t){const e=t.name.toLowerCase();switch(t.op){case"a":case"s":let n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);const r=("a"===t.op?this.headers.get(e):void 0)||[];r.push(...n),this.headers.set(e,r);break;case"d":const s=t.value;if(s){let t=this.headers.get(e);if(!t)return;t=t.filter(t=>-1===s.indexOf(t)),0===t.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,t)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>t(this.normalizedNames.get(e),this.headers.get(e)))}}class Yc{encodeKey(t){return Jc(t)}encodeValue(t){return Jc(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}function Jc(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}class Xc{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new Yc,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(t,e){const n=new Map;return t.length>0&&t.split("&").forEach(t=>{const r=t.indexOf("="),[s,i]=-1==r?[e.decodeKey(t),""]:[e.decodeKey(t.slice(0,r)),e.decodeValue(t.slice(r+1))],o=n.get(s)||[];o.push(i),n.set(s,o)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(e=>{const n=t.fromObject[e];this.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const e=this.map.get(t);return e?e[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,e){return this.clone({param:t,value:e,op:"a"})}set(t,e){return this.clone({param:t,value:e,op:"s"})}delete(t,e){return this.clone({param:t,value:e,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const e=this.encoder.encodeKey(t);return this.map.get(t).map(t=>e+"="+this.encoder.encodeValue(t)).join("&")}).filter(t=>""!==t).join("&")}clone(t){const e=new Xc({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat([t]),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const e=("a"===t.op?this.map.get(t.param):void 0)||[];e.push(t.value),this.map.set(t.param,e);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let e=this.map.get(t.param)||[];const n=e.indexOf(t.value);-1!==n&&e.splice(n,1),e.length>0?this.map.set(t.param,e):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}function tu(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function eu(t){return"undefined"!=typeof Blob&&t instanceof Blob}function nu(t){return"undefined"!=typeof FormData&&t instanceof FormData}class ru{constructor(t,e,n,r){let s;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==n?n:null,s=r):s=n,s&&(this.reportProgress=!!s.reportProgress,this.withCredentials=!!s.withCredentials,s.responseType&&(this.responseType=s.responseType),s.headers&&(this.headers=s.headers),s.params&&(this.params=s.params)),this.headers||(this.headers=new Qc),this.params){const t=this.params.toString();if(0===t.length)this.urlWithParams=e;else{const n=e.indexOf("?");this.urlWithParams=e+(-1===n?"?":ne.set(n,t.setHeaders[n]),a)),t.setParams&&(l=Object.keys(t.setParams).reduce((e,n)=>e.set(n,t.setParams[n]),l)),new ru(e,n,s,{params:l,headers:a,reportProgress:o,responseType:r,withCredentials:i})}}var su=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}({});class iu{constructor(t,e=200,n="OK"){this.headers=t.headers||new Qc,this.status=void 0!==t.status?t.status:e,this.statusText=t.statusText||n,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class ou extends iu{constructor(t={}){super(t),this.type=su.ResponseHeader}clone(t={}){return new ou({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class au extends iu{constructor(t={}){super(t),this.type=su.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new au({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class lu extends iu{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?"Http failure during parsing for "+(t.url||"(unknown url)"):`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function cu(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}let uu=(()=>{class t{constructor(t){this.handler=t}request(t,e,n={}){let r;if(t instanceof ru)r=t;else{let s=void 0;s=n.headers instanceof Qc?n.headers:new Qc(n.headers);let i=void 0;n.params&&(i=n.params instanceof Xc?n.params:new Xc({fromObject:n.params})),r=new ru(t,e,void 0!==n.body?n.body:null,{headers:s,params:i,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}const s=Bc(r).pipe(zc(t=>this.handler.handle(t)));if(t instanceof ru||"events"===n.observe)return s;const i=s.pipe(Gc(t=>t instanceof au));switch(n.observe||"body"){case"body":switch(r.responseType){case"arraybuffer":return i.pipe(D(t=>{if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return i.pipe(D(t=>{if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return i.pipe(D(t=>{if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return i.pipe(D(t=>t.body))}case"response":return i;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(t,e={}){return this.request("DELETE",t,e)}get(t,e={}){return this.request("GET",t,e)}head(t,e={}){return this.request("HEAD",t,e)}jsonp(t,e){return this.request("JSONP",t,{params:(new Xc).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,e={}){return this.request("OPTIONS",t,e)}patch(t,e,n={}){return this.request("PATCH",t,cu(n,e))}post(t,e,n={}){return this.request("POST",t,cu(n,e))}put(t,e,n={}){return this.request("PUT",t,cu(n,e))}}return t.\u0275fac=function(e){return new(e||t)(Gt(Wc))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();class hu{constructor(t,e){this.next=t,this.interceptor=e}handle(t){return this.interceptor.intercept(t,this.next)}}const du=new Dt("HTTP_INTERCEPTORS");let pu=(()=>{class t{intercept(t,e){return e.handle(t)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const fu=/^\)\]\}',?\n/;class gu{}let mu=(()=>{class t{constructor(){}build(){return new XMLHttpRequest}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),yu=(()=>{class t{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new v(e=>{const n=this.xhrFactory.build();if(n.open(t.method,t.urlWithParams),t.withCredentials&&(n.withCredentials=!0),t.headers.forEach((t,e)=>n.setRequestHeader(t,e.join(","))),t.headers.has("Accept")||n.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const e=t.detectContentTypeHeader();null!==e&&n.setRequestHeader("Content-Type",e)}if(t.responseType){const e=t.responseType.toLowerCase();n.responseType="json"!==e?e:"text"}const r=t.serializeBody();let s=null;const i=()=>{if(null!==s)return s;const e=1223===n.status?204:n.status,r=n.statusText||"OK",i=new Qc(n.getAllResponseHeaders()),o=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(n)||t.url;return s=new ou({headers:i,status:e,statusText:r,url:o}),s},o=()=>{let{headers:r,status:s,statusText:o,url:a}=i(),l=null;204!==s&&(l=void 0===n.response?n.responseText:n.response),0===s&&(s=l?200:0);let c=s>=200&&s<300;if("json"===t.responseType&&"string"==typeof l){const t=l;l=l.replace(fu,"");try{l=""!==l?JSON.parse(l):null}catch(u){l=t,c&&(c=!1,l={error:u,text:l})}}c?(e.next(new au({body:l,headers:r,status:s,statusText:o,url:a||void 0})),e.complete()):e.error(new lu({error:l,headers:r,status:s,statusText:o,url:a||void 0}))},a=t=>{const{url:r}=i(),s=new lu({error:t,status:n.status||0,statusText:n.statusText||"Unknown Error",url:r||void 0});e.error(s)};let l=!1;const c=r=>{l||(e.next(i()),l=!0);let s={type:su.DownloadProgress,loaded:r.loaded};r.lengthComputable&&(s.total=r.total),"text"===t.responseType&&n.responseText&&(s.partialText=n.responseText),e.next(s)},u=t=>{let n={type:su.UploadProgress,loaded:t.loaded};t.lengthComputable&&(n.total=t.total),e.next(n)};return n.addEventListener("load",o),n.addEventListener("error",a),t.reportProgress&&(n.addEventListener("progress",c),null!==r&&n.upload&&n.upload.addEventListener("progress",u)),n.send(r),e.next({type:su.Sent}),()=>{n.removeEventListener("error",a),n.removeEventListener("load",o),t.reportProgress&&(n.removeEventListener("progress",c),null!==r&&n.upload&&n.upload.removeEventListener("progress",u)),n.readyState!==n.DONE&&n.abort()}})}}return t.\u0275fac=function(e){return new(e||t)(Gt(gu))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const vu=new Dt("XSRF_COOKIE_NAME"),bu=new Dt("XSRF_HEADER_NAME");class _u{}let wu=(()=>{class t{constructor(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=nc(t,this.cookieName),this.lastCookieString=t),this.lastToken}}return t.\u0275fac=function(e){return new(e||t)(Gt(Dl),Gt(Ba),Gt(vu))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Cu=(()=>{class t{constructor(t,e){this.tokenService=t,this.headerName=e}intercept(t,e){const n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);const r=this.tokenService.getToken();return null===r||t.headers.has(this.headerName)||(t=t.clone({headers:t.headers.set(this.headerName,r)})),e.handle(t)}}return t.\u0275fac=function(e){return new(e||t)(Gt(_u),Gt(bu))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Su=(()=>{class t{constructor(t,e){this.backend=t,this.injector=e,this.chain=null}handle(t){if(null===this.chain){const t=this.injector.get(du,[]);this.chain=t.reduceRight((t,e)=>new hu(t,e),this.backend)}return this.chain.handle(t)}}return t.\u0275fac=function(e){return new(e||t)(Gt(Zc),Gt(Pi))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Eu=(()=>{class t{static disable(){return{ngModule:t,providers:[{provide:Cu,useClass:pu}]}}static withOptions(e={}){return{ngModule:t,providers:[e.cookieName?{provide:vu,useValue:e.cookieName}:[],e.headerName?{provide:bu,useValue:e.headerName}:[]]}}}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)},providers:[Cu,{provide:du,useExisting:Cu,multi:!0},{provide:_u,useClass:wu},{provide:vu,useValue:"XSRF-TOKEN"},{provide:bu,useValue:"X-XSRF-TOKEN"}]}),t})(),xu=(()=>{class t{}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)},providers:[uu,{provide:Wc,useClass:Su},yu,{provide:Zc,useExisting:yu},mu,{provide:gu,useExisting:mu}],imports:[[Eu.withOptions({cookieName:"XSRF-TOKEN",headerName:"X-XSRF-TOKEN"})]]}),t})();class Tu extends S{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const e=super._subscribe(t);return e&&!e.closed&&t.next(this._value),e}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new _;return this._value}next(t){super.next(this._value=t)}}const Au=(()=>{function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t})(),Ou={};class ku{constructor(t){this.resultSelector=t}call(t,e){return e.subscribe(new Ru(t,this.resultSelector))}}class Ru extends V{constructor(t,e){super(t),this.resultSelector=e,this.active=0,this.values=[],this.observables=[]}_next(t){this.values.push(Ou),this.observables.push(t)}_complete(){const t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(let n=0;nt.complete());function Nu(t){return t?function(t){return new v(e=>t.schedule(()=>e.complete()))}(t):Iu}function Pu(t){return new v(e=>{let n;try{n=t()}catch(r){return void e.error(r)}return(n?j(n):Nu()).subscribe(e)})}function Vu(){return B(1)}const Du=(()=>{function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t})();function Mu(t){return function(e){return 0===t?Nu():e.lift(new Lu(t))}}class Lu{constructor(t){if(this.total=t,this.total<0)throw new Du}call(t,e){return e.subscribe(new Uu(t,this.total))}}class Uu extends f{constructor(t,e){super(t),this.total=e,this.ring=new Array,this.count=0}_next(t){const e=this.ring,n=this.total,r=this.count++;e.length0){const n=this.count>=this.total?this.total:this.count,r=this.ring;for(let s=0;se.lift(new Fu(t))}class Fu{constructor(t){this.errorFactory=t}call(t,e){return e.subscribe(new Hu(t,this.errorFactory))}}class Hu extends f{constructor(t,e){super(t),this.errorFactory=e,this.hasValue=!1}_next(t){this.hasValue=!0,this.destination.next(t)}_complete(){if(this.hasValue)return this.destination.complete();{let e;try{e=this.errorFactory()}catch(t){e=t}this.destination.error(e)}}}function $u(){return new Au}function Bu(t=null){return e=>e.lift(new zu(t))}class zu{constructor(t){this.defaultValue=t}call(t,e){return e.subscribe(new Gu(t,this.defaultValue))}}class Gu extends f{constructor(t,e){super(t),this.defaultValue=e,this.isEmpty=!0}_next(t){this.isEmpty=!1,this.destination.next(t)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}function qu(t){return function(e){const n=new Ku(t),r=e.lift(n);return n.caught=r}}class Ku{constructor(t){this.selector=t}call(t,e){return e.subscribe(new Wu(t,this.selector,this.caught))}}class Wu extends V{constructor(t,e,n){super(t),this.selector=e,this.caught=n}error(t){if(!this.isStopped){let n;try{n=this.selector(t,this.caught)}catch(e){return void super.error(e)}this._unsubscribeAndRecycle();const r=new T(this,void 0,void 0);this.add(r);const s=P(this,n,void 0,void 0,r);s!==r&&this.add(s)}}}function Zu(t){return e=>0===t?Nu():e.lift(new Qu(t))}class Qu{constructor(t){if(this.total=t,this.total<0)throw new Du}call(t,e){return e.subscribe(new Yu(t,this.total))}}class Yu extends f{constructor(t,e){super(t),this.total=e,this.count=0}_next(t){const e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}function Ju(t,e){const n=arguments.length>=2;return r=>r.pipe(t?Gc((e,n)=>t(e,n,r)):y,Zu(1),n?Bu(e):ju(()=>new Au))}function Xu(){}function th(t,e,n){return function(r){return r.lift(new eh(t,e,n))}}class eh{constructor(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}call(t,e){return e.subscribe(new nh(t,this.nextOrObserver,this.error,this.complete))}}class nh extends f{constructor(t,e,n,s){super(t),this._tapNext=Xu,this._tapError=Xu,this._tapComplete=Xu,this._tapError=n||Xu,this._tapComplete=s||Xu,r(e)?(this._context=this,this._tapNext=e):e&&(this._context=e,this._tapNext=e.next||Xu,this._tapError=e.error||Xu,this._tapComplete=e.complete||Xu)}_next(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}_error(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}_complete(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}class rh{constructor(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}call(t,e){return e.subscribe(new sh(t,this.predicate,this.thisArg,this.source))}}class sh extends f{constructor(t,e,n,r){super(t),this.predicate=e,this.thisArg=n,this.source=r,this.index=0,this.thisArg=n||this}notifyComplete(t){this.destination.next(t),this.destination.complete()}_next(t){let e=!1;try{e=this.predicate.call(this.thisArg,t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e||this.notifyComplete(!1)}_complete(){this.notifyComplete(!0)}}function ih(t,e){return"function"==typeof e?n=>n.pipe(ih((n,r)=>j(t(n,r)).pipe(D((t,s)=>e(n,t,r,s))))):e=>e.lift(new oh(t))}class oh{constructor(t){this.project=t}call(t,e){return e.subscribe(new ah(t,this.project))}}class ah extends V{constructor(t,e){super(t),this.project=e,this.index=0}_next(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(r){return void this.destination.error(r)}this._innerSub(e,t,n)}_innerSub(t,e,n){const r=this.innerSubscription;r&&r.unsubscribe();const s=new T(this,e,n),i=this.destination;i.add(s),this.innerSubscription=P(this,t,void 0,void 0,s),this.innerSubscription!==s&&i.add(this.innerSubscription)}_complete(){const{innerSubscription:t}=this;t&&!t.closed||super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=null}notifyComplete(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&super._complete()}notifyNext(t,e,n,r,s){this.destination.next(e)}}function lh(...t){return Vu()(Bc(...t))}class ch{constructor(t,e,n=!1){this.accumulator=t,this.seed=e,this.hasSeed=n}call(t,e){return e.subscribe(new uh(t,this.accumulator,this.seed,this.hasSeed))}}class uh extends f{constructor(t,e,n,r){super(t),this.accumulator=e,this._seed=n,this.hasSeed=r,this.index=0}get seed(){return this._seed}set seed(t){this.hasSeed=!0,this._seed=t}_next(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}_tryNext(t){const e=this.index++;let n;try{n=this.accumulator(this.seed,t,e)}catch(r){this.destination.error(r)}this.seed=n,this.destination.next(n)}}class hh{constructor(t){this.callback=t}call(t,e){return e.subscribe(new dh(t,this.callback))}}class dh extends f{constructor(t,e){super(t),this.add(new h(e))}}class ph{constructor(t,e){this.id=t,this.url=e}}class fh extends ph{constructor(t,e,n="imperative",r=null){super(t,e),this.navigationTrigger=n,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class gh extends ph{constructor(t,e,n){super(t,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class mh extends ph{constructor(t,e,n){super(t,e),this.reason=n}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class yh extends ph{constructor(t,e,n){super(t,e),this.error=n}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class vh extends ph{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class bh extends ph{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class _h extends ph{constructor(t,e,n,r,s){super(t,e),this.urlAfterRedirects=n,this.state=r,this.shouldActivate=s}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class wh extends ph{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Ch extends ph{constructor(t,e,n,r){super(t,e),this.urlAfterRedirects=n,this.state=r}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Sh{constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Eh{constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class xh{constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Th{constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Ah{constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Oh{constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class kh{constructor(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let Rh=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=le({type:t,selectors:[["ng-component"]],decls:1,vars:0,template:function(t,e){1&t&&Ji(0,"router-outlet")},directives:function(){return[Np]},encapsulation:2}),t})();class Ih{constructor(t){this.params=t||{}}has(t){return Object.prototype.hasOwnProperty.call(this.params,t)}get(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e[0]:e}return null}getAll(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Nh(t){return new Ih(t)}function Ph(t){const e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function Vh(t,e,n){const r=n.path.split("/");if(r.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||r.lengthe.indexOf(t)>-1):t===e}function $h(t){return Array.prototype.concat.apply([],t)}function Bh(t){return t.length>0?t[t.length-1]:null}function zh(t,e){for(const n in t)t.hasOwnProperty(n)&&e(t[n],n)}function Gh(t){return eo(t)?t:to(t)?j(Promise.resolve(t)):Bc(t)}function qh(t,e,n){return n?function(t,e){return Fh(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!Qh(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(const r in n.children){if(!e.children[r])return!1;if(!t(e.children[r],n.children[r]))return!1}return!0}(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(n=>Hh(t[n],e[n]))}(t.queryParams,e.queryParams)&&function t(e,n){return function e(n,r,s){if(n.segments.length>s.length)return!!Qh(n.segments.slice(0,s.length),s)&&!r.hasChildren();if(n.segments.length===s.length){if(!Qh(n.segments,s))return!1;for(const e in r.children){if(!n.children[e])return!1;if(!t(n.children[e],r.children[e]))return!1}return!0}{const t=s.slice(0,n.segments.length),i=s.slice(n.segments.length);return!!Qh(n.segments,t)&&!!n.children.primary&&e(n.children.primary,r,i)}}(e,n,n.segments)}(t.root,e.root)}class Kh{constructor(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Nh(this.queryParams)),this._queryParamMap}toString(){return td.serialize(this)}}class Wh{constructor(t,e){this.segments=t,this.children=e,this.parent=null,zh(e,(t,e)=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return ed(this)}}class Zh{constructor(t,e){this.path=t,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=Nh(this.parameters)),this._parameterMap}toString(){return ad(this)}}function Qh(t,e){return t.length===e.length&&t.every((t,n)=>t.path===e[n].path)}function Yh(t,e){let n=[];return zh(t.children,(t,r)=>{"primary"===r&&(n=n.concat(e(t,r)))}),zh(t.children,(t,r)=>{"primary"!==r&&(n=n.concat(e(t,r)))}),n}class Jh{}class Xh{parse(t){const e=new dd(t);return new Kh(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(t){return`${"/"+function t(e,n){if(!e.hasChildren())return ed(e);if(n){const n=e.children.primary?t(e.children.primary,!1):"",r=[];return zh(e.children,(e,n)=>{"primary"!==n&&r.push(`${n}:${t(e,!1)}`)}),r.length>0?`${n}(${r.join("//")})`:n}{const n=Yh(e,(n,r)=>"primary"===r?[t(e.children.primary,!1)]:[`${r}:${t(n,!1)}`]);return`${ed(e)}/(${n.join("//")})`}}(t.root,!0)}${function(t){const e=Object.keys(t).map(e=>{const n=t[e];return Array.isArray(n)?n.map(t=>`${rd(e)}=${rd(t)}`).join("&"):`${rd(e)}=${rd(n)}`});return e.length?"?"+e.join("&"):""}(t.queryParams)}${"string"==typeof t.fragment?"#"+encodeURI(t.fragment):""}`}}const td=new Xh;function ed(t){return t.segments.map(t=>ad(t)).join("/")}function nd(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function rd(t){return nd(t).replace(/%3B/gi,";")}function sd(t){return nd(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function id(t){return decodeURIComponent(t)}function od(t){return id(t.replace(/\+/g,"%20"))}function ad(t){return`${sd(t.path)}${e=t.parameters,Object.keys(e).map(t=>`;${sd(t)}=${sd(e[t])}`).join("")}`;var e}const ld=/^[^\/()?;=#]+/;function cd(t){const e=t.match(ld);return e?e[0]:""}const ud=/^[^=?&#]+/,hd=/^[^?&#]+/;class dd{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Wh([],{}):new Wh([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new Wh(t,e)),n}parseSegment(){const t=cd(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(t),new Zh(id(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const e=cd(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=cd(this.remaining);t&&(n=t,this.capture(n))}t[id(e)]=id(n)}parseQueryParam(t){const e=function(t){const e=t.match(ud);return e?e[0]:""}(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=function(t){const e=t.match(hd);return e?e[0]:""}(this.remaining);t&&(n=t,this.capture(n))}const r=od(e),s=od(n);if(t.hasOwnProperty(r)){let e=t[r];Array.isArray(e)||(e=[e],t[r]=e),e.push(s)}else t[r]=s}parseParens(t){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=cd(this.remaining),r=this.remaining[n.length];if("/"!==r&&")"!==r&&";"!==r)throw new Error(`Cannot parse url '${this.url}'`);let s=void 0;n.indexOf(":")>-1?(s=n.substr(0,n.indexOf(":")),this.capture(s),this.capture(":")):t&&(s="primary");const i=this.parseChildren();e[s]=1===Object.keys(i).length?i.primary:new Wh([],i),this.consumeOptional("//")}return e}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new Error(`Expected "${t}".`)}}class pd{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}children(t){const e=fd(t,this._root);return e?e.children.map(t=>t.value):[]}firstChild(t){const e=fd(t,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(t){const e=gd(t,this._root);return e.length<2?[]:e[e.length-2].children.map(t=>t.value).filter(e=>e!==t)}pathFromRoot(t){return gd(t,this._root).map(t=>t.value)}}function fd(t,e){if(t===e.value)return e;for(const n of e.children){const e=fd(t,n);if(e)return e}return null}function gd(t,e){if(t===e.value)return[e];for(const n of e.children){const r=gd(t,n);if(r.length)return r.unshift(e),r}return[]}class md{constructor(t,e){this.value=t,this.children=e}toString(){return`TreeNode(${this.value})`}}function yd(t){const e={};return t&&t.children.forEach(t=>e[t.value.outlet]=t),e}class vd extends pd{constructor(t,e){super(t),this.snapshot=e,Ed(this,t)}toString(){return this.snapshot.toString()}}function bd(t,e){const n=function(t,e){const n=new Cd([],{},{},"",{},"primary",e,null,t.root,-1,{});return new Sd("",new md(n,[]))}(t,e),r=new Tu([new Zh("",{})]),s=new Tu({}),i=new Tu({}),o=new Tu({}),a=new Tu(""),l=new _d(r,s,o,a,i,"primary",e,n.root);return l.snapshot=n.root,new vd(new md(l,[]),n)}class _d{constructor(t,e,n,r,s,i,o,a){this.url=t,this.params=e,this.queryParams=n,this.fragment=r,this.data=s,this.outlet=i,this.component=o,this._futureSnapshot=a}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(D(t=>Nh(t)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(D(t=>Nh(t)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function wd(t,e="emptyOnly"){const n=t.pathFromRoot;let r=0;if("always"!==e)for(r=n.length-1;r>=1;){const t=n[r],e=n[r-1];if(t.routeConfig&&""===t.routeConfig.path)r--;else{if(e.component)break;r--}}return function(t){return t.reduce((t,e)=>({params:Object.assign(Object.assign({},t.params),e.params),data:Object.assign(Object.assign({},t.data),e.data),resolve:Object.assign(Object.assign({},t.resolve),e._resolvedData)}),{params:{},data:{},resolve:{}})}(n.slice(r))}class Cd{constructor(t,e,n,r,s,i,o,a,l,c,u){this.url=t,this.params=e,this.queryParams=n,this.fragment=r,this.data=s,this.outlet=i,this.component=o,this.routeConfig=a,this._urlSegment=l,this._lastPathIndex=c,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=Nh(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Nh(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(t=>t.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Sd extends pd{constructor(t,e){super(e),this.url=t,Ed(this,e)}toString(){return xd(this._root)}}function Ed(t,e){e.value._routerState=t,e.children.forEach(e=>Ed(t,e))}function xd(t){const e=t.children.length>0?` { ${t.children.map(xd).join(", ")} } `:"";return`${t.value}${e}`}function Td(t){if(t.snapshot){const e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,Fh(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),Fh(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(let n=0;nFh(t.parameters,r[e].parameters))&&!(!t.parent!=!e.parent)&&(!t.parent||Ad(t.parent,e.parent))}function Od(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function kd(t,e,n,r,s){let i={};return r&&zh(r,(t,e)=>{i[e]=Array.isArray(t)?t.map(t=>""+t):""+t}),new Kh(n.root===t?e:function t(e,n,r){const s={};return zh(e.children,(e,i)=>{s[i]=e===n?r:t(e,n,r)}),new Wh(e.segments,s)}(n.root,t,e),i,s)}class Rd{constructor(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&Od(n[0]))throw new Error("Root segment cannot have matrix parameters");const r=n.find(t=>"object"==typeof t&&null!=t&&t.outlets);if(r&&r!==Bh(n))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Id{constructor(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}function Nd(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets.primary:""+t}function Pd(t,e,n){if(t||(t=new Wh([],{})),0===t.segments.length&&t.hasChildren())return Vd(t,e,n);const r=function(t,e,n){let r=0,s=e;const i={match:!1,pathIndex:0,commandIndex:0};for(;s=n.length)return i;const e=t.segments[s],o=Nd(n[r]),a=r0&&void 0===o)break;if(o&&a&&"object"==typeof a&&void 0===a.outlets){if(!Ud(o,a,e))return i;r+=2}else{if(!Ud(o,{},e))return i;r++}s++}return{match:!0,pathIndex:s,commandIndex:r}}(t,e,n),s=n.slice(r.commandIndex);if(r.match&&r.pathIndex{null!==n&&(s[r]=Pd(t.children[r],e,n))}),zh(t.children,(t,e)=>{void 0===r[e]&&(s[e]=t)}),new Wh(t.segments,s)}}function Dd(t,e,n){const r=t.segments.slice(0,e);let s=0;for(;s{null!==t&&(e[n]=Dd(new Wh([],{}),0,t))}),e}function Ld(t){const e={};return zh(t,(t,n)=>e[n]=""+t),e}function Ud(t,e,n){return t==n.path&&Fh(e,n.parameters)}class jd{constructor(t,e,n,r){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=r}activate(t){const e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),Td(this.futureState.root),this.activateChildRoutes(e,n,t)}deactivateChildRoutes(t,e,n){const r=yd(e);t.children.forEach(t=>{const e=t.value.outlet;this.deactivateRoutes(t,r[e],n),delete r[e]}),zh(r,(t,e)=>{this.deactivateRouteAndItsChildren(t,n)})}deactivateRoutes(t,e,n){const r=t.value,s=e?e.value:null;if(r===s)if(r.component){const s=n.getContext(r.outlet);s&&this.deactivateChildRoutes(t,e,s.children)}else this.deactivateChildRoutes(t,e,n);else s&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)}detachAndStoreRouteSubtree(t,e){const n=e.getContext(t.value.outlet);if(n&&n.outlet){const e=n.outlet.detach(),r=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:e,route:t,contexts:r})}}deactivateRouteAndOutlet(t,e){const n=e.getContext(t.value.outlet);if(n){const r=yd(t),s=t.value.component?n.children:e;zh(r,(t,e)=>this.deactivateRouteAndItsChildren(t,s)),n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated())}}activateChildRoutes(t,e,n){const r=yd(e);t.children.forEach(t=>{this.activateRoutes(t,r[t.value.outlet],n),this.forwardEvent(new Oh(t.value.snapshot))}),t.children.length&&this.forwardEvent(new Th(t.value.snapshot))}activateRoutes(t,e,n){const r=t.value,s=e?e.value:null;if(Td(r),r===s)if(r.component){const s=n.getOrCreateContext(r.outlet);this.activateChildRoutes(t,e,s.children)}else this.activateChildRoutes(t,e,n);else if(r.component){const e=n.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const t=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),e.children.onOutletReAttached(t.contexts),e.attachRef=t.componentRef,e.route=t.route.value,e.outlet&&e.outlet.attach(t.componentRef,t.route.value),Fd(t.route)}else{const n=function(t){for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig;if(t&&t.component)return null}return null}(r.snapshot),s=n?n.module.componentFactoryResolver:null;e.attachRef=null,e.route=r,e.resolver=s,e.outlet&&e.outlet.activateWith(r,s),this.activateChildRoutes(t,null,e.children)}}else this.activateChildRoutes(t,null,n)}}function Fd(t){Td(t.value),t.children.forEach(Fd)}function Hd(t){return"function"==typeof t}function $d(t){return t instanceof Kh}class Bd{constructor(t){this.segmentGroup=t||null}}class zd{constructor(t){this.urlTree=t}}function Gd(t){return new v(e=>e.error(new Bd(t)))}function qd(t){return new v(e=>e.error(new zd(t)))}function Kd(t){return new v(e=>e.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${t}'`)))}class Wd{constructor(t,e,n,r,s){this.configLoader=e,this.urlSerializer=n,this.urlTree=r,this.config=s,this.allowRedirects=!0,this.ngModule=t.get(Zt)}apply(){return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,"primary").pipe(D(t=>this.createUrlTree(t,this.urlTree.queryParams,this.urlTree.fragment))).pipe(qu(t=>{if(t instanceof zd)return this.allowRedirects=!1,this.match(t.urlTree);if(t instanceof Bd)throw this.noMatchError(t);throw t}))}match(t){return this.expandSegmentGroup(this.ngModule,this.config,t.root,"primary").pipe(D(e=>this.createUrlTree(e,t.queryParams,t.fragment))).pipe(qu(t=>{if(t instanceof Bd)throw this.noMatchError(t);throw t}))}noMatchError(t){return new Error(`Cannot match any routes. URL Segment: '${t.segmentGroup}'`)}createUrlTree(t,e,n){const r=t.segments.length>0?new Wh([],{primary:t}):t;return new Kh(r,e,n)}expandSegmentGroup(t,e,n,r){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(D(t=>new Wh([],t))):this.expandSegment(t,n,e,n.segments,r,!0)}expandChildren(t,e,n){return function(t,e){if(0===Object.keys(t).length)return Bc({});const n=[],r=[],s={};return zh(t,(t,i)=>{const o=e(i,t).pipe(D(t=>s[i]=t));"primary"===i?n.push(o):r.push(o)}),Bc.apply(null,n.concat(r)).pipe(Vu(),function(t,e){const n=arguments.length>=2;return r=>r.pipe(t?Gc((e,n)=>t(e,n,r)):y,Mu(1),n?Bu(e):ju(()=>new Au))}(),D(()=>s))}(n.children,(n,r)=>this.expandSegmentGroup(t,e,r,n))}expandSegment(t,e,n,r,s,i){return Bc(...n).pipe(D(o=>this.expandSegmentAgainstRoute(t,e,n,o,r,s,i).pipe(qu(t=>{if(t instanceof Bd)return Bc(null);throw t}))),Vu(),Ju(t=>!!t),qu((t,n)=>{if(t instanceof Au||"EmptyError"===t.name){if(this.noLeftoversInUrl(e,r,s))return Bc(new Wh([],{}));throw new Bd(e)}throw t}))}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}expandSegmentAgainstRoute(t,e,n,r,s,i,o){return Jd(r)!==i?Gd(e):void 0===r.redirectTo?this.matchSegmentAgainstRoute(t,e,r,s):o&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i):Gd(e)}expandSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i){return"**"===r.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,r,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i)}expandWildCardWithParamsAgainstRouteUsingRedirect(t,e,n,r){const s=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?qd(s):this.lineralizeSegments(n,s).pipe(F(n=>{const s=new Wh(n,{});return this.expandSegment(t,s,e,n,r,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,r,s,i){const{matched:o,consumedSegments:a,lastChild:l,positionalParamSegments:c}=Zd(e,r,s);if(!o)return Gd(e);const u=this.applyRedirectCommands(a,r.redirectTo,c);return r.redirectTo.startsWith("/")?qd(u):this.lineralizeSegments(r,u).pipe(F(r=>this.expandSegment(t,e,n,r.concat(s.slice(l)),i,!1)))}matchSegmentAgainstRoute(t,e,n,r){if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(D(t=>(n._loadedConfig=t,new Wh(r,{})))):Bc(new Wh(r,{}));const{matched:s,consumedSegments:i,lastChild:o}=Zd(e,n,r);if(!s)return Gd(e);const a=r.slice(o);return this.getChildConfig(t,n,r).pipe(F(t=>{const n=t.module,r=t.routes,{segmentGroup:s,slicedSegments:o}=function(t,e,n,r){return n.length>0&&function(t,e,n){return n.some(n=>Yd(t,e,n)&&"primary"!==Jd(n))}(t,n,r)?{segmentGroup:Qd(new Wh(e,function(t,e){const n={};n.primary=e;for(const r of t)""===r.path&&"primary"!==Jd(r)&&(n[Jd(r)]=new Wh([],{}));return n}(r,new Wh(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return n.some(n=>Yd(t,e,n))}(t,n,r)?{segmentGroup:Qd(new Wh(t.segments,function(t,e,n,r){const s={};for(const i of n)Yd(t,e,i)&&!r[Jd(i)]&&(s[Jd(i)]=new Wh([],{}));return Object.assign(Object.assign({},r),s)}(t,n,r,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,i,a,r);return 0===o.length&&s.hasChildren()?this.expandChildren(n,r,s).pipe(D(t=>new Wh(i,t))):0===r.length&&0===o.length?Bc(new Wh(i,{})):this.expandSegment(n,s,r,o,"primary",!0).pipe(D(t=>new Wh(i.concat(t.segments),t.children)))}))}getChildConfig(t,e,n){return e.children?Bc(new Dh(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Bc(e._loadedConfig):this.runCanLoadGuards(t.injector,e,n).pipe(F(n=>n?this.configLoader.load(t.injector,e).pipe(D(t=>(e._loadedConfig=t,t))):function(t){return new v(e=>e.error(Ph(`Cannot load children because the guard of the route "path: '${t.path}'" returned false`)))}(e))):Bc(new Dh([],t))}runCanLoadGuards(t,e,n){const r=e.canLoad;return r&&0!==r.length?j(r).pipe(D(r=>{const s=t.get(r);let i;if(function(t){return t&&Hd(t.canLoad)}(s))i=s.canLoad(e,n);else{if(!Hd(s))throw new Error("Invalid CanLoad guard");i=s(e,n)}return Gh(i)})).pipe(Vu(),th(t=>{if(!$d(t))return;const e=Ph(`Redirecting to "${this.urlSerializer.serialize(t)}"`);throw e.url=t,e}),(s=t=>!0===t,t=>t.lift(new rh(s,void 0,t)))):Bc(!0);var s}lineralizeSegments(t,e){let n=[],r=e.root;for(;;){if(n=n.concat(r.segments),0===r.numberOfChildren)return Bc(n);if(r.numberOfChildren>1||!r.children.primary)return Kd(t.redirectTo);r=r.children.primary}}applyRedirectCommands(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}applyRedirectCreatreUrlTree(t,e,n,r){const s=this.createSegmentGroup(t,e.root,n,r);return new Kh(s,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(t,e){const n={};return zh(t,(t,r)=>{if("string"==typeof t&&t.startsWith(":")){const s=t.substring(1);n[r]=e[s]}else n[r]=t}),n}createSegmentGroup(t,e,n,r){const s=this.createSegments(t,e.segments,n,r);let i={};return zh(e.children,(e,s)=>{i[s]=this.createSegmentGroup(t,e,n,r)}),new Wh(s,i)}createSegments(t,e,n,r){return e.map(e=>e.path.startsWith(":")?this.findPosParam(t,e,r):this.findOrReturn(e,n))}findPosParam(t,e,n){const r=n[e.path.substring(1)];if(!r)throw new Error(`Cannot redirect to '${t}'. Cannot find '${e.path}'.`);return r}findOrReturn(t,e){let n=0;for(const r of e){if(r.path===t.path)return e.splice(n),r;n++}return t}}function Zd(t,e,n){if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};const r=(e.matcher||Vh)(n,t,e);return r?{matched:!0,consumedSegments:r.consumed,lastChild:r.consumed.length,positionalParamSegments:r.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function Qd(t){if(1===t.numberOfChildren&&t.children.primary){const e=t.children.primary;return new Wh(t.segments.concat(e.segments),e.children)}return t}function Yd(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function Jd(t){return t.outlet||"primary"}class Xd{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class tp{constructor(t,e){this.component=t,this.route=e}}function ep(t,e,n){const r=t._root;return function t(e,n,r,s,i={canDeactivateChecks:[],canActivateChecks:[]}){const o=yd(n);return e.children.forEach(e=>{!function(e,n,r,s,i={canDeactivateChecks:[],canActivateChecks:[]}){const o=e.value,a=n?n.value:null,l=r?r.getContext(e.value.outlet):null;if(a&&o.routeConfig===a.routeConfig){const c=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!Qh(t.url,e.url);case"pathParamsOrQueryParamsChange":return!Qh(t.url,e.url)||!Fh(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ad(t,e)||!Fh(t.queryParams,e.queryParams);case"paramsChange":default:return!Ad(t,e)}}(a,o,o.routeConfig.runGuardsAndResolvers);c?i.canActivateChecks.push(new Xd(s)):(o.data=a.data,o._resolvedData=a._resolvedData),t(e,n,o.component?l?l.children:null:r,s,i),c&&i.canDeactivateChecks.push(new tp(l&&l.outlet&&l.outlet.component||null,a))}else a&&rp(n,l,i),i.canActivateChecks.push(new Xd(s)),t(e,null,o.component?l?l.children:null:r,s,i)}(e,o[e.value.outlet],r,s.concat([e.value]),i),delete o[e.value.outlet]}),zh(o,(t,e)=>rp(t,r.getContext(e),i)),i}(r,e?e._root:null,n,[r.value])}function np(t,e,n){const r=function(t){if(!t)return null;for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig}return null}(e);return(r?r.module.injector:n).get(t)}function rp(t,e,n){const r=yd(t),s=t.value;zh(r,(t,r)=>{rp(t,s.component?e?e.children.getContext(r):null:e,n)}),n.canDeactivateChecks.push(new tp(s.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,s))}const sp=Symbol("INITIAL_VALUE");function ip(){return ih(t=>function(...t){let e=null,n=null;return x(t[t.length-1])&&(n=t.pop()),"function"==typeof t[t.length-1]&&(e=t.pop()),1===t.length&&l(t[0])&&(t=t[0]),z(t,n).lift(new ku(e))}(...t.map(t=>t.pipe(Zu(1),function(...t){const e=t[t.length-1];return x(e)?(t.pop(),n=>lh(t,n,e)):e=>lh(t,e)}(sp)))).pipe(function(t,e){let n=!1;return arguments.length>=2&&(n=!0),function(r){return r.lift(new ch(t,e,n))}}((t,e)=>{let n=!1;return e.reduce((t,r,s)=>{if(t!==sp)return t;if(r===sp&&(n=!0),!n){if(!1===r)return r;if(s===e.length-1||$d(r))return r}return t},t)},sp),Gc(t=>t!==sp),D(t=>$d(t)?t:!0===t),Zu(1)))}function op(t,e){return null!==t&&e&&e(new Ah(t)),Bc(!0)}function ap(t,e){return null!==t&&e&&e(new xh(t)),Bc(!0)}function lp(t,e,n){const r=e.routeConfig?e.routeConfig.canActivate:null;return r&&0!==r.length?Bc(r.map(r=>Pu(()=>{const s=np(r,e,n);let i;if(function(t){return t&&Hd(t.canActivate)}(s))i=Gh(s.canActivate(e,t));else{if(!Hd(s))throw new Error("Invalid CanActivate guard");i=Gh(s(e,t))}return i.pipe(Ju())}))).pipe(ip()):Bc(!0)}function cp(t,e,n){const r=e[e.length-1],s=e.slice(0,e.length-1).reverse().map(t=>function(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)).filter(t=>null!==t).map(e=>Pu(()=>Bc(e.guards.map(s=>{const i=np(s,e.node,n);let o;if(function(t){return t&&Hd(t.canActivateChild)}(i))o=Gh(i.canActivateChild(r,t));else{if(!Hd(i))throw new Error("Invalid CanActivateChild guard");o=Gh(i(r,t))}return o.pipe(Ju())})).pipe(ip())));return Bc(s).pipe(ip())}class up{}class hp{constructor(t,e,n,r,s,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=r,this.paramsInheritanceStrategy=s,this.relativeLinkResolution=i}recognize(){try{const t=fp(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,"primary"),n=new Cd([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},"primary",this.rootComponentType,null,this.urlTree.root,-1,{}),r=new md(n,e),s=new Sd(this.url,r);return this.inheritParamsAndData(s._root),Bc(s)}catch(t){return new v(e=>e.error(t))}}inheritParamsAndData(t){const e=t.value,n=wd(e,this.paramsInheritanceStrategy);e.params=Object.freeze(n.params),e.data=Object.freeze(n.data),t.children.forEach(t=>this.inheritParamsAndData(t))}processSegmentGroup(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}processChildren(t,e){const n=Yh(e,(e,n)=>this.processSegmentGroup(t,e,n));return function(t){const e={};t.forEach(t=>{const n=e[t.value.outlet];if(n){const e=n.url.map(t=>t.toString()).join("/"),r=t.value.url.map(t=>t.toString()).join("/");throw new Error(`Two segments cannot have the same outlet name: '${e}' and '${r}'.`)}e[t.value.outlet]=t.value})}(n),n.sort((t,e)=>"primary"===t.value.outlet?-1:"primary"===e.value.outlet?1:t.value.outlet.localeCompare(e.value.outlet)),n}processSegment(t,e,n,r){for(const i of t)try{return this.processSegmentAgainstRoute(i,e,n,r)}catch(s){if(!(s instanceof up))throw s}if(this.noLeftoversInUrl(e,n,r))return[];throw new up}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}processSegmentAgainstRoute(t,e,n,r){if(t.redirectTo)throw new up;if((t.outlet||"primary")!==r)throw new up;let s,i=[],o=[];if("**"===t.path){const i=n.length>0?Bh(n).parameters:{};s=new Cd(n,i,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,yp(t),r,t.component,t,dp(e),pp(e)+n.length,vp(t))}else{const a=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new up;return{consumedSegments:[],lastChild:0,parameters:{}}}const r=(e.matcher||Vh)(n,t,e);if(!r)throw new up;const s={};zh(r.posParams,(t,e)=>{s[e]=t.path});const i=r.consumed.length>0?Object.assign(Object.assign({},s),r.consumed[r.consumed.length-1].parameters):s;return{consumedSegments:r.consumed,lastChild:r.consumed.length,parameters:i}}(e,t,n);i=a.consumedSegments,o=n.slice(a.lastChild),s=new Cd(i,a.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,yp(t),r,t.component,t,dp(e),pp(e)+i.length,vp(t))}const a=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),{segmentGroup:l,slicedSegments:c}=fp(e,i,o,a,this.relativeLinkResolution);if(0===c.length&&l.hasChildren()){const t=this.processChildren(a,l);return[new md(s,t)]}if(0===a.length&&0===c.length)return[new md(s,[])];const u=this.processSegment(a,l,c,"primary");return[new md(s,u)]}}function dp(t){let e=t;for(;e._sourceSegment;)e=e._sourceSegment;return e}function pp(t){let e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;for(;e._sourceSegment;)e=e._sourceSegment,n+=e._segmentIndexShift?e._segmentIndexShift:0;return n-1}function fp(t,e,n,r,s){if(n.length>0&&function(t,e,n){return n.some(n=>gp(t,e,n)&&"primary"!==mp(n))}(t,n,r)){const s=new Wh(e,function(t,e,n,r){const s={};s.primary=r,r._sourceSegment=t,r._segmentIndexShift=e.length;for(const i of n)if(""===i.path&&"primary"!==mp(i)){const n=new Wh([],{});n._sourceSegment=t,n._segmentIndexShift=e.length,s[mp(i)]=n}return s}(t,e,r,new Wh(n,t.children)));return s._sourceSegment=t,s._segmentIndexShift=e.length,{segmentGroup:s,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some(n=>gp(t,e,n))}(t,n,r)){const i=new Wh(t.segments,function(t,e,n,r,s,i){const o={};for(const a of r)if(gp(t,n,a)&&!s[mp(a)]){const n=new Wh([],{});n._sourceSegment=t,n._segmentIndexShift="legacy"===i?t.segments.length:e.length,o[mp(a)]=n}return Object.assign(Object.assign({},s),o)}(t,e,n,r,t.children,s));return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}const i=new Wh(t.segments,t.children);return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}function gp(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function mp(t){return t.outlet||"primary"}function yp(t){return t.data||{}}function vp(t){return t.resolve||{}}function bp(t){return function(e){return e.pipe(ih(e=>{const n=t(e);return n?j(n).pipe(D(()=>e)):j([e])}))}}class _p{shouldDetach(t){return!1}store(t,e){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,e){return t.routeConfig===e.routeConfig}}const wp=new Dt("ROUTES");class Cp{constructor(t,e,n,r){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=r}load(t,e){return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(D(n=>{this.onLoadEndListener&&this.onLoadEndListener(e);const r=n.create(t);return new Dh($h(r.injector.get(wp)).map(jh),r)}))}loadModuleFactory(t){return"string"==typeof t?j(this.loader.load(t)):Gh(t()).pipe(F(t=>t instanceof Qt?Bc(t):j(this.compiler.compileModuleAsync(t))))}}class Sp{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new Ep,this.attachRef=null}}class Ep{constructor(){this.contexts=new Map}onChildOutletCreated(t,e){const n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)}onChildOutletDestroyed(t){const e=this.getContext(t);e&&(e.outlet=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let e=this.getContext(t);return e||(e=new Sp,this.contexts.set(t,e)),e}getContext(t){return this.contexts.get(t)||null}}class xp{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,e){return t}}function Tp(t){throw t}function Ap(t,e,n){return e.parse("/")}function Op(t,e){return Bc(null)}let kp=(()=>{class t{constructor(t,e,n,r,s,i,o,a){this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=r,this.config=a,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new S,this.errorHandler=Tp,this.malformedUriErrorHandler=Ap,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:Op,afterPreactivation:Op},this.urlHandlingStrategy=new xp,this.routeReuseStrategy=new _p,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=s.get(Zt),this.console=s.get(Ga);const l=s.get(sl);this.isNgZoneEnabled=l instanceof sl,this.resetConfig(a),this.currentUrlTree=new Kh(new Wh([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Cp(i,o,t=>this.triggerEvent(new Sh(t)),t=>this.triggerEvent(new Eh(t))),this.routerState=bd(this.currentUrlTree,this.rootComponentType),this.transitions=new Tu({id:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}setupNavigations(t){const e=this.events;return t.pipe(Gc(t=>0!==t.id),D(t=>Object.assign(Object.assign({},t),{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl)})),ih(t=>{let n=!1,r=!1;return Bc(t).pipe(th(t=>{this.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign(Object.assign({},this.lastSuccessfulNavigation),{previousNavigation:null}):null}}),ih(t=>{const n=!this.navigated||t.extractedUrl.toString()!==this.browserUrlTree.toString();if(("reload"===this.onSameUrlNavigation||n)&&this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Bc(t).pipe(ih(t=>{const n=this.transitions.getValue();return e.next(new fh(t.id,this.serializeUrl(t.extractedUrl),t.source,t.restoredState)),n!==this.transitions.getValue()?Iu:[t]}),ih(t=>Promise.resolve(t)),(r=this.ngModule.injector,s=this.configLoader,i=this.urlSerializer,o=this.config,function(t){return t.pipe(ih(t=>function(t,e,n,r,s){return new Wd(t,e,n,r,s).apply()}(r,s,i,t.extractedUrl,o).pipe(D(e=>Object.assign(Object.assign({},t),{urlAfterRedirects:e})))))}),th(t=>{this.currentNavigation=Object.assign(Object.assign({},this.currentNavigation),{finalUrl:t.urlAfterRedirects})}),function(t,e,n,r,s){return function(i){return i.pipe(F(i=>function(t,e,n,r,s="emptyOnly",i="legacy"){return new hp(t,e,n,r,s,i).recognize()}(t,e,i.urlAfterRedirects,n(i.urlAfterRedirects),r,s).pipe(D(t=>Object.assign(Object.assign({},i),{targetSnapshot:t})))))}}(this.rootComponentType,this.config,t=>this.serializeUrl(t),this.paramsInheritanceStrategy,this.relativeLinkResolution),th(t=>{"eager"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),th(t=>{const n=new vh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.next(n)}));var r,s,i,o;if(n&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:n,extractedUrl:r,source:s,restoredState:i,extras:o}=t,a=new fh(n,this.serializeUrl(r),s,i);e.next(a);const l=bd(r,this.rootComponentType).snapshot;return Bc(Object.assign(Object.assign({},t),{targetSnapshot:l,urlAfterRedirects:r,extras:Object.assign(Object.assign({},o),{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=t.rawUrl,this.browserUrlTree=t.urlAfterRedirects,t.resolve(null),Iu}),bp(t=>{const{targetSnapshot:e,id:n,extractedUrl:r,rawUrl:s,extras:{skipLocationChange:i,replaceUrl:o}}=t;return this.hooks.beforePreactivation(e,{navigationId:n,appliedUrlTree:r,rawUrlTree:s,skipLocationChange:!!i,replaceUrl:!!o})}),th(t=>{const e=new bh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),D(t=>Object.assign(Object.assign({},t),{guards:ep(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),function(t,e){return function(n){return n.pipe(F(n=>{const{targetSnapshot:r,currentSnapshot:s,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return 0===o.length&&0===i.length?Bc(Object.assign(Object.assign({},n),{guardsResult:!0})):function(t,e,n,r){return j(t).pipe(F(t=>function(t,e,n,r,s){const i=e&&e.routeConfig?e.routeConfig.canDeactivate:null;return i&&0!==i.length?Bc(i.map(i=>{const o=np(i,e,s);let a;if(function(t){return t&&Hd(t.canDeactivate)}(o))a=Gh(o.canDeactivate(t,e,n,r));else{if(!Hd(o))throw new Error("Invalid CanDeactivate guard");a=Gh(o(t,e,n,r))}return a.pipe(Ju())})).pipe(ip()):Bc(!0)}(t.component,t.route,n,e,r)),Ju(t=>!0!==t,!0))}(o,r,s,t).pipe(F(n=>n&&"boolean"==typeof n?function(t,e,n,r){return j(e).pipe(zc(e=>j([ap(e.route.parent,r),op(e.route,r),cp(t,e.path,n),lp(t,e.route,n)]).pipe(Vu(),Ju(t=>!0!==t,!0))),Ju(t=>!0!==t,!0))}(r,i,t,e):Bc(n)),D(t=>Object.assign(Object.assign({},n),{guardsResult:t})))}))}}(this.ngModule.injector,t=>this.triggerEvent(t)),th(t=>{if($d(t.guardsResult)){const e=Ph(`Redirecting to "${this.serializeUrl(t.guardsResult)}"`);throw e.url=t.guardsResult,e}}),th(t=>{const e=new _h(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.triggerEvent(e)}),Gc(t=>{if(!t.guardsResult){this.resetUrlToCurrentUrlTree();const n=new mh(t.id,this.serializeUrl(t.extractedUrl),"");return e.next(n),t.resolve(!1),!1}return!0}),bp(t=>{if(t.guards.canActivateChecks.length)return Bc(t).pipe(th(t=>{const e=new wh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),ih(t=>{let n=!1;return Bc(t).pipe((r=this.paramsInheritanceStrategy,s=this.ngModule.injector,function(t){return t.pipe(F(t=>{const{targetSnapshot:e,guards:{canActivateChecks:n}}=t;if(!n.length)return Bc(t);let i=0;return j(n).pipe(zc(t=>function(t,e,n,r){return function(t,e,n,r){const s=Object.keys(t);if(0===s.length)return Bc({});const i={};return j(s).pipe(F(s=>function(t,e,n,r){const s=np(t,e,r);return Gh(s.resolve?s.resolve(e,n):s(e,n))}(t[s],e,n,r).pipe(th(t=>{i[s]=t}))),Mu(1),F(()=>Object.keys(i).length===s.length?Bc(i):Iu))}(t._resolve,t,e,r).pipe(D(e=>(t._resolvedData=e,t.data=Object.assign(Object.assign({},t.data),wd(t,n).resolve),null)))}(t.route,e,r,s)),th(()=>i++),Mu(1),F(e=>i===n.length?Bc(t):Iu))}))}),th({next:()=>n=!0,complete:()=>{if(!n){const n=new mh(t.id,this.serializeUrl(t.extractedUrl),"At least one route resolver didn't emit any value.");e.next(n),t.resolve(!1)}}}));var r,s}),th(t=>{const e=new Ch(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}))}),bp(t=>{const{targetSnapshot:e,id:n,extractedUrl:r,rawUrl:s,extras:{skipLocationChange:i,replaceUrl:o}}=t;return this.hooks.afterPreactivation(e,{navigationId:n,appliedUrlTree:r,rawUrlTree:s,skipLocationChange:!!i,replaceUrl:!!o})}),D(t=>{const e=function(t,e,n){const r=function t(e,n,r){if(r&&e.shouldReuseRoute(n.value,r.value.snapshot)){const s=r.value;s._futureSnapshot=n.value;const i=function(e,n,r){return n.children.map(n=>{for(const s of r.children)if(e.shouldReuseRoute(s.value.snapshot,n.value))return t(e,n,s);return t(e,n)})}(e,n,r);return new md(s,i)}{const r=e.retrieve(n.value);if(r){const t=r.route;return function t(e,n){if(e.value.routeConfig!==n.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(e.children.length!==n.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");n.value._futureSnapshot=e.value;for(let r=0;rt(e,n));return new md(r,i)}}var s}(t,e._root,n?n._root:void 0);return new vd(r,e)}(this.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return Object.assign(Object.assign({},t),{targetRouterState:e})}),th(t=>{this.currentUrlTree=t.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),(i=this.rootContexts,o=this.routeReuseStrategy,a=t=>this.triggerEvent(t),D(t=>(new jd(o,t.targetRouterState,t.currentRouterState,a).activate(i),t))),th({next(){n=!0},complete(){n=!0}}),(s=()=>{if(!n&&!r){this.resetUrlToCurrentUrlTree();const n=new mh(t.id,this.serializeUrl(t.extractedUrl),`Navigation ID ${t.id} is not equal to the current navigation id ${this.navigationId}`);e.next(n),t.resolve(!1)}this.currentNavigation=null},t=>t.lift(new hh(s))),qu(n=>{if(r=!0,(s=n)&&s.ngNavigationCancelingError){const r=$d(n.url);r||(this.navigated=!0,this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));const s=new mh(t.id,this.serializeUrl(t.extractedUrl),n.message);e.next(s),r?setTimeout(()=>{const e=this.urlHandlingStrategy.merge(n.url,this.rawUrlTree);return this.scheduleNavigation(e,"imperative",null,{skipLocationChange:t.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy},{resolve:t.resolve,reject:t.reject,promise:t.promise})},0):t.resolve(!1)}else{this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);const r=new yh(t.id,this.serializeUrl(t.extractedUrl),n);e.next(r);try{t.resolve(this.errorHandler(n))}catch(i){t.reject(i)}}var s;return Iu}));var s,i,o,a}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}getTransition(){const t=this.transitions.value;return t.urlAfterRedirects=this.browserUrlTree,t}setTransition(t){this.transitions.next(Object.assign(Object.assign({},this.getTransition()),t))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{let e=this.parseUrl(t.url);const n="popstate"===t.type?"popstate":"hashchange",r=t.state&&t.state.navigationId?t.state:null;setTimeout(()=>{this.scheduleNavigation(e,n,r,{replaceUrl:!0})},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){Mh(t),this.config=t.map(jh),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)}createUrlTree(t,e={}){const{relativeTo:n,queryParams:r,fragment:s,preserveQueryParams:i,queryParamsHandling:o,preserveFragment:a}=e;or()&&i&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");const l=n||this.routerState.root,c=a?this.currentUrlTree.fragment:s;let u=null;if(o)switch(o){case"merge":u=Object.assign(Object.assign({},this.currentUrlTree.queryParams),r);break;case"preserve":u=this.currentUrlTree.queryParams;break;default:u=r||null}else u=i?this.currentUrlTree.queryParams:r||null;return null!==u&&(u=this.removeEmptyProps(u)),function(t,e,n,r,s){if(0===n.length)return kd(e.root,e.root,e,r,s);const i=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new Rd(!0,0,t);let e=0,n=!1;const r=t.reduce((t,r,s)=>{if("object"==typeof r&&null!=r){if(r.outlets){const e={};return zh(r.outlets,(t,n)=>{e[n]="string"==typeof t?t.split("/"):t}),[...t,{outlets:e}]}if(r.segmentPath)return[...t,r.segmentPath]}return"string"!=typeof r?[...t,r]:0===s?(r.split("/").forEach((r,s)=>{0==s&&"."===r||(0==s&&""===r?n=!0:".."===r?e++:""!=r&&t.push(r))}),t):[...t,r]},[]);return new Rd(n,e,r)}(n);if(i.toRoot())return kd(e.root,new Wh([],{}),e,r,s);const o=function(t,e,n){if(t.isAbsolute)return new Id(e.root,!0,0);if(-1===n.snapshot._lastPathIndex){const t=n.snapshot._urlSegment;return new Id(t,t===e.root,0)}const r=Od(t.commands[0])?0:1;return function(t,e,n){let r=t,s=e,i=n;for(;i>s;){if(i-=s,r=r.parent,!r)throw new Error("Invalid number of '../'");s=r.segments.length}return new Id(r,!1,s-i)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+r,t.numberOfDoubleDots)}(i,e,t),a=o.processChildren?Vd(o.segmentGroup,o.index,i.commands):Pd(o.segmentGroup,o.index,i.commands);return kd(o.segmentGroup,a,e,r,s)}(l,this.currentUrlTree,t,u,c)}navigateByUrl(t,e={skipLocationChange:!1}){or()&&this.isNgZoneEnabled&&!sl.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");const n=$d(t)?t:this.parseUrl(t),r=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(r,"imperative",null,e)}navigate(t,e={skipLocationChange:!1}){return function(t){for(let e=0;e{const r=t[n];return null!=r&&(e[n]=r),e},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.events.next(new gh(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.currentNavigation=null,t.resolve(!0)},t=>{this.console.warn("Unhandled Navigation Error: ")})}scheduleNavigation(t,e,n,r,s){const i=this.getTransition();if(i&&"imperative"!==e&&"imperative"===i.source&&i.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(i&&"hashchange"==e&&"popstate"===i.source&&i.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(i&&"popstate"==e&&"hashchange"===i.source&&i.rawUrl.toString()===t.toString())return Promise.resolve(!0);let o,a,l;s?(o=s.resolve,a=s.reject,l=s.promise):l=new Promise((t,e)=>{o=t,a=e});const c=++this.navigationId;return this.setTransition({id:c,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:r,resolve:o,reject:a,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(t=>Promise.reject(t))}setBrowserUrl(t,e,n,r){const s=this.urlSerializer.serialize(t);r=r||{},this.location.isCurrentPathEqualTo(s)||e?this.location.replaceState(s,"",Object.assign(Object.assign({},r),{navigationId:n})):this.location.go(s,"",Object.assign(Object.assign({},r),{navigationId:n}))}resetStateAndUrl(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}}return t.\u0275fac=function(e){return new(e||t)(Gt(vi),Gt(Jh),Gt(Ep),Gt(Ql),Gt(Pi),Gt(xl),Gt(el),Gt(void 0))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Rp=(()=>{class t{constructor(t,e,n){this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(t=>{t instanceof gh&&this.updateTargetUrlAndHref()})}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){or()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t}ngOnChanges(t){this.updateTargetUrlAndHref()}ngOnDestroy(){this.subscription.unsubscribe()}onClick(t,e,n,r){if(0!==t||e||n||r)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;const s={skipLocationChange:Ip(this.skipLocationChange),replaceUrl:Ip(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,s),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:Ip(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:Ip(this.preserveFragment)})}}return t.\u0275fac=function(e){return new(e||t)(Ki(kp),Ki(_d),Ki(Gl))},t.\u0275dir=fe({type:t,selectors:[["a","routerLink",""],["area","routerLink",""]],hostVars:2,hostBindings:function(t,e){1&t&&no("click",(function(t){return e.onClick(t.button,t.ctrlKey,t.metaKey,t.shiftKey)})),2&t&&(wo("href",e.href,Ir),zi("target",e.target))},inputs:{routerLink:"routerLink",preserveQueryParams:"preserveQueryParams",target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",state:"state"},features:[ko]}),t})();function Ip(t){return""===t||!!t}let Np=(()=>{class t{constructor(t,e,n,r,s){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=s,this.activated=null,this._activatedRoute=null,this.activateEvents=new Ma,this.deactivateEvents=new Ma,this.name=r||"primary",t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,t}attach(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;const n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),r=this.parentContexts.getOrCreateContext(this.name).children,s=new Pp(t,r,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,s),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ep),Ki(ga),Ki($o),("name",function(t,e){const n=t.attrs;if(n){const t=n.length;let e=0;for(;e{class t{constructor(t,e,n,r,s){this.router=t,this.injector=r,this.preloadingStrategy=s,this.loader=new Cp(e,n,e=>t.triggerEvent(new Sh(e)),e=>t.triggerEvent(new Eh(e)))}setUpPreloading(){this.subscription=this.router.events.pipe(Gc(t=>t instanceof gh),zc(()=>this.preload())).subscribe(()=>{})}preload(){const t=this.injector.get(Zt);return this.processRoutes(t,this.router.config)}ngOnDestroy(){this.subscription.unsubscribe()}processRoutes(t,e){const n=[];for(const r of e)if(r.loadChildren&&!r.canLoad&&r._loadedConfig){const t=r._loadedConfig;n.push(this.processRoutes(t.module,t.routes))}else r.loadChildren&&!r.canLoad?n.push(this.preloadConfig(t,r)):r.children&&n.push(this.processRoutes(t,r.children));return j(n).pipe(B(),D(t=>{}))}preloadConfig(t,e){return this.preloadingStrategy.preload(e,()=>this.loader.load(t.injector,e).pipe(F(t=>(e._loadedConfig=t,this.processRoutes(t.module,t.routes)))))}}return t.\u0275fac=function(e){return new(e||t)(Gt(kp),Gt(xl),Gt(el),Gt(Pi),Gt(Vp))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),Lp=(()=>{class t{constructor(t,e,n={}){this.router=t,this.viewportScroller=e,this.options=n,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},n.scrollPositionRestoration=n.scrollPositionRestoration||"disabled",n.anchorScrolling=n.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof fh?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof gh&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof kh&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,e){this.router.triggerEvent(new kh(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(Gt(kp),Gt(pc),Gt(void 0))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();const Up=new Dt("ROUTER_CONFIGURATION"),jp=new Dt("ROUTER_FORROOT_GUARD"),Fp=[Ql,{provide:Jh,useClass:Xh},{provide:kp,useFactory:function(t,e,n,r,s,i,o,a={},l,c){const u=new kp(null,t,e,n,r,s,i,$h(o));if(l&&(u.urlHandlingStrategy=l),c&&(u.routeReuseStrategy=c),a.errorHandler&&(u.errorHandler=a.errorHandler),a.malformedUriErrorHandler&&(u.malformedUriErrorHandler=a.malformedUriErrorHandler),a.enableTracing){const t=Vl();u.events.subscribe(e=>{t.logGroup("Router Event: "+e.constructor.name),t.log(e.toString()),t.log(e),t.logGroupEnd()})}return a.onSameUrlNavigation&&(u.onSameUrlNavigation=a.onSameUrlNavigation),a.paramsInheritanceStrategy&&(u.paramsInheritanceStrategy=a.paramsInheritanceStrategy),a.urlUpdateStrategy&&(u.urlUpdateStrategy=a.urlUpdateStrategy),a.relativeLinkResolution&&(u.relativeLinkResolution=a.relativeLinkResolution),u},deps:[Jh,Ep,Ql,Pi,xl,el,wp,Up,[class{},new et],[class{},new et]]},Ep,{provide:_d,useFactory:function(t){return t.routerState.root},deps:[kp]},{provide:xl,useClass:Ol},Mp,Dp,class{preload(t,e){return e().pipe(qu(()=>Bc(null)))}},{provide:Up,useValue:{enableTracing:!1}}];function Hp(){return new vl("Router",kp)}let $p=(()=>{class t{constructor(t,e){}static forRoot(e,n){return{ngModule:t,providers:[Fp,qp(e),{provide:jp,useFactory:Gp,deps:[[kp,new et,new rt]]},{provide:Up,useValue:n||{}},{provide:Gl,useFactory:zp,deps:[Ml,[new tt(Kl),new et],Up]},{provide:Lp,useFactory:Bp,deps:[kp,pc,Up]},{provide:Vp,useExisting:n&&n.preloadingStrategy?n.preloadingStrategy:Dp},{provide:vl,multi:!0,useFactory:Hp},[Kp,{provide:La,multi:!0,useFactory:Wp,deps:[Kp]},{provide:Qp,useFactory:Zp,deps:[Kp]},{provide:za,multi:!0,useExisting:Qp}]]}}static forChild(e){return{ngModule:t,providers:[qp(e)]}}}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)(Gt(jp,8),Gt(kp,8))}}),t})();function Bp(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new Lp(t,e,n)}function zp(t,e,n={}){return n.useHash?new Zl(t,e):new Wl(t,e)}function Gp(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function qp(t){return[{provide:Vi,multi:!0,useValue:t},{provide:wp,multi:!0,useValue:t}]}let Kp=(()=>{class t{constructor(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new S}appInitializer(){return this.injector.get(Ul,Promise.resolve(null)).then(()=>{let t=null;const e=new Promise(e=>t=e),n=this.injector.get(kp),r=this.injector.get(Up);if(this.isLegacyDisabled(r)||this.isLegacyEnabled(r))t(!0);else if("disabled"===r.initialNavigation)n.setUpLocationChangeListener(),t(!0);else{if("enabled"!==r.initialNavigation)throw new Error(`Invalid initialNavigation options: '${r.initialNavigation}'`);n.hooks.afterPreactivation=()=>this.initNavigation?Bc(null):(this.initNavigation=!0,t(!0),this.resultOfPreactivationDone),n.initialNavigation()}return e})}bootstrapListener(t){const e=this.injector.get(Up),n=this.injector.get(Mp),r=this.injector.get(Lp),s=this.injector.get(kp),i=this.injector.get(Sl);t===i.components[0]&&(this.isLegacyEnabled(e)?s.initialNavigation():this.isLegacyDisabled(e)&&s.setUpLocationChangeListener(),n.setUpPreloading(),r.init(),s.resetRootComponentType(i.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}isLegacyEnabled(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation}isLegacyDisabled(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation}}return t.\u0275fac=function(e){return new(e||t)(Gt(Pi))},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})();function Wp(t){return t.appInitializer.bind(t)}function Zp(t){return t.bootstrapListener.bind(t)}const Qp=new Dt("Router Initializer");let Yp=(()=>{class t{constructor(){this.messages=[]}add(t){this.messages.push(t)}clear(){this.messages=[]}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),Jp=(()=>{class t{constructor(t,e){this.http=t,this.messageService=e,this.baseURL=".",this.tablesUrl=this.baseURL+"/tables",this.columnsUrl=this.baseURL+"/columns",this.authorizationData="Basic "+btoa("srikanth:123456"),this.httpOptions={headers:new Qc({"Content-Type":"application/json",Authorization:this.authorizationData})},this.httpOptions2={headers:new Qc({responseType:"text",Authorization:this.authorizationData})}}getTables(){return this.http.get(this.tablesUrl,this.httpOptions).pipe(qu(this.handleError("getHeroes")))}getColumns(t,e){return this.http.get(this.baseURL+"/columns?srcTable="+t+"&destTable="+e,this.httpOptions).pipe(qu(this.handleError("getHeroes")))}handleError(t="operation",e){return n=>(console.error(n),this.log(`${t} failed: ${n.message}`),Bc(e))}log(t){this.messageService.add("HeroService: "+t)}getCompareTableData(t,e,n,r,s,i,o){return this.http.get(this.baseURL+"/api/getCompareData?srcTable="+t+"&destTable="+e+"&srcColumn="+n+"&destColumn="+r+"&srcKey="+s+"&destKey="+i+"¤tPageNo="+o,this.httpOptions)}getSrcRow(t,e,n,r){return this.http.get(this.baseURL+"/api/getSrcRow?tableName="+t+"&columns="+e+"&tableKey="+n+"&keyValue="+r,this.httpOptions)}getDestRow(t,e,n,r){return this.http.get(this.baseURL+"/api/getDestRow?tableName="+t+"&columns="+e+"&tableKey="+n+"&keyValue="+r,this.httpOptions)}updateSrcRow(t){return this.http.post(this.baseURL+"/api/updateSourceRowById",t,this.httpOptions2)}updateDestRow(t){return this.http.post(this.baseURL+"/api/updateDestRowById",t,this.httpOptions2)}dataMigration(t,e,n,r,s,i,o){return this.http.get(this.baseURL+"/api/dataMigration?srcTable="+t+"&destTable="+e+"&srcColumn="+n+"&destColumn="+r+"&srcKey="+s+"&destKey="+i+"&query="+o,this.httpOptions)}getCategories(t){return this.http.get(this.baseURL+"/api/getCategory?category="+t,this.httpOptions)}saveRecommendedName(t){return this.http.post(this.baseURL+"/api/saveRecommendedName",t,this.httpOptions)}getCategoryRecommendedList(t){return this.http.get(this.baseURL+"/api/getCategoryRecommendedList?NAME="+t,this.httpOptions)}approveCategoryValue(t){return this.http.post(this.baseURL+"/api/approveCategoryValue",t,this.httpOptions)}getCategoryList(){return this.http.get(this.baseURL+"/api/getCategories",this.httpOptions)}saveRule(t){return this.http.post(this.baseURL+"/api/saveRule",t,this.httpOptions)}getRules(){return this.http.get(this.baseURL+"/api/getRules",this.httpOptions)}migrateBasedOnIgnoreColumnRule(t){return this.http.post(this.baseURL+"/api/migrateBasedOnIgnoreColumnRule",t,this.httpOptions)}migrateBasedOnSplitRule(t){return this.http.post(this.baseURL+"/api/migrateBasedOnSplitRule",t,this.httpOptions)}migrateBasedOnMergeColumnsRule(t){return this.http.post(this.baseURL+"/api/migrateBasedOnMergeColumnsRule",t,this.httpOptions)}}return t.\u0275fac=function(e){return new(e||t)(Gt(uu),Gt(Yp))},t.\u0275prov=at({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),Xp=(()=>{class t{constructor(){this.srcTableRowsSource=new Tu(""),this.srcTableRows$=this.srcTableRowsSource.asObservable(),this.destTableRowsSource=new Tu(""),this.destTableRows$=this.destTableRowsSource.asObservable(),this.srcKey=new Tu(""),this.srcKey$=this.srcKey.asObservable(),this.destKey=new Tu(""),this.destKey$=this.destKey.asObservable()}sendRows(t,e,n,r){this.srcTableRowsSource.next(t),this.destTableRowsSource.next(e),this.srcKey.next(n),this.destKey.next(r)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function tf(t,e){return new v(n=>{const r=t.length;if(0===r)return void n.complete();const s=new Array(r);let i=0,o=0;for(let a=0;a{c||(c=!0,o++),s[a]=t},error:t=>n.error(t),complete:()=>{i++,i!==r&&c||(o===r&&n.next(e?e.reduce((t,e,n)=>(t[e]=s[n],t),{}):s),n.complete())}}))}})}const ef=new Dt("NgValueAccessor"),nf={provide:ef,useExisting:_t(()=>rf),multi:!0};let rf=(()=>{class t{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ko),Ki(Bo))},t.\u0275dir=fe({type:t,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(t,e){1&t&&no("change",(function(t){return e.onChange(t.target.checked)}))("blur",(function(){return e.onTouched()}))},features:[jo([nf])]}),t})();const sf={provide:ef,useExisting:_t(()=>af),multi:!0},of=new Dt("CompositionEventMode");let af=(()=>{class t{constructor(t,e,n){this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=t=>{},this.onTouched=()=>{},this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const t=Vl()?Vl().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ko),Ki(Bo),Ki(of,8))},t.\u0275dir=fe({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(t,e){1&t&&no("input",(function(t){return e._handleInput(t.target.value)}))("blur",(function(){return e.onTouched()}))("compositionstart",(function(){return e._compositionStart()}))("compositionend",(function(t){return e._compositionEnd(t.target.value)}))},features:[jo([sf])]}),t})(),lf=(()=>{class t{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}reset(t){this.control&&this.control.reset(t)}hasError(t,e){return!!this.control&&this.control.hasError(t,e)}getError(t,e){return this.control?this.control.getError(t,e):null}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=fe({type:t}),t})(),cf=(()=>{class t extends lf{get formDirective(){return null}get path(){return null}}return t.\u0275fac=function(e){return uf(e||t)},t.\u0275dir=fe({type:t,features:[So]}),t})();const uf=Qn(cf);function hf(){throw new Error("unimplemented")}class df extends lf{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null,this._rawValidators=[],this._rawAsyncValidators=[]}get validator(){return hf()}get asyncValidator(){return hf()}}let pf=(()=>{class t extends class{constructor(t){this._cd=t}get ngClassUntouched(){return!!this._cd.control&&this._cd.control.untouched}get ngClassTouched(){return!!this._cd.control&&this._cd.control.touched}get ngClassPristine(){return!!this._cd.control&&this._cd.control.pristine}get ngClassDirty(){return!!this._cd.control&&this._cd.control.dirty}get ngClassValid(){return!!this._cd.control&&this._cd.control.valid}get ngClassInvalid(){return!!this._cd.control&&this._cd.control.invalid}get ngClassPending(){return!!this._cd.control&&this._cd.control.pending}}{constructor(t){super(t)}}return t.\u0275fac=function(e){return new(e||t)(Ki(df,2))},t.\u0275dir=fe({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,e){2&t&&po("ng-untouched",e.ngClassUntouched)("ng-touched",e.ngClassTouched)("ng-pristine",e.ngClassPristine)("ng-dirty",e.ngClassDirty)("ng-valid",e.ngClassValid)("ng-invalid",e.ngClassInvalid)("ng-pending",e.ngClassPending)},features:[So]}),t})();function ff(t){return null==t||0===t.length}function gf(t){return null!=t&&"number"==typeof t.length}const mf=new Dt("NgValidators"),yf=new Dt("NgAsyncValidators"),vf=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class bf{static min(t){return e=>{if(ff(e.value)||ff(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n{if(ff(e.value)||ff(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}}static required(t){return ff(t.value)?{required:!0}:null}static requiredTrue(t){return!0===t.value?null:{required:!0}}static email(t){return ff(t.value)||vf.test(t.value)?null:{email:!0}}static minLength(t){return e=>ff(e.value)||!gf(e.value)?null:e.value.lengthgf(e.value)&&e.value.length>t?{maxlength:{requiredLength:t,actualLength:e.value.length}}:null}static pattern(t){if(!t)return bf.nullValidator;let e,n;return"string"==typeof t?(n="","^"!==t.charAt(0)&&(n+="^"),n+=t,"$"!==t.charAt(t.length-1)&&(n+="$"),e=new RegExp(n)):(n=t.toString(),e=t),t=>{if(ff(t.value))return null;const r=t.value;return e.test(r)?null:{pattern:{requiredPattern:n,actualValue:r}}}}static nullValidator(t){return null}static compose(t){if(!t)return null;const e=t.filter(_f);return 0==e.length?null:function(t){return Cf(function(t,e){return e.map(e=>e(t))}(t,e))}}static composeAsync(t){if(!t)return null;const e=t.filter(_f);return 0==e.length?null:function(t){return function(...t){if(1===t.length){const e=t[0];if(l(e))return tf(e,null);if(c(e)&&Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);return tf(t.map(t=>e[t]),t)}}if("function"==typeof t[t.length-1]){const e=t.pop();return tf(t=1===t.length&&l(t[0])?t[0]:t,null).pipe(D(t=>e(...t)))}return tf(t,null)}(function(t,e){return e.map(e=>e(t))}(t,e).map(wf)).pipe(D(Cf))}}}function _f(t){return null!=t}function wf(t){const e=to(t)?j(t):t;if(!eo(e))throw new Error("Expected validator to return Promise or Observable.");return e}function Cf(t){let e={};return t.forEach(t=>{e=null!=t?Object.assign(Object.assign({},e),t):e}),0===Object.keys(e).length?null:e}function Sf(t){return t.validate?e=>t.validate(e):t}function Ef(t){return t.validate?e=>t.validate(e):t}const xf={provide:ef,useExisting:_t(()=>Tf),multi:!0};let Tf=(()=>{class t{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ko),Ki(Bo))},t.\u0275dir=fe({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(t,e){1&t&&no("input",(function(t){return e.onChange(t.target.value)}))("blur",(function(){return e.onTouched()}))},features:[jo([xf])]}),t})();const Af={provide:ef,useExisting:_t(()=>kf),multi:!0};let Of=(()=>{class t{constructor(){this._accessors=[]}add(t,e){this._accessors.push([t,e])}remove(t){for(let e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)}select(t){this._accessors.forEach(e=>{this._isSameGroup(e,t)&&e[1]!==t&&e[1].fireUncheck(t.value)})}_isSameGroup(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=at({token:t,factory:t.\u0275fac}),t})(),kf=(()=>{class t{constructor(t,e,n,r){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=r,this.onChange=()=>{},this.onTouched=()=>{}}ngOnInit(){this._control=this._injector.get(df),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)}registerOnChange(t){this._fn=t,this.onChange=()=>{t(this.value),this._registry.select(this)}}fireUncheck(t){this.writeValue(t)}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_checkName(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)}_throwNameError(){throw new Error('\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: \n ')}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ko),Ki(Bo),Ki(Of),Ki(Pi))},t.\u0275dir=fe({type:t,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(t,e){1&t&&no("change",(function(){return e.onChange()}))("blur",(function(){return e.onTouched()}))},inputs:{name:"name",formControlName:"formControlName",value:"value"},features:[jo([Af])]}),t})();const Rf={provide:ef,useExisting:_t(()=>If),multi:!0};let If=(()=>{class t{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ko),Ki(Bo))},t.\u0275dir=fe({type:t,selectors:[["input","type","range","formControlName",""],["input","type","range","formControl",""],["input","type","range","ngModel",""]],hostBindings:function(t,e){1&t&&no("change",(function(t){return e.onChange(t.target.value)}))("input",(function(t){return e.onChange(t.target.value)}))("blur",(function(){return e.onTouched()}))},features:[jo([Rf])]}),t})();const Nf='\n
\n
\n \n
\n
\n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });',Pf='\n
\n
\n \n
\n
',Vf={provide:ef,useExisting:_t(()=>Mf),multi:!0};function Df(t,e){return null==t?""+e:(e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}let Mf=(()=>{class t{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=Object.is}set compareWith(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t}writeValue(t){this.value=t;const e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);const n=Df(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)}registerOnChange(t){this.onChange=e=>{this.value=this._getOptionValue(e),t(this.value)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e),t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t}}return t.\u0275fac=function(e){return new(e||t)(Ki(Ko),Ki(Bo))},t.\u0275dir=fe({type:t,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(t,e){1&t&&no("change",(function(t){return e.onChange(t.target.value)}))("blur",(function(){return e.onTouched()}))},inputs:{compareWith:"compareWith"},features:[jo([Vf])]}),t})(),Lf=(()=>{class t{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}set ngValue(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(Df(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return t.\u0275fac=function(e){return new(e||t)(Ki(Bo),Ki(Ko),Ki(Mf,9))},t.\u0275dir=fe({type:t,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),t})();const Uf={provide:ef,useExisting:_t(()=>Ff),multi:!0};function jf(t,e){return null==t?""+e:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}let Ff=(()=>{class t{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=Object.is}set compareWith(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t}writeValue(t){let e;if(this.value=t,Array.isArray(t)){const n=t.map(t=>this._getOptionId(t));e=(t,e)=>{t._setSelected(n.indexOf(e.toString())>-1)}}else e=(t,e)=>{t._setSelected(!1)};this._optionMap.forEach(e)}registerOnChange(t){this.onChange=e=>{const n=[];if(void 0!==e.selectedOptions){const t=e.selectedOptions;for(let e=0;e{class t{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){null!=this._select&&(this._value=t,this._setElementValue(jf(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(jf(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return t.\u0275fac=function(e){return new(e||t)(Ki(Bo),Ki(Ko),Ki(Ff,9))},t.\u0275dir=fe({type:t,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),t})();function $f(t,e){return[...e.path,t]}function Bf(t,e){t||Gf(e,"Cannot find control with"),e.valueAccessor||Gf(e,"No value accessor for form control with"),t.validator=bf.compose([t.validator,e.validator]),t.asyncValidator=bf.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(n=>{t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&zf(t,e)})}(t,e),function(t,e){t.registerOnChange((t,n)=>{e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&zf(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(t=>{e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())}),e._rawAsyncValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())})}function zf(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function Gf(t,e){let n;throw n=t.path.length>1?`path: '${t.path.join(" -> ")}'`:t.path[0]?`name: '${t.path}'`:"unspecified name attribute",new Error(`${e} ${n}`)}function qf(t){return null!=t?bf.compose(t.map(Sf)):null}function Kf(t){return null!=t?bf.composeAsync(t.map(Ef)):null}const Wf=[rf,If,Tf,Mf,Ff,kf];function Zf(t){const e=Yf(t)?t.validators:t;return Array.isArray(e)?qf(e):e||null}function Qf(t,e){const n=Yf(e)?e.asyncValidators:t;return Array.isArray(n)?Kf(n):n||null}function Yf(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class Jf{constructor(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=()=>{},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}get parent(){return this._parent}get valid(){return"VALID"===this.status}get invalid(){return"INVALID"===this.status}get pending(){return"PENDING"==this.status}get disabled(){return"DISABLED"===this.status}get enabled(){return"DISABLED"!==this.status}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this.validator=Zf(t)}setAsyncValidators(t){this.asyncValidator=Qf(t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild(e=>{e.disable(Object.assign(Object.assign({},t),{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!0))}enable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="VALID",this._forEachChild(e=>{e.enable(Object.assign(Object.assign({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status="PENDING";const e=wf(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(e=>this.setErrors(e,{emitEvent:t}))}}_cancelExistingSubscription(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}get(t){return function(t,e,n){if(null==e)return null;if(Array.isArray(e)||(e=e.split(".")),Array.isArray(e)&&0===e.length)return null;let r=t;return e.forEach(t=>{r=r instanceof tg?r.controls.hasOwnProperty(t)?r.controls[t]:null:r instanceof eg&&r.at(t)||null}),r}(this,t)}getError(t,e){const n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new Ma,this.statusChanges=new Ma}_calculateStatus(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){Yf(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()}}class Xf extends Jf{constructor(t=null,e,n){super(Zf(e),Qf(n,e)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(e),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(t=>t(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_clearChangeFns(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=()=>{}}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_forEachChild(t){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class tg extends Jf{constructor(t,e,n){super(Zf(e),Qf(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}removeControl(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(n=>{this._throwIfControlMissing(n),this.controls[n].setValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){Object.keys(t).forEach(n=>{this.controls[n]&&this.controls[n].patchValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t={},e={}){this._forEachChild((n,r)=>{n.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,n)=>(t[n]=e instanceof Xf?e.value:e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(t,e)=>!!e._syncPendingControls()||t);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n There are no form controls registered with this group yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(e=>t(this.controls[e],e))}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(const e of Object.keys(this.controls)){const n=this.controls[e];if(this.contains(e)&&t(n))return!0}return!1}_reduceValue(){return this._reduceChildren({},(t,e,n)=>((e.enabled||this.disabled)&&(t[n]=e.value),t))}_reduceChildren(t,e){let n=t;return this._forEachChild((t,r)=>{n=e(n,t,r)}),n}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)})}}class eg extends Jf{constructor(t,e,n){super(Zf(e),Qf(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}at(t){return this.controls[t]}push(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}insert(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}removeAt(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){this._checkAllValuesPresent(t),t.forEach((t,n)=>{this._throwIfControlMissing(n),this.at(n).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t.forEach((t,n)=>{this.at(n)&&this.at(n).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t=[],e={}){this._forEachChild((n,r)=>{n.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t instanceof Xf?t.value:t.getRawValue())}clear(){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity())}_syncPendingControls(){let t=this.controls.reduce((t,e)=>!!e._syncPendingControls()||t,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n There are no form controls registered with this array yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.at(t))throw new Error("Cannot find form control at index "+t)}_forEachChild(t){this.controls.forEach((e,n)=>{t(e,n)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control at index: ${n}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}const ng={provide:cf,useExisting:_t(()=>sg)},rg=(()=>Promise.resolve(null))();let sg=(()=>{class t extends cf{constructor(t,e){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new Ma,this.form=new tg({},qf(t),Kf(e))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){rg.then(()=>{const e=this._findContainer(t.path);t.control=e.registerControl(t.name,t.control),Bf(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){rg.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name),function(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}(this._directives,t)})}addFormGroup(t){rg.then(()=>{const e=this._findContainer(t.path),n=new tg({});(function(t,e){null==t&&Gf(e,"Cannot find control with"),t.validator=bf.compose([t.validator,e.validator]),t.asyncValidator=bf.composeAsync([t.asyncValidator,e.asyncValidator])})(n,t),e.registerControl(t.name,n),n.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){rg.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,e){rg.then(()=>{this.form.get(t.path).setValue(e)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submitted=!0,e=this._directives,this.form._syncPendingControls(),e.forEach(t=>{const e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)}),this.ngSubmit.emit(t),!1;var e}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}}return t.\u0275fac=function(e){return new(e||t)(Ki(mf,10),Ki(yf,10))},t.\u0275dir=fe({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(t,e){1&t&&no("submit",(function(t){return e.onSubmit(t)}))("reset",(function(){return e.onReset()}))},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[jo([ng]),So]}),t})(),ig=(()=>{class t extends cf{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return $f(null==this.name?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return qf(this._validators)}get asyncValidator(){return Kf(this._asyncValidators)}_checkParentType(){}}return t.\u0275fac=function(e){return og(e||t)},t.\u0275dir=fe({type:t,features:[So]}),t})();const og=Qn(ig);class ag{static modelParentException(){throw new Error('\n ngModel cannot be used to register form controls with a parent formGroup directive. Try using\n formGroup\'s partner directive "formControlName" instead. Example:\n\n \n
\n \n
\n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });\n\n Or, if you\'d like to avoid registering this form control, indicate that it\'s standalone in ngModelOptions:\n\n Example:\n\n \n
\n \n \n
\n ')}static formGroupNameException(){throw new Error(`\n ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n ${Nf}\n\n Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n ${Pf}`)}static missingNameException(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n control must be defined as \'standalone\' in ngModelOptions.\n\n Example 1: \n Example 2: ')}static modelGroupParentException(){throw new Error(`\n ngModelGroup cannot be used with a parent formGroup directive.\n\n Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n ${Nf}\n\n Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n ${Pf}`)}}const lg={provide:cf,useExisting:_t(()=>cg)};let cg=(()=>{class t extends ig{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){this._parent instanceof t||this._parent instanceof sg||ag.modelGroupParentException()}}return t.\u0275fac=function(e){return new(e||t)(Ki(cf,5),Ki(mf,10),Ki(yf,10))},t.\u0275dir=fe({type:t,selectors:[["","ngModelGroup",""]],inputs:{name:["ngModelGroup","name"]},exportAs:["ngModelGroup"],features:[jo([lg]),So]}),t})();const ug={provide:df,useExisting:_t(()=>dg)},hg=(()=>Promise.resolve(null))();let dg=(()=>{class t extends df{constructor(t,e,n,r){super(),this.control=new Xf,this._registered=!1,this.update=new Ma,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=function(t,e){if(!e)return null;Array.isArray(e)||Gf(t,"Value accessor was not provided as an array for form control with");let n=void 0,r=void 0,s=void 0;return e.forEach(e=>{var i;e.constructor===af?n=e:(i=e,Wf.some(t=>i.constructor===t)?(r&&Gf(t,"More than one built-in value accessor matches form control with"),r=e):(s&&Gf(t,"More than one custom value accessor matches form control with"),s=e))}),s||r||n||(Gf(t,"No valid value accessor for form control with"),null)}(this,r)}ngOnChanges(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),function(t,e){if(!t.hasOwnProperty("model"))return!1;const n=t.model;return!!n.isFirstChange()||!Object.is(e,n.currentValue)}(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?$f(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return qf(this._rawValidators)}get asyncValidator(){return Kf(this._rawAsyncValidators)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){Bf(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){!(this._parent instanceof cg)&&this._parent instanceof ig?ag.formGroupNameException():this._parent instanceof cg||this._parent instanceof sg||ag.modelParentException()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ag.missingNameException()}_updateValue(t){hg.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1})})}_updateDisabled(t){const e=t.isDisabled.currentValue,n=""===e||e&&"false"!==e;hg.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable()})}}return t.\u0275fac=function(e){return new(e||t)(Ki(cf,9),Ki(mf,10),Ki(yf,10),Ki(ef,10))},t.\u0275dir=fe({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[jo([ug]),So,ko]}),t})(),pg=(()=>{class t{}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)}}),t})(),fg=(()=>{class t{}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)},providers:[Of],imports:[pg]}),t})();const gg=function(t){return{active:t}};function mg(t,e){if(1&t){const t=Xi();Qi(0,"div",54),Qi(1,"div",55),no("click",(function(n){ze(t);const r=e.index,s=e.$implicit;return io().getRow(n,r,s)})),Qi(2,"span"),Qi(3,"input",56),no("change",(function(e){return ze(t),io().updateSrcKey(e)})),Yi(),Yi(),vo(4),Yi(),Yi()}if(2&t){const t=e.$implicit,n=e.index,r=io();Wi("ngClass",Pa(4,gg,r.selectLeftRow.includes(n))),Yr(3),oo("value",t),Wi("checked",r.column.srcKeys.includes(t)),Yr(1),bo(t)}}function yg(t,e){if(1&t){const t=Xi();Qi(0,"div",54),Qi(1,"div",55),no("click",(function(n){ze(t);const r=e.index,s=e.$implicit;return io().getRightRow(n,r,s)})),Qi(2,"span"),Qi(3,"input",56),no("change",(function(e){return ze(t),io().updateDestKey(e)})),Yi(),Yi(),vo(4),Yi(),Yi()}if(2&t){const t=e.$implicit,n=e.index,r=io();Wi("ngClass",Pa(4,gg,r.selectRightRow.includes(n))),Yr(3),oo("value",t),Wi("checked",r.column.destKeys.includes(t)),Yr(1),_o("",t," ")}}function vg(t,e){if(1&t&&(Qi(0,"div",65),Qi(1,"div",15),vo(2),Yi(),Yi()),2&t){const t=e.$implicit;Yr(2),bo(t)}}function bg(t,e){if(1&t&&(Qi(0,"div",65),Qi(1,"div",15),vo(2),Yi(),Yi()),2&t){const t=e.$implicit;Yr(2),bo(t)}}function _g(t,e){if(1&t){const t=Xi();Qi(0,"div",19),Qi(1,"button",66),no("click",(function(){return ze(t),io(2).dataMigration()})),vo(2,"Data Migration"),Yi(),Yi()}}function wg(t,e){if(1&t){const t=Xi();Qi(0,"div",57),Qi(1,"div",14),Qi(2,"div",15),Qi(3,"h4",58),vo(4,"Selected Source"),Yi(),Yi(),Qi(5,"div",15),Qi(6,"h4",58),vo(7,"Selected Destination"),Yi(),Yi(),Yi(),Qi(8,"div",59),Qi(9,"div",15),Qi(10,"div",60),qi(11,vg,3,1,"div",61),Yi(),Yi(),Qi(12,"div",15),Qi(13,"div",62),qi(14,bg,3,1,"div",61),Yi(),Yi(),Yi(),Qi(15,"div",14),Ji(16,"div",15),Qi(17,"div",63),Qi(18,"button",24),no("click",(function(){return ze(t),io().nextUrl()})),vo(19,"Next"),Yi(),Yi(),qi(20,_g,3,0,"div",64),Yi(),Yi()}if(2&t){const t=io();Yr(11),Wi("ngForOf",t.srcTable),Yr(3),Wi("ngForOf",t.destTable),Yr(6),Wi("ngIf",!t.hideMigrateButton)}}function Cg(t,e){if(1&t&&(Qi(0,"option",73),vo(1),Yi()),2&t){const t=e.$implicit;Wi("value",t),Yr(1),bo(t)}}function Sg(t,e){if(1&t&&(Qi(0,"option",73),vo(1),Yi()),2&t){const t=e.$implicit;Wi("value",t),Yr(1),bo(t)}}function Eg(t,e){if(1&t&&(Qi(0,"div",67),Qi(1,"div",15),Qi(2,"label",68),vo(3,"\xa0"),Yi(),Qi(4,"select",69),qi(5,Cg,2,2,"option",70),Yi(),Yi(),Qi(6,"div",15),Qi(7,"label"),vo(8,"\xa0"),Yi(),Qi(9,"select",71),qi(10,Sg,2,2,"option",70),Yi(),Yi(),Qi(11,"div",15),Qi(12,"label"),vo(13,"\xa0"),Yi(),Ji(14,"input",72),Yi(),Yi()),2&t){const t=io();Yr(5),Wi("ngForOf",t.mainSrcColums),Yr(5),Wi("ngForOf",t.conditions)}}function xg(t,e){1&t&&Ji(0,"div",74)}function Tg(t,e){if(1&t){const t=Xi();Qi(0,"button",24),no("click",(function(){return ze(t),io().createQuery()})),vo(1,"Save Filter"),Yi()}}function Ag(t,e){if(1&t){const t=Xi();Qi(0,"button",66),no("click",(function(){return ze(t),io().dataMigration()})),vo(1,"Data Migration"),Yi()}}function Og(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function kg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Rg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Ig(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Ng(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Pg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Vg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Dg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Mg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Lg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function Ug(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}function jg(t,e){if(1&t&&(Qi(0,"option"),vo(1),Yi()),2&t){const t=e.$implicit;Yr(1),bo(t)}}const Fg=function(t){return{"text-success":t}};let Hg=(()=>{class t{constructor(t,e,n,r){this.appService=t,this.router=e,this.rout=n,this.interactionService=r,this.hidDiv=!1,this.hideMigrateButton=!1,this.selectLeftRow=[],this.selectRightRow=[],this.srcTable=[],this.destTable=[],this.srcColumn="",this.destColumn="",this.conditions=["=","!=",">","<","<=",">="],this.operators=[],this.conditionArray=[],this.whereOperators=[],this.whereValArray=[],this.status="",this.ruleMaster=["IgnoreColumns","SplitColumns","MergeColumns"],this.applyRule="",this.ruleSrcKey="",this.ruleDestKey="",this.ruleValue1="",this.ruleValue2="",this.ruleValue3="",this.i=1}ngOnInit(){this.router.paramMap.subscribe(t=>{console.log(t.get("srcTable")),this.selectedSrcTable=t.get("srcTable"),this.selectedDestTable=t.get("destTable")}),this.getColumns()}getColumns(){this.appService.getColumns(this.selectedSrcTable,this.selectedDestTable).subscribe(t=>{this.column=t,this.mainSrcColums=t.source,this.srcKey=this.column.srcKeys[0],this.destKey=this.column.destKeys[0],console.log(t)})}getRow(t,e,n){this.selectLeftRow.includes(e)?(this.selectLeftRow.splice(this.selectLeftRow.indexOf(e),1),this.srcTable.splice(this.srcTable.indexOf(n),1),this.srcColumn=n,this.selectLeftRow.splice(this.selectLeftRow.indexOf(e),1),this.srcColumn=this.srcTable.toString()):(this.selectLeftRow.push(e),this.srcTable.push(n),this.srcColumn=n,this.selectLeftRow.push(e),this.srcColumn=this.srcTable.toString()),t.stopPropagation()}getRightRow(t,e,n){this.selectRightRow.includes(e)?(this.selectRightRow.splice(this.selectRightRow.indexOf(e),1),this.destTable.splice(this.destTable.indexOf(n),1),this.destColumn=n,this.selectRightRow.splice(this.selectRightRow.indexOf(e),1),this.srcColumn=this.destTable.toString()):(this.selectRightRow.push(e),this.destTable.push(n),this.destColumn=n,this.selectRightRow.push(e),this.srcColumn=this.destTable.toString()),t.stopPropagation()}updateSrcKey(t){t.target.checked&&(this.srcKey=t.target.value)}updateDestKey(t){t.target.checked&&(this.destKey=t.target.value)}nextUrl(){this.srcColumn=this.srcTable.toString(),this.destColumn=this.destTable.toString(),this.interactionService.sendRows(this.srcColumn,this.destColumn,this.srcKey,this.destKey),this.rout.navigateByUrl("migration/"+this.selectedSrcTable+"/"+this.selectedDestTable)}dataMigration(){this.appService.dataMigration(this.selectedSrcTable,this.selectedDestTable,this.srcTable.toString(),this.destTable.toString(),this.srcKey,this.destKey,this.whereCondition).subscribe(t=>{console.log(t),this.ruleStatus=t.status},t=>{console.log(t)})}addCondition(){let t="div"+this.i,e=1;var n=document.createElement("DIV");n.setAttribute("id","div"+this.i),n.setAttribute("class","row"),n.setAttribute("style","padding: 5px;margin: 5px;"),document.getElementById("con").appendChild(n);let r=t+"col"+e;(c=document.createElement("DIV")).setAttribute("id",r),c.setAttribute("class","col"),c.setAttribute("style","padding: 5px;margin: 5px;"),document.getElementById("div"+this.i).appendChild(c),e++;let s="mySelect"+this.i;var i=document.createElement("SELECT");i.setAttribute("id",s),i.setAttribute("class","form-control"),document.getElementById(r).appendChild(i),this.operators.push(s),["AND","OR"].forEach(t=>{var e=document.createElement("option");e.setAttribute("id",s+t),e.setAttribute("value",t),e.appendChild(document.createTextNode(t)),document.getElementById(s).appendChild(e)}),r=t+"col"+e,(c=document.createElement("DIV")).setAttribute("id",r),c.setAttribute("class","col"),c.setAttribute("style","padding: 5px;margin: 5px;"),document.getElementById("div"+this.i).appendChild(c),e++;let o="whereCon"+this.i;var a=document.createElement("SELECT");a.setAttribute("id",o),a.setAttribute("class","form-control"),document.getElementById(r).appendChild(a),this.conditionArray.push(o),this.mainSrcColums.forEach(t=>{var e=document.createElement("option");e.setAttribute("id",s+t),e.setAttribute("value",t),e.appendChild(document.createTextNode(t)),document.getElementById(o).appendChild(e)}),r=t+"col"+e,(c=document.createElement("DIV")).setAttribute("id",r),c.setAttribute("class","col"),c.setAttribute("style","padding: 5px;margin: 5px;"),document.getElementById("div"+this.i).appendChild(c),e++;let l="opId"+this.i;var c,u=document.createElement("SELECT");u.setAttribute("id",l),u.setAttribute("class","form-control"),document.getElementById(r).appendChild(u),this.whereOperators.push(l),this.conditions.forEach(t=>{var e=document.createElement("option");e.setAttribute("id",s+t),e.setAttribute("value",t),e.appendChild(document.createTextNode(t)),document.getElementById(l).appendChild(e)}),r=t+"col"+e,(c=document.createElement("DIV")).setAttribute("id",r),c.setAttribute("class","col"),c.setAttribute("style","padding: 5px;margin: 5px;"),document.getElementById("div"+this.i).appendChild(c),e++;let h=t+"opId"+this.i;var d=document.createElement("INPUT");d.setAttribute("id",h),d.setAttribute("class","form-control"),document.getElementById(r).appendChild(d),this.whereValArray.push(h),this.i++}createQuery(){let t="";if(this.hidDiv&&(t=t+"where "+document.getElementById("whereCondition").value+document.getElementById("whereOperator").value+" '"+document.getElementById("whereVal1").value+"' "),0!=this.operators.length&&this.hidDiv)for(let e=0;e{this.ruleStatus="Success"==t.status?"Success":"Unable to save rule"})}updateRuleButton(){const t=document.getElementById("rulButtonDiv");"IgnoreColumns"==this.applyRule?t.innerHTML='
\n ':"SplitColumns"==this.applyRule?t.innerHTML='
\n ':"MergeColumns"==this.applyRule&&(t.innerHTML='
\n ',this.ruleValue2="+")}}return t.\u0275fac=function(e){return new(e||t)(Ki(Jp),Ki(_d),Ki(kp),Ki(Xp))},t.\u0275cmp=le({type:t,selectors:[["app-columnsselection"]],decls:215,vars:41,consts:[[1,"navbar","navbar-expand-md","bg-info","navbar-dark","fixed-top"],["href","#",1,"navbar-brand"],["type","button","data-toggle","collapse","data-target","#collapsibleNavbar",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","collapsibleNavbar",1,"collapse","navbar-collapse"],[1,"navbar-nav"],[1,"nav-item"],["routerLink","/table",1,"nav-link"],[1,"nav-link",3,"routerLink"],["routerLink","/category",1,"nav-link"],["routerLink","/approveCategory",1,"nav-link"],["routerLink","/ruleBasedMigrationComponent",1,"nav-link"],[1,"container-fluid"],[1,"card","bg-light",2,"padding","20px"],[1,"row"],[1,"col"],["class","row card",3,"ngClass",4,"ngFor","ngForOf"],["class","card bg-light","style","padding: 5px;",4,"ngIf"],[1,"card","ng-light","form-group",2,"padding","25px"],[1,"col-lg-2"],[1,"text-primary"],[1,"text-success"],[1,"col","text-danger"],[3,"ngClass"],[1,"btn","btn-primary",3,"click"],[1,"btn","btn-danger",3,"click"],["hidden","",1,"row"],["type","text",1,"form-control",3,"value"],["class","row","id","whereDiv",4,"ngIf"],["id","con",4,"ngIf"],[1,"col-lg-8"],["class","btn btn-primary",3,"click",4,"ngIf"],["class","btn btn-info",3,"click",4,"ngIf"],[1,"card","bg-light",2,"padding","25px"],[1,"form-group"],[1,"form-control",3,"ngModel","ngModelChange","change"],[4,"ngFor","ngForOf"],["id","rulButtonDiv",1,"col"],[1,"btn","btn-primary",2,"margin-top","5px"],["id","ignoreColumnsModel",1,"modal","fade"],[1,"modal-dialog","modal-lg"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close"],[1,"modal-body"],[1,"form-control",3,"ngModel","ngModelChange"],["multiple","",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["data-dismiss","modal",1,"btn","btn-success",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-danger"],["id","splitColumnsModel",1,"modal","fade"],["type","text",1,"form-control",3,"ngModel","ngModelChange"],["id","mergeColumnsModel",1,"modal","fade"],[1,"row","card",3,"ngClass"],[1,"col",3,"click"],["type","checkbox",3,"checked","value","change"],[1,"card","bg-light",2,"padding","5px"],[1,"text-info"],[1,"row",2,"margin","5px"],["id","myTable"],["class","row card",4,"ngFor","ngForOf"],["id","myTable2"],[1,"col-lg-1"],["class","col-lg-2",4,"ngIf"],[1,"row","card"],[1,"btn","btn-info",3,"click"],["id","whereDiv",1,"row"],["for","sel1"],["id","whereCondition",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["id","whereOperator",1,"form-control"],["type","text","id","whereVal1","placeholder","Enter Value",1,"form-control"],[3,"value"],["id","con"]],template:function(t,e){1&t&&(Qi(0,"nav",0),Qi(1,"a",1),vo(2,"Machint"),Yi(),Qi(3,"button",2),Ji(4,"span",3),Yi(),Qi(5,"div",4),Qi(6,"ul",5),Qi(7,"li",6),Qi(8,"a",7),vo(9,"Select Table"),Yi(),Yi(),Qi(10,"li",6),Qi(11,"a",8),vo(12,"Select Column"),Yi(),Yi(),Qi(13,"li",6),Qi(14,"a",9),vo(15,"Category"),Yi(),Yi(),Qi(16,"li",6),Qi(17,"a",10),vo(18,"Approve Category"),Yi(),Yi(),Qi(19,"li",6),Qi(20,"a",11),vo(21,"Migration"),Yi(),Yi(),Yi(),Yi(),Yi(),Ji(22,"br"),Ji(23,"br"),Ji(24,"br"),Ji(25,"br"),Qi(26,"div",12),Qi(27,"div",13),Qi(28,"div",14),Qi(29,"div",15),Qi(30,"h4"),vo(31,"Source Column(s)"),Yi(),Yi(),Qi(32,"div",15),Qi(33,"h4"),vo(34,"Destination Column(s)"),Yi(),Yi(),Yi(),Qi(35,"div",14),Qi(36,"div",15),qi(37,mg,5,6,"div",16),Yi(),Qi(38,"div",15),qi(39,yg,5,6,"div",16),Yi(),Yi(),Yi(),Ji(40,"br"),qi(41,wg,21,3,"div",17),Ji(42,"br"),Qi(43,"div",18),Qi(44,"div",14),Qi(45,"div",19),Qi(46,"h3",20),vo(47,"Filter"),Yi(),Yi(),Qi(48,"div",15),Qi(49,"h5",21),vo(50),Yi(),Yi(),Qi(51,"div",22),Qi(52,"h5",23),vo(53),Yi(),Yi(),Yi(),Ji(54,"hr"),Qi(55,"div",14),Qi(56,"div",19),Qi(57,"button",24),no("click",(function(){return e.showWhareDiv()})),vo(58,"Add Where condition "),Yi(),Yi(),Qi(59,"div",19),Qi(60,"button",25),no("click",(function(){return e.addCondition()})),vo(61,"Add condition"),Yi(),Yi(),Yi(),Qi(62,"div",26),Qi(63,"div",15),Qi(64,"label"),vo(65,"columns"),Yi(),Ji(66,"input",27),Yi(),Yi(),qi(67,Eg,15,2,"div",28),qi(68,xg,1,0,"div",29),Ji(69,"br"),Qi(70,"div",14),Ji(71,"div",30),Qi(72,"div",15),qi(73,Tg,2,0,"button",31),Yi(),Qi(74,"div",15),qi(75,Ag,2,0,"button",32),Yi(),Yi(),Yi(),Qi(76,"div",33),Qi(77,"div",14),Qi(78,"div",15),Qi(79,"div",34),Qi(80,"label"),vo(81,"Select Rule:"),Yi(),Qi(82,"select",35),no("ngModelChange",(function(t){return e.applyRule=t}))("change",(function(){return e.updateRuleButton()})),qi(83,Og,2,1,"option",36),Yi(),Yi(),Yi(),Qi(84,"div",37),Ji(85,"br"),Qi(86,"button",38),vo(87,"Add rules"),Yi(),Yi(),Yi(),Yi(),Qi(88,"div",39),Qi(89,"div",40),Qi(90,"div",41),Qi(91,"div",42),Qi(92,"h4",43),vo(93,"Ignore Columns"),Yi(),Qi(94,"button",44),vo(95,"\xd7"),Yi(),Yi(),Qi(96,"div",45),Qi(97,"div",14),Qi(98,"div",15),Qi(99,"div",34),Qi(100,"label"),vo(101,"Select source key:"),Yi(),Qi(102,"select",46),no("ngModelChange",(function(t){return e.ruleSrcKey=t})),qi(103,kg,2,1,"option",36),Yi(),Yi(),Yi(),Qi(104,"div",15),Qi(105,"div",34),Qi(106,"label"),vo(107,"Select destination key:"),Yi(),Qi(108,"select",46),no("ngModelChange",(function(t){return e.ruleDestKey=t})),qi(109,Rg,2,1,"option",36),Yi(),Yi(),Yi(),Yi(),Qi(110,"div",14),Qi(111,"div",15),Qi(112,"div",34),Qi(113,"label"),vo(114,"Select Source Column to Ignore:"),Yi(),Qi(115,"select",47),no("ngModelChange",(function(t){return e.ruleValue1=t})),qi(116,Ig,2,1,"option",36),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(117,"div",48),Qi(118,"button",49),no("click",(function(){return e.saveRule()})),vo(119,"Save Rule"),Yi(),Qi(120,"button",50),vo(121,"Close"),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(122,"div",51),Qi(123,"div",40),Qi(124,"div",41),Qi(125,"div",42),Qi(126,"h4",43),vo(127,"Split Columns"),Yi(),Qi(128,"button",44),vo(129,"\xd7"),Yi(),Yi(),Qi(130,"div",45),Qi(131,"div",14),Qi(132,"div",15),Qi(133,"div",34),Qi(134,"label"),vo(135,"Select source key:"),Yi(),Qi(136,"select",46),no("ngModelChange",(function(t){return e.ruleSrcKey=t})),qi(137,Ng,2,1,"option",36),Yi(),Yi(),Yi(),Qi(138,"div",15),Qi(139,"div",34),Qi(140,"label"),vo(141,"Select destination key:"),Yi(),Qi(142,"select",46),no("ngModelChange",(function(t){return e.ruleDestKey=t})),qi(143,Pg,2,1,"option",36),Yi(),Yi(),Yi(),Yi(),Qi(144,"div",14),Qi(145,"div",15),Qi(146,"div",34),Qi(147,"label"),vo(148,"Select source column:"),Yi(),Qi(149,"select",46),no("ngModelChange",(function(t){return e.ruleValue1=t})),qi(150,Vg,2,1,"option",36),Yi(),Yi(),Yi(),Qi(151,"div",15),Qi(152,"div",34),Qi(153,"label"),vo(154,"Splint on:"),Yi(),Qi(155,"input",52),no("ngModelChange",(function(t){return e.ruleValue2=t})),Yi(),Yi(),Yi(),Yi(),Qi(156,"div",14),Qi(157,"div",15),Qi(158,"div",34),Qi(159,"label"),vo(160,"Select traget columns:"),Yi(),Qi(161,"select",47),no("ngModelChange",(function(t){return e.ruleValue3=t})),qi(162,Dg,2,1,"option",36),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(163,"div",48),Qi(164,"button",49),no("click",(function(){return e.saveRule()})),vo(165,"Save Rule"),Yi(),Qi(166,"button",50),vo(167,"Close"),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(168,"div",53),Qi(169,"div",40),Qi(170,"div",41),Qi(171,"div",42),Qi(172,"h4",43),vo(173,"Merge Columns"),Yi(),Qi(174,"button",44),vo(175,"\xd7"),Yi(),Yi(),Qi(176,"div",45),Qi(177,"div",14),Qi(178,"div",15),Qi(179,"div",34),Qi(180,"label"),vo(181,"Select "),Ji(182,"source"),vo(183," key:"),Yi(),Qi(184,"select",46),no("ngModelChange",(function(t){return e.ruleSrcKey=t})),qi(185,Mg,2,1,"option",36),Yi(),Yi(),Yi(),Qi(186,"div",15),Qi(187,"div",34),Qi(188,"label"),vo(189,"Select destination key:"),Yi(),Qi(190,"select",46),no("ngModelChange",(function(t){return e.ruleDestKey=t})),qi(191,Lg,2,1,"option",36),Yi(),Yi(),Yi(),Yi(),Qi(192,"div",14),Qi(193,"div",15),Qi(194,"div",34),Qi(195,"label"),vo(196,"Select Source Column to merge:"),Yi(),Qi(197,"select",47),no("ngModelChange",(function(t){return e.ruleValue1=t})),qi(198,Ug,2,1,"option",36),Yi(),Yi(),Yi(),Qi(199,"div",15),Qi(200,"div",34),Qi(201,"label"),vo(202,"Operator:"),Yi(),Qi(203,"input",52),no("ngModelChange",(function(t){return e.ruleValue2=t})),Yi(),Yi(),Yi(),Qi(204,"div",15),Qi(205,"div",34),Qi(206,"label"),vo(207,"Select destination column:"),Yi(),Qi(208,"select",46),no("ngModelChange",(function(t){return e.ruleValue3=t})),qi(209,jg,2,1,"option",36),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(210,"div",48),Qi(211,"button",49),no("click",(function(){return e.saveRule()})),vo(212,"Save Rule"),Yi(),Qi(213,"button",50),vo(214,"Close"),Yi(),Yi(),Yi(),Yi(),Yi(),Yi()),2&t&&(Yr(11),lo("routerLink","/columns/",e.selectedSrcTable,"/",e.selectedDestTable,""),Yr(26),Wi("ngForOf",e.column.source),Yr(2),Wi("ngForOf",e.column.destination),Yr(2),Wi("ngIf",0!=e.srcTable.length||0!=e.destTable.length),Yr(9),bo(e.status),Yr(2),Wi("ngClass",Pa(39,Fg,"Success"==e.ruleStatus||"Migration success"==e.ruleStatus)),Yr(1),_o(" ",e.ruleStatus," "),Yr(13),oo("value",e.srcColumn),Yr(1),Wi("ngIf",e.hidDiv),Yr(1),Wi("ngIf",e.hidDiv),Yr(5),Wi("ngIf",e.hidDiv),Yr(2),Wi("ngIf",e.hideMigrateButton),Yr(7),Wi("ngModel",e.applyRule),Yr(1),Wi("ngForOf",e.ruleMaster),Yr(19),Wi("ngModel",e.ruleSrcKey),Yr(1),Wi("ngForOf",e.column.source),Yr(5),Wi("ngModel",e.ruleDestKey),Yr(1),Wi("ngForOf",e.column.destination),Yr(6),Wi("ngModel",e.ruleValue1),Yr(1),Wi("ngForOf",e.column.source),Yr(20),Wi("ngModel",e.ruleSrcKey),Yr(1),Wi("ngForOf",e.column.source),Yr(5),Wi("ngModel",e.ruleDestKey),Yr(1),Wi("ngForOf",e.column.destination),Yr(6),Wi("ngModel",e.ruleValue1),Yr(1),Wi("ngForOf",e.column.source),Yr(5),Wi("ngModel",e.ruleValue2),Yr(6),Wi("ngModel",e.ruleValue3),Yr(1),Wi("ngForOf",e.column.destination),Yr(22),Wi("ngModel",e.ruleSrcKey),Yr(1),Wi("ngForOf",e.column.source),Yr(5),Wi("ngModel",e.ruleDestKey),Yr(1),Wi("ngForOf",e.column.destination),Yr(6),Wi("ngModel",e.ruleValue1),Yr(1),Wi("ngForOf",e.column.source),Yr(5),Wi("ngModel",e.ruleValue2),Yr(5),Wi("ngModel",e.ruleValue3),Yr(1),Wi("ngForOf",e.column.destination))},directives:[Rp,ic,ac,rc,Mf,pf,dg,Ff,af,Lf,Hf],styles:[".active[_ngcontent-%COMP%], .table[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background-color:#123456!important;color:#fff}"]}),t})();const $g=function(t){return{active:t}};function Bg(t,e){if(1&t){const t=Xi();Qi(0,"div",17),Qi(1,"div",18),no("click",(function(n){ze(t);const r=e.index,s=e.$implicit;return io().getLeftRow(n,r,s)})),vo(2),Yi(),Yi()}if(2&t){const t=e.$implicit,n=e.index,r=io();Yr(1),Wi("ngClass",Pa(2,$g,r.selectLeftRow.includes(n))),Yr(1),_o(" ",t,"")}}function zg(t,e){if(1&t){const t=Xi();Qi(0,"div",17),Qi(1,"div",18),no("click",(function(n){ze(t);const r=e.index,s=e.$implicit;return io().getRightRow(n,r,s)})),vo(2),Yi(),Yi()}if(2&t){const t=e.$implicit,n=e.index,r=io();Yr(1),Wi("ngClass",Pa(2,$g,r.selectRightRow.includes(n))),Yr(1),_o(" ",t,"")}}function Gg(t,e){if(1&t&&(Qi(0,"div",17),Qi(1,"div",14),vo(2),Yi(),Yi()),2&t){const t=e.$implicit;Yr(2),bo(t)}}function qg(t,e){if(1&t&&(Qi(0,"div",17),Qi(1,"div",14),vo(2),Yi(),Yi()),2&t){const t=e.$implicit;Yr(2),bo(t)}}function Kg(t,e){if(1&t&&(Qi(0,"div",19),Qi(1,"div",13),Qi(2,"div",14),Qi(3,"h4",20),vo(4,"Selected Source"),Yi(),Yi(),Qi(5,"div",14),Qi(6,"h4",20),vo(7,"Selected Destination"),Yi(),Yi(),Yi(),Qi(8,"div",21),Qi(9,"div",14),Qi(10,"div",22),qi(11,Gg,3,1,"div",15),Yi(),Yi(),Qi(12,"div",14),Qi(13,"div",23),qi(14,qg,3,1,"div",15),Yi(),Yi(),Yi(),Qi(15,"nav"),Qi(16,"a",24),vo(17,"Next"),Yi(),Yi(),Yi()),2&t){const t=io();Yr(11),Wi("ngForOf",t.srcTable),Yr(3),Wi("ngForOf",t.destTable),Yr(2),lo("routerLink","/columns/",t.selectSrcTable,"/",t.selectDestTable,"")}}let Wg=(()=>{class t{constructor(t){this.appService=t,this.selectLeftRow=[],this.selectRightRow=[],this.srcTable=[],this.destTable=[],this.srcTableIndexs=[],this.destTableIndexs=[]}ngOnInit(){this.getTables()}getTables(){this.appService.getTables().subscribe(t=>this.table=t)}getLeftRow(t,e,n){this.srcTableIndexs.includes(e)?(this.srcTableIndexs.splice(this.srcTableIndexs.indexOf(e),1),this.srcTable.splice(this.srcTable.indexOf(n),1),this.selectSrcTable=n,this.selectLeftRow.splice(this.selectLeftRow.indexOf(e),1)):(this.srcTableIndexs.push(e),this.srcTable.push(n),this.selectSrcTable=n,this.selectLeftRow.push(e)),t.stopPropagation()}getRightRow(t,e,n){this.destTableIndexs.includes(e)?(this.destTableIndexs.splice(this.srcTableIndexs.indexOf(e),1),this.destTable.splice(this.destTable.indexOf(n),1),this.selectDestTable=n,this.selectRightRow.splice(this.selectRightRow.indexOf(e),1)):(this.destTableIndexs.push(e),this.destTable.push(n),this.selectDestTable=n,this.selectRightRow.push(e)),t.stopPropagation()}}return t.\u0275fac=function(e){return new(e||t)(Ki(Jp))},t.\u0275cmp=le({type:t,selectors:[["app-tableselection"]],decls:38,vars:3,consts:[[1,"navbar","navbar-expand-md","bg-info","navbar-dark","fixed-top"],["href","#",1,"navbar-brand"],["type","button","data-toggle","collapse","data-target","#collapsibleNavbar",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","collapsibleNavbar",1,"collapse","navbar-collapse"],[1,"navbar-nav"],[1,"nav-item"],["routerLink","/table",1,"nav-link"],["routerLink","/category",1,"nav-link"],["routerLink","/approveCategory",1,"nav-link"],["routerLink","/ruleBasedMigrationComponent",1,"nav-link"],[1,"container-fluid"],[1,"card","bg-light",2,"padding","20px"],[1,"row"],[1,"col"],["class","row card",4,"ngFor","ngForOf"],["class","card bg-light","style","padding: 5px;",4,"ngIf"],[1,"row","card"],[1,"col",3,"ngClass","click"],[1,"card","bg-light",2,"padding","5px"],[1,"text-info"],[1,"row",2,"margin","5px"],["id","myTable"],["id","myTable2"],[1,"btn","btn-info",3,"routerLink"]],template:function(t,e){1&t&&(Qi(0,"nav",0),Qi(1,"a",1),vo(2,"Machint"),Yi(),Qi(3,"button",2),Ji(4,"span",3),Yi(),Qi(5,"div",4),Qi(6,"ul",5),Qi(7,"li",6),Qi(8,"a",7),vo(9,"Select Table"),Yi(),Yi(),Qi(10,"li",6),Qi(11,"a",8),vo(12,"Category"),Yi(),Yi(),Qi(13,"li",6),Qi(14,"a",9),vo(15,"Approve Category"),Yi(),Yi(),Qi(16,"li",6),Qi(17,"a",10),vo(18,"Migration"),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(19,"div",11),Ji(20,"br"),Ji(21,"br"),Ji(22,"br"),Qi(23,"div",12),Qi(24,"div",13),Qi(25,"div",14),Qi(26,"h4"),vo(27,"Source Table(s)"),Yi(),Yi(),Qi(28,"div",14),Qi(29,"h4"),vo(30,"Destination Table(s)"),Yi(),Yi(),Yi(),Qi(31,"div",13),Qi(32,"div",14),qi(33,Bg,3,4,"div",15),Yi(),Qi(34,"div",14),qi(35,zg,3,4,"div",15),Yi(),Yi(),Yi(),Ji(36,"br"),qi(37,Kg,18,4,"div",16),Yi()),2&t&&(Yr(33),Wi("ngForOf",e.table.source),Yr(2),Wi("ngForOf",e.table.destination),Yr(2),Wi("ngIf",0!=e.srcTable.length||0!=e.destTable.length))},directives:[Rp,ic,ac,rc],styles:[".active[_ngcontent-%COMP%]{background-color:#123456!important;color:#fff}"]}),t})();class Zg{}function Qg(t,e){if(1&t){const t=Xi();Qi(0,"span",36),no("click",(function(){ze(t);const e=io(),n=e.$implicit,r=e.index,s=io().$implicit;return io().setSrcModelData(n,s.id,r)})),Yi()}2&t&&Wi("innerHtml",io().$implicit,Rr)}function Yg(t,e){if(1&t&&(Qi(0,"div",15),qi(1,Qg,1,1,"span",35),Yi()),2&t){const t=e.$implicit;Yr(1),Wi("ngIf",0!=t.length)}}const Jg=function(t){return{active:t}};function Xg(t,e){if(1&t&&(Qi(0,"div",32),Qi(1,"div",33),qi(2,Yg,2,1,"div",34),Yi(),Yi()),2&t){const t=e.$implicit,n=io();Yr(1),Wi("ngClass",Pa(2,Jg,n.diff.includes(t.id))),Yr(1),Wi("ngForOf",t.columns)}}function tm(t,e){if(1&t){const t=Xi();Qi(0,"span",36),no("click",(function(){ze(t);const e=io(),n=e.$implicit,r=e.index,s=io().$implicit;return io().setDestModelData(n,s.id,r)})),Yi()}2&t&&Wi("innerHtml",io().$implicit,Rr)}function em(t,e){if(1&t&&(Qi(0,"div",15),qi(1,tm,1,1,"span",35),Yi()),2&t){const t=e.$implicit;Yr(1),Wi("ngIf",0!=t.length)}}function nm(t,e){if(1&t&&(Qi(0,"div",32),Qi(1,"div",33),qi(2,em,2,1,"div",34),Yi(),Yi()),2&t){const t=e.$implicit,n=io();Yr(1),Wi("ngClass",Pa(2,Jg,n.diff.includes(t.id))),Yr(1),Wi("ngForOf",t.columns)}}function rm(t,e){if(1&t){const t=Xi();Qi(0,"li",18),Qi(1,"a",37),no("click",(function(){ze(t);const n=e.$implicit;return io().getPage(n)})),vo(2),Yi(),Yi()}if(2&t){const t=e.$implicit,n=io();Yr(1),Wi("ngClass",Pa(2,Jg,t==n.currentPageNo)),Yr(1),bo(t)}}function sm(t,e){if(1&t&&(Qi(0,"div",14),Qi(1,"div",15),vo(2),Ji(3,"input",38),Yi(),Yi()),2&t){const t=e.$implicit;Yr(2),_o(" ",t.key," : "),Yr(1),oo("id",t.key),oo("value",t.value)}}function im(t,e){if(1&t&&(Qi(0,"option",38),vo(1),Yi()),2&t){const t=e.$implicit;Wi("value",t.CATEGORY),Yr(1),bo(t.CATEGORY)}}function om(t,e){if(1&t){const t=Xi();Qi(0,"tr",39),no("click",(function(){ze(t);const n=e.$implicit;return io().updateModelValues(n.CATEGORY,n.NAME,n.VALUE)})),Qi(1,"td"),vo(2),Yi(),Qi(3,"td"),vo(4),Yi(),Qi(5,"td"),vo(6),Yi(),Yi()}if(2&t){const t=e.$implicit;Yr(2),bo(t.CATEGORY),Yr(2),bo(t.NAME),Yr(2),bo(t.VALUE)}}function am(t,e){if(1&t&&(Qi(0,"tr"),Qi(1,"td"),vo(2),Yi(),Qi(3,"td"),vo(4),Yi(),Qi(5,"td"),vo(6),Yi(),Qi(7,"td"),vo(8),Yi(),Qi(9,"td"),vo(10),Yi(),Qi(11,"td"),vo(12),Yi(),Yi()),2&t){const t=e.$implicit;Yr(2),bo(t.CAT_USER),Yr(2),bo(t.CAT_NAME),Yr(2),bo(t.CAT_OLD_VALUE),Yr(2),bo(t.CAT_REC_VALUE),Yr(2),bo(t.CAT_STATUS),Yr(2),bo(t.CAT_CATEGORY)}}function lm(t,e){if(1&t&&(Qi(0,"option",34),vo(1),Yi()),2&t){const t=e.$implicit;Wi("value",t.CATEGORY),Yr(1),bo(t.CATEGORY)}}function cm(t,e){if(1&t){const t=Xi();Qi(0,"tr",35),no("click",(function(){ze(t);const n=e.$implicit;return io().getCategoryRecommendedList(n.NAME)})),Qi(1,"td"),vo(2),Yi(),Qi(3,"td"),vo(4),Yi(),Qi(5,"td"),vo(6),Yi(),Yi()}if(2&t){const t=e.$implicit;Yr(2),bo(t.CATEGORY),Yr(2),bo(t.NAME),Yr(2),bo(t.VALUE)}}function um(t,e){if(1&t){const t=Xi();Qi(0,"tr"),Qi(1,"td"),vo(2),Yi(),Qi(3,"td"),vo(4),Yi(),Qi(5,"td"),vo(6),Yi(),Qi(7,"td"),vo(8),Yi(),Qi(9,"td"),vo(10),Yi(),Qi(11,"td"),vo(12),Yi(),Qi(13,"td"),Qi(14,"button",36),no("click",(function(){ze(t);const n=e.$implicit;return io().approveCategoryValue(n.CAT_USER,n.CAT_NAME,n.CAT_OLD_VALUE,n.CAT_REC_VALUE,n.CAT_STATUS,n.CAT_CATEGORY)})),vo(15,"Approve"),Yi(),Yi(),Yi()}if(2&t){const t=e.$implicit;Yr(2),bo(t.CAT_USER),Yr(2),bo(t.CAT_NAME),Yr(2),bo(t.CAT_OLD_VALUE),Yr(2),bo(t.CAT_REC_VALUE),Yr(2),bo(t.CAT_STATUS),Yr(2),bo(t.CAT_CATEGORY)}}function hm(t,e){if(1&t){const t=Xi();Qi(0,"tr"),Qi(1,"td"),vo(2),Yi(),Qi(3,"td"),vo(4),Yi(),Qi(5,"td"),vo(6),Yi(),Qi(7,"td"),vo(8),Yi(),Qi(9,"td"),vo(10),Yi(),Qi(11,"td"),vo(12),Yi(),Qi(13,"td"),vo(14),Yi(),Qi(15,"td"),vo(16),Yi(),Qi(17,"td"),vo(18),Yi(),Qi(19,"td"),vo(20),Yi(),Qi(21,"td"),vo(22),Yi(),Qi(23,"td"),Qi(24,"button",18),no("click",(function(){ze(t);const n=e.$implicit;return io().updateData(n.SRCTBL,n.DESTTBL,n.SRC_KEY,n.DEST_KEY,n.RULE_NAME,n.VALUE1,n.VALUE2,n.VALUE3,n.FILTER_CONDITION,n.SRC_COLUMNS,n.DEST_COLUMNS)})),vo(25,"Apply"),Yi(),Yi(),Yi()}if(2&t){const t=e.$implicit;Yr(2),bo(t.SRCTBL),Yr(2),bo(t.DESTTBL),Yr(2),bo(t.SRC_KEY),Yr(2),bo(t.DEST_KEY),Yr(2),bo(t.RULE_NAME),Yr(2),bo(t.VALUE1),Yr(2),bo(t.VALUE2),Yr(2),bo(t.VALUE3),Yr(2),bo(t.FILTER_CONDITION),Yr(2),bo(t.SRC_COLUMNS),Yr(2),bo(t.DEST_COLUMNS)}}const dm=function(t,e){return{"text-success":t,"text-danger":e}},pm=[{path:"",component:Wg},{path:"table",component:Wg},{path:"columns/:srcTable/:destTable",component:Hg},{path:"migration/:srcTable/:destTable",component:(()=>{class t{constructor(t,e,n){this.ser=t,this.router=e,this.intractionService=n,this.source=[],this.dest=[],this.diff=[],this.mainDest=[],this.currentPageNo=1,this.pages=[]}ngOnInit(){this.router.paramMap.subscribe(t=>{console.log(t.get("srcTable")),this.selectedSrcTable=t.get("srcTable"),this.selectedDestTable=t.get("destTable")}),this.intractionService.srcTableRows$.subscribe(t=>{this.selectedSrcColumn=t}),this.intractionService.destTableRows$.subscribe(t=>{this.selectedDestColumn=t}),this.intractionService.srcKey$.subscribe(t=>{this.srcKey=t}),this.intractionService.destKey$.subscribe(t=>{this.destKey=t}),this.getMigrationData()}getMigrationData(){this.ser.getCompareTableData(this.selectedSrcTable,this.selectedDestTable,this.selectedSrcColumn,this.selectedDestColumn,this.srcKey,this.destKey,this.currentPageNo).subscribe(t=>{console.log(t),this.pages=t.pages,this.currentPageNo=t.currentPageNo,this.source=[];for(let e in t.source_data){console.log("---\x3e"+t.source_data.hasOwnProperty(e));let n=new Zg;n.id=e,n.value=t.source_data[e],n.columns=n.value.split("#"),this.source.push(n)}this.dest=[];for(let e in t.dest_data){console.log("---\x3e"+t.dest_data.hasOwnProperty(e));let n=new Zg;n.id=e,n.value=t.dest_data[e],this.dest.push(n)}this.diff=[];for(let e in t.mismatch_data)console.log("---\x3e"+t.mismatch_data.hasOwnProperty(e)),this.diff.push(t.mismatch_data[e]);this.mainDest=[],this.source.forEach((t,e)=>{let n=new Zg,r=this.dest[e];if(t.id==r.id){let s=r.value,i=t.value.split("#"),o=s.split("#");for(e=0;e"+o[e]+""));n.id=r.id,n.value=r.value,n.nodeHtml=s,n.columns=n.nodeHtml.split("#"),this.mainDest.push(n)}else n.id=r.id,n.value=r.value,n.nodeHtml=r.value,n.columns=n.nodeHtml.split("#"),this.mainDest.push(n)}),console.log("mainDest ;; "+this.mainDest)},t=>{console.log(t)})}setDestModelData(t,e,n){this.modeKeyValue=e,this.modelType="dest",this.modelKeyName=this.destKey,this.modelTableName=this.selectedDestTable,this.ser.getDestRow(this.selectedDestTable,this.selectedSrcColumn,this.destKey,e).subscribe(t=>{this.rowMap=t,this.rowMap2=t,Object.keys(t).map(e=>{console.log("key: "+e),console.log("value: "+t[e])})})}setSrcModelData(t,e,n){this.modeKeyValue=e,this.modelType="src",this.modelKeyName=this.srcKey,this.modelTableName=this.selectedSrcTable,this.ser.getSrcRow(this.selectedSrcTable,this.selectedSrcColumn,this.srcKey,e).subscribe(t=>{this.rowMap=t,this.rowMap2=t,Object.keys(t).map(e=>{console.log("key: "+e),console.log("value: "+t[e])})})}updateRow(){Object.keys(this.rowMap2).map(t=>{this.rowMap2[t]=document.getElementById(t).value}),"src"===this.modelType?this.ser.updateSrcRow({tableName:this.selectedSrcTable,tableKey:this.srcKey,tableKeyValue:this.modeKeyValue,rowMap:this.rowMap2}).subscribe(t=>{alert(t),this.getMigrationData()}):this.ser.updateDestRow({tableName:this.selectedDestTable,tableKey:this.destKey,tableKeyValue:this.modeKeyValue,rowMap:this.rowMap2}).subscribe(t=>{alert(t),this.getMigrationData()})}keyup(t,e){var n=t.target,r=n.selectionStart;return this.updateData(t.target.value,e),n.setCursorPosition=r,!0}updateData(t,e){Object.keys(this.rowMap2).map(n=>{n===e&&(this.rowMap2[e]=t)})}getPage(t){this.currentPageNo=t,this.getMigrationData()}getPreviousPage(){this.currentPageNo=this.currentPageNo-1,this.currentPageNo<=0&&(this.currentPageNo=1),this.getMigrationData()}getNextPage(){this.currentPageNo=this.currentPageNo+1,this.currentPageNo>=this.pages.length&&(this.currentPageNo=1),this.getMigrationData()}}return t.\u0275fac=function(e){return new(e||t)(Ki(Jp),Ki(_d),Ki(Xp))},t.\u0275cmp=le({type:t,selectors:[["app-verifymigration"]],decls:71,vars:11,consts:[[1,"navbar","navbar-expand-md","bg-info","navbar-dark","fixed-top"],["href","#",1,"navbar-brand"],["type","button","data-toggle","collapse","data-target","#collapsibleNavbar",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","collapsibleNavbar",1,"collapse","navbar-collapse"],[1,"navbar-nav"],[1,"nav-item"],["routerLink","/table",1,"nav-link"],[1,"nav-link",3,"routerLink"],["routerLink","/category",1,"nav-link"],["routerLink","/approveCategory",1,"nav-link"],["routerLink","/ruleBasedMigrationComponent",1,"nav-link"],[1,"container-fluid"],[1,"text-primary"],[1,"row"],[1,"col"],["class","card",4,"ngFor","ngForOf"],[1,"pagination"],[1,"page-item"],[1,"page-link",3,"click"],["class","page-item",4,"ngFor","ngForOf"],["id","myModal",1,"modal","fade"],[1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close"],[1,"modal-body"],["class","row",4,"ngFor","ngForOf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-success",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-danger"],[1,"card"],[1,"row",2,"margin","2px",3,"ngClass"],["class","col",4,"ngFor","ngForOf"],["data-toggle","modal","data-target","#myModal",3,"innerHtml","click",4,"ngIf"],["data-toggle","modal","data-target","#myModal",3,"innerHtml","click"],[1,"page-link",3,"ngClass","click"],["type","text",1,"form-control",3,"id","value"]],template:function(t,e){1&t&&(Qi(0,"nav",0),Qi(1,"a",1),vo(2,"Machint"),Yi(),Qi(3,"button",2),Ji(4,"span",3),Yi(),Qi(5,"div",4),Qi(6,"ul",5),Qi(7,"li",6),Qi(8,"a",7),vo(9,"Select Table"),Yi(),Yi(),Qi(10,"li",6),Qi(11,"a",8),vo(12,"Select Column"),Yi(),Yi(),Qi(13,"li",6),Qi(14,"a",9),vo(15,"Category"),Yi(),Yi(),Qi(16,"li",6),Qi(17,"a",10),vo(18,"Approve Category"),Yi(),Yi(),Qi(19,"li",6),Qi(20,"a",11),vo(21,"Migration"),Yi(),Yi(),Yi(),Yi(),Yi(),Ji(22,"br"),Ji(23,"br"),Qi(24,"div",12),Qi(25,"h1",13),vo(26,"Compare Table "),Yi(),Qi(27,"div"),Qi(28,"div",14),Qi(29,"div",15),qi(30,Xg,3,4,"div",16),Yi(),Qi(31,"div",15),qi(32,nm,3,4,"div",16),Yi(),Yi(),Ji(33,"br"),Ji(34,"br"),Qi(35,"div",14),Qi(36,"div",15),Qi(37,"ul",17),Qi(38,"li",18),Qi(39,"a",19),no("click",(function(){return e.getPreviousPage()})),vo(40,"Previous"),Yi(),Yi(),qi(41,rm,3,4,"li",20),Qi(42,"li",18),Qi(43,"a",19),no("click",(function(){return e.getNextPage()})),vo(44,"Next"),Yi(),Yi(),Yi(),Yi(),Yi(),Yi(),Qi(45,"div",21),Qi(46,"div",22),Qi(47,"div",23),Qi(48,"div",24),Qi(49,"h4",25),vo(50),Yi(),Qi(51,"button",26),vo(52,"\xd7"),Yi(),Yi(),Qi(53,"div",27),Qi(54,"div",14),Qi(55,"div",15),vo(56,"Table: "),Qi(57,"b"),vo(58),Yi(),Yi(),Qi(59,"div",15),vo(60,"Primary Key : "),Qi(61,"b"),vo(62),Yi(),Yi(),Yi(),Ji(63,"br"),qi(64,sm,4,3,"div",28),function(t,e){const n=Be();let r;n.firstCreatePass?(r=function(t,e){if(e)for(let n=e.length-1;n>=0;n--){const t=e[n];if("keyvalue"===t.name)return t}throw new Error("The pipe 'keyvalue' could not be found!")}(0,n.pipeRegistry),n.data[85]=r,r.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(85,r.onDestroy)):r=n.data[85];const s=r.factory||(r.factory=ye(r.type)),i=Bt(Ki),o=Dn(!1),a=s();Dn(o),Bt(i),function(t,e,n,r){85>=t.data.length&&(t.data[85]=null,t.blueprint[85]=null),e[85]=r}(n,$e(),0,a)}(),Yi(),Qi(66,"div",29),Qi(67,"button",30),no("click",(function(){return e.updateRow()})),vo(68,"Update"),Yi(),Qi(69,"button",31),vo(70,"Close"),Yi(),Yi(),Yi(),Yi(),Yi(),Yi()),2&t&&(Yr(11),lo("routerLink","/columns/",e.selectedSrcTable,"/",e.selectedDestTable,""),Yr(19),Wi("ngForOf",e.source),Yr(2),Wi("ngForOf",e.mainDest),Yr(9),Wi("ngForOf",e.pages),Yr(9),_o("Update Data of ",e.modeKeyValue,""),Yr(8),bo(e.modelTableName),Yr(4),bo(e.modelKeyName),Yr(2),Wi("ngForOf",function(t,e,n){const r=$e(),s=function(t,e){return t[e+20]}(r,t);return function(t,e){return Ui.isWrapped(e)&&(e=Ui.unwrap(e),t[Ye()]=qr),e}(r,function(t,e){return t[1].data[e+20].pure}(r,t)?Da(r,Qe(),e,s.transform,n,s):s.transform(n))}(65,9,e.rowMap)))},directives:[Rp,ic,rc,ac],pipes:[uc],styles:[".active[_ngcontent-%COMP%]{background-color:#f8d7da!important;color:#721c24}"]}),t})()},{path:"category",component:(()=>{class t{constructor(t){this.ser=t,this.categoryNewValue="",this.userName=""}ngOnInit(){this.getCategoryList()}getCategoryList(){this.ser.getCategoryList().subscribe(t=>{this.categoryList=t,t.forEach(t=>{console.log(t)})})}getCategories(t){this.ser.getCategories(t).subscribe(t=>{this.categories=t,t.forEach(t=>{console.log(t)})})}updateModelValues(t,e,n){this.category=t,this.categoryName=e,this.categoryOldValue=n,this.ser.getCategoryRecommendedList(this.categoryName).subscribe(t=>{console.log(t),this.list=t})}saveRecommendedName(){if(0==this.userName.length)alert("Enter user name");else if(0==this.categoryNewValue.length)alert("Enter Recommended Name");else{let t={CAT_CATEGORY:this.category,CAT_NAME:this.categoryName,CAT_OLD_VALUE:this.categoryOldValue,CAT_REC_VALUE:this.categoryNewValue,CAT_USER:this.userName,CAT_STATUS:"PENDING"};console.log(t),this.ser.saveRecommendedName(t).subscribe(t=>{this.status=t.status})}}}return t.\u0275fac=function(e){return new(e||t)(Ki(Jp))},t.\u0275cmp=le({type:t,selectors:[["app-category"]],decls:100,vars:9,consts:[[1,"navbar","navbar-expand-md","bg-info","navbar-dark","fixed-top"],["href","#",1,"navbar-brand"],["type","button","data-toggle","collapse","data-target","#collapsibleNavbar",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","collapsibleNavbar",1,"collapse","navbar-collapse"],[1,"navbar-nav"],[1,"nav-item"],["routerLink","/table",1,"nav-link"],["routerLink","/category",1,"nav-link"],["routerLink","/approveCategory",1,"nav-link"],["routerLink","/ruleBasedMigrationComponent",1,"nav-link"],[1,"container-fluid"],[1,"row"],[1,"col-lg-2"],[1,"form-group"],["for","sel1"],[1,"form-control",3,"change"],["value","select"],[3,"value",4,"ngFor","ngForOf"],[1,"card",2,"padding","25px"],[1,"text-primary"],[1,"text-success"],[1,"table","table-hover"],["data-toggle","modal","data-target","#myModal",3,"click",4,"ngFor","ngForOf"],["id","myModal",1,"modal","fade"],[1,"modal-dialog","modal-xl"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close"],[1,"modal-body"],[4,"ngFor","ngForOf"],[1,"col"],["type","text","readonly","",1,"form-control",3,"value"],["type","text",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-danger"],[3,"value"],["data-toggle","modal","data-target","#myModal",3,"click"]],template:function(t,e){1&t&&(Qi(0,"nav",0),Qi(1,"a",1),vo(2,"Machint"),Yi(),Qi(3,"button",2),Ji(4,"span",3),Yi(),Qi(5,"div",4),Qi(6,"ul",5),Qi(7,"li",6),Qi(8,"a",7),vo(9,"Select Table"),Yi(),Yi(),Qi(10,"li",6),Qi(11,"a",8),vo(12,"Category"),Yi(),Yi(),Qi(13,"li",6),Qi(14,"a",9),vo(15,"Approve Category"),Yi(),Yi(),Qi(16,"li",6),Qi(17,"a",10),vo(18,"Migration"),Yi(),Yi(),Yi(),Yi(),Yi(),Ji(19,"br"),Ji(20,"br"),Ji(21,"br"),Qi(22,"div",11),Qi(23,"div",12),Qi(24,"div",13),Qi(25,"div",14),Qi(26,"label",15),vo(27,"Select Category:"),Yi(),Qi(28,"select",16),no("change",(function(t){return e.getCategories(t.target.value)})),Qi(29,"option",17),vo(30,"Select"),Yi(),qi(31,im,2,2,"option",18),Yi(),Yi(),Yi(),Yi(),Qi(32,"div",19),Qi(33,"h2",20),vo(34,"Categories"),Yi(),Ji(35,"hr"),Qi(36,"h5",21),vo(37),Yi(),Ji(38,"br"),Qi(39,"table",22),Qi(40,"thead"),Qi(41,"tr"),Qi(42,"th"),vo(43,"CATEGORY"),Yi(),Qi(44,"th"),vo(45,"NAME"),Yi(),Qi(46,"th"),vo(47,"VALUE"),Yi(),Yi(),Yi(),Qi(48,"tbody"),qi(49,om,7,3,"tr",23),Yi(),Yi(),Yi(),Qi(50,"div",24),Qi(51,"div",25),Qi(52,"div",26),Qi(53,"div",27),Qi(54,"h4",28),vo(55," Category recommended form"),Yi(),Qi(56,"button",29),vo(57,"\xd7"),Yi(),Yi(),Qi(58,"div",30),Qi(59,"table",22),Qi(60,"thead"),Qi(61,"tr"),Qi(62,"th"),vo(63,"USER NAME"),Yi(),Qi(64,"th"),vo(65,"NAME"),Yi(),Qi(66,"th"),vo(67,"OLD VALUE"),Yi(),Qi(68,"th"),vo(69,"RECOMMENDED VALUE"),Yi(),Qi(70,"th"),vo(71,"STATUS"),Yi(),Qi(72,"th"),vo(73,"CATAGORY"),Yi(),Yi(),Yi(),Qi(74,"tbody"),qi(75,am,13,6,"tr",31),Yi(),Yi(),Ji(76,"br"),Qi(77,"div",14),Qi(78,"div",12),Qi(79,"div",32),vo(80," Category "),Ji(81,"input",33),Yi(),Qi(82,"div",32),vo(83," Name "),Ji(84,"input",33),Yi(),Yi(),Qi(85,"div",12),Qi(86,"div",32),vo(87," Old Value "),Ji(88,"input",33),Yi(),Qi(89,"div",32),vo(90," Recommended Value"),Qi(91,"input",34),no("ngModelChange",(function(t){return e.categoryNewValue=t})),Yi(),Yi(),Yi(),Qi(92,"div",14),vo(93," User Name "),Qi(94,"input",34),no("ngModelChange",(function(t){return e.userName=t})),Yi(),Yi(),Yi(),Yi(),Qi(95,"div",35),Qi(96,"button",36),no("click",(function(){return e.saveRecommendedName()})),vo(97,"Save"),Yi(),Qi(98,"button",37),vo(99,"Close"),Yi(),Yi(),Yi(),Yi(),Yi(),Yi()),2&t&&(Yr(31),Wi("ngForOf",e.categoryList),Yr(6),bo(e.status),Yr(12),Wi("ngForOf",e.categories),Yr(26),Wi("ngForOf",e.list),Yr(6),oo("value",e.category),Yr(3),oo("value",e.categoryName),Yr(4),oo("value",e.categoryOldValue),Yr(3),Wi("ngModel",e.categoryNewValue),Yr(3),Wi("ngModel",e.userName))},directives:[Rp,Lf,Hf,ic,af,pf,dg],styles:[""]}),t})()},{path:"approveCategory",component:(()=>{class t{constructor(t){this.ser=t}ngOnInit(){this.getCategoryList()}getCategories(t){this.cat=t,this.ser.getCategories(t).subscribe(t=>{this.categories=t,t.forEach(t=>{console.log(t)})})}getCategoryList(){this.ser.getCategoryList().subscribe(t=>{this.categoryList=t,t.forEach(t=>{console.log(t)})})}getCategoryRecommendedList(t){this.catName=t,this.ser.getCategoryRecommendedList(this.catName).subscribe(t=>{console.log(t),this.list=t})}approveCategoryValue(t,e,n,r,s,i){let o={CAT_CATEGORY:i,CAT_NAME:e,CAT_OLD_VALUE:n,CAT_REC_VALUE:r,CAT_USER:t,CAT_STATUS:"APPROVED"};console.log(o),this.ser.approveCategoryValue(o).subscribe(t=>{this.status=t.status,this.getCategoryRecommendedList(this.catName),this.getCategories(this.cat)})}}return t.\u0275fac=function(e){return new(e||t)(Ki(Jp))},t.\u0275cmp=le({type:t,selectors:[["app-approve-category"]],decls:81,vars:4,consts:[[1,"navbar","navbar-expand-md","bg-info","navbar-dark","fixed-top"],["href","#",1,"navbar-brand"],["type","button","data-toggle","collapse","data-target","#collapsibleNavbar",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","collapsibleNavbar",1,"collapse","navbar-collapse"],[1,"navbar-nav"],[1,"nav-item"],["routerLink","/table",1,"nav-link"],["routerLink","/category",1,"nav-link"],["routerLink","/approveCategory",1,"nav-link"],["routerLink","/ruleBasedMigrationComponent",1,"nav-link"],[1,"container-fluid"],[1,"row"],[1,"col-lg-2"],[1,"form-group"],["for","sel1"],[1,"form-control",3,"change"],["value","select"],[3,"value",4,"ngFor","ngForOf"],[1,"card",2,"padding","25px"],[1,"text-primary"],[1,"text-success"],[1,"table","table-hover"],["data-toggle","modal","data-target","#myModal",3,"click",4,"ngFor","ngForOf"],["id","myModal",1,"modal","fade"],[1,"modal-dialog","modal-xl"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close"],[1,"modal-body"],[4,"ngFor","ngForOf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-danger"],[3,"value"],["data-toggle","modal","data-target","#myModal",3,"click"],["data-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(t,e){1&t&&(Qi(0,"nav",0),Qi(1,"a",1),vo(2,"Machint"),Yi(),Qi(3,"button",2),Ji(4,"span",3),Yi(),Qi(5,"div",4),Qi(6,"ul",5),Qi(7,"li",6),Qi(8,"a",7),vo(9,"Select Table"),Yi(),Yi(),Qi(10,"li",6),Qi(11,"a",8),vo(12,"Category"),Yi(),Yi(),Qi(13,"li",6),Qi(14,"a",9),vo(15,"Approve Category"),Yi(),Yi(),Qi(16,"li",6),Qi(17,"a",10),vo(18,"Migration"),Yi(),Yi(),Yi(),Yi(),Yi(),Ji(19,"br"),Ji(20,"br"),Ji(21,"br"),Qi(22,"div",11),Qi(23,"div",12),Qi(24,"div",13),Qi(25,"div",14),Qi(26,"label",15),vo(27,"Select Category:"),Yi(),Qi(28,"select",16),no("change",(function(t){return e.getCategories(t.target.value)})),Qi(29,"option",17),vo(30,"Select"),Yi(),qi(31,lm,2,2,"option",18),Yi(),Yi(),Yi(),Yi(),Qi(32,"div",19),Qi(33,"h2",20),vo(34,"Categories"),Yi(),Ji(35,"hr"),Qi(36,"h5",21),vo(37),Yi(),Ji(38,"br"),Qi(39,"table",22),Qi(40,"thead"),Qi(41,"tr"),Qi(42,"th"),vo(43,"CATEGORY"),Yi(),Qi(44,"th"),vo(45,"NAME"),Yi(),Qi(46,"th"),vo(47,"VALUE"),Yi(),Yi(),Yi(),Qi(48,"tbody"),qi(49,cm,7,3,"tr",23),Yi(),Yi(),Yi(),Qi(50,"div",24),Qi(51,"div",25),Qi(52,"div",26),Qi(53,"div",27),Qi(54,"h4",28),vo(55,"Approvals "),Yi(),Qi(56,"button",29),vo(57,"\xd7"),Yi(),Yi(),Qi(58,"div",30),Qi(59,"table",22),Qi(60,"thead"),Qi(61,"tr"),Qi(62,"th"),vo(63,"USER NAME"),Yi(),Qi(64,"th"),vo(65,"NAME"),Yi(),Qi(66,"th"),vo(67,"OLD VALUE"),Yi(),Qi(68,"th"),vo(69,"RECOMMENDED VALUE"),Yi(),Qi(70,"th"),vo(71,"STATUS"),Yi(),Qi(72,"th"),vo(73,"CATAGORY"),Yi(),Qi(74,"th"),vo(75,"APPROVE"),Yi(),Yi(),Yi(),Qi(76,"tbody"),qi(77,um,16,6,"tr",31),Yi(),Yi(),Yi(),Qi(78,"div",32),Qi(79,"button",33),vo(80,"Close"),Yi(),Yi(),Yi(),Yi(),Yi(),Yi()),2&t&&(Yr(31),Wi("ngForOf",e.categoryList),Yr(6),bo(e.status),Yr(12),Wi("ngForOf",e.categories),Yr(28),Wi("ngForOf",e.list))},directives:[Rp,Lf,Hf,ic],styles:[""]}),t})()},{path:"ruleBasedMigrationComponent",component:(()=>{class t{constructor(t){this.ser=t}ngOnInit(){this.getRules()}getRules(){this.ser.getRules().subscribe(t=>{this.rulesList=t,console.log(t)})}updateData(t,e,n,r,s,i,o,a,l,c,u){let h={sourceTable:t,destTable:e,srcKey:n,destKey:r,ruleName:s,value1:i,value2:o,value3:a,whereCondition:l,SRC_COLUMNS:c,DEST_COLUMNS:u};"IgnoreColumns"==s?this.ser.migrateBasedOnIgnoreColumnRule(h).subscribe(t=>{this.status=t.status}):"SplitColumns"==s?this.ser.migrateBasedOnSplitRule(h).subscribe(t=>{this.status=t.status}):"MergeColumns"==s&&this.ser.migrateBasedOnMergeColumnsRule(h).subscribe(t=>{this.status=t.status})}}return t.\u0275fac=function(e){return new(e||t)(Ki(Jp))},t.\u0275cmp=le({type:t,selectors:[["app-rule-based-migration"]],decls:59,vars:6,consts:[[1,"navbar","navbar-expand-md","bg-info","navbar-dark","fixed-top"],["href","#",1,"navbar-brand"],["type","button","data-toggle","collapse","data-target","#collapsibleNavbar",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","collapsibleNavbar",1,"collapse","navbar-collapse"],[1,"navbar-nav"],[1,"nav-item"],["routerLink","/table",1,"nav-link"],["routerLink","/category",1,"nav-link"],["routerLink","/approveCategory",1,"nav-link"],["routerLink","/ruleBasedMigrationComponent",1,"nav-link"],[1,"container-fluid"],[1,"card",2,"padding","25px"],[1,"text-primary"],[3,"ngClass"],[1,"myTable"],[1,"table","table-hover",2,"padding","5px","margin","2px"],[4,"ngFor","ngForOf"],[1,"btn","btn-primary",3,"click"]],template:function(t,e){var n,r,s,i,o;1&t&&(Qi(0,"nav",0),Qi(1,"a",1),vo(2,"Machint"),Yi(),Qi(3,"button",2),Ji(4,"span",3),Yi(),Qi(5,"div",4),Qi(6,"ul",5),Qi(7,"li",6),Qi(8,"a",7),vo(9,"Select Table"),Yi(),Yi(),Qi(10,"li",6),Qi(11,"a",8),vo(12,"Category"),Yi(),Yi(),Qi(13,"li",6),Qi(14,"a",9),vo(15,"Approve Category"),Yi(),Yi(),Qi(16,"li",6),Qi(17,"a",10),vo(18,"Migration"),Yi(),Yi(),Yi(),Yi(),Yi(),Ji(19,"br"),Ji(20,"br"),Ji(21,"br"),Qi(22,"div",11),Qi(23,"div",12),Qi(24,"h2",13),vo(25,"Rules"),Yi(),Ji(26,"hr"),Qi(27,"h5",14),vo(28),Yi(),Ji(29,"br"),Qi(30,"div",15),Qi(31,"table",16),Qi(32,"thead"),Qi(33,"tr"),Qi(34,"th"),vo(35,"SRC TABLE"),Yi(),Qi(36,"th"),vo(37,"DESTINATION TABLE"),Yi(),Qi(38,"th"),vo(39,"SRC KEY"),Yi(),Qi(40,"th"),vo(41,"DEST KEY"),Yi(),Qi(42,"th"),vo(43,"RULE NAME"),Yi(),Qi(44,"th"),vo(45,"VALUE1"),Yi(),Qi(46,"th"),vo(47,"VALUE2"),Yi(),Qi(48,"th"),vo(49,"VALUE3"),Yi(),Qi(50,"th"),vo(51,"Filter condition"),Yi(),Qi(52,"th"),vo(53,"SRC_COLUMNS"),Yi(),Qi(54,"th"),vo(55,"DEST_COLUMNS"),Yi(),Ji(56,"th"),Yi(),Yi(),Qi(57,"tbody"),qi(58,hm,26,11,"tr",17),Yi(),Yi(),Yi(),Yi(),Yi()),2&t&&(Yr(27),Wi("ngClass",(n=3,r=dm,s="Migration success"==e.status,i="Migration success"!=e.status,function(t,e,n,r,s,i,o){const a=e+n;return Bi(t,a,s,i)?Hi(t,a+2,o?r.call(o,s,i):r(s,i)):Va(t,a+2)}($e(),Qe(),n,r,s,i,o))),Yr(1),bo(e.status),Yr(30),Wi("ngForOf",e.rulesList))},directives:[Rp,rc,ic],styles:[".myTable[_ngcontent-%COMP%]{overflow-x:auto;white-space:nowrap}"]}),t})()}];let fm=(()=>{class t{}return t.\u0275mod=de({type:t}),t.\u0275inj=lt({factory:function(e){return new(e||t)},imports:[[$p.forRoot(pm)],$p]}),t})(),gm=(()=>{class t{constructor(){this.title="Data Migration - Mismatch Verification"}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=le({type:t,selectors:[["app-root"]],decls:1,vars:0,template:function(t,e){1&t&&Ji(0,"router-outlet")},directives:[Np],styles:["h1[_ngcontent-%COMP%]{font-size:1.2em;margin-bottom:0}h2[_ngcontent-%COMP%]{font-size:2em;margin-top:0;padding-top:0}nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:5px 10px;text-decoration:none;margin-top:10px;display:inline-block;background-color:#eee;border-radius:4px}a[_ngcontent-%COMP%]:link, nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:#334953}nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background-color:#cfd8dc}nav[_ngcontent-%COMP%] a.active[_ngcontent-%COMP%], nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:#039be5}"]}),t})(),mm=(()=>{class t{}return t.\u0275mod=de({type:t,bootstrap:[gm]}),t.\u0275inj=lt({factory:function(e){return new(e||t)},providers:[],imports:[[$c,fm,xu,fg]]}),t})();(function(){if(ir)throw new Error("Cannot enable prod mode after platform setup.");sr=!1})(),Fc().bootstrapModule(mm).catch(t=>console.error(t))},zn8P:function(t,e){function n(t){return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}))}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id="zn8P"}},[[0,0]]]); \ No newline at end of file diff --git a/CompareTables/src/main/resources/static/polyfills.a4021de53358bb0fec14.js b/CompareTables/src/main/resources/static/polyfills.a4021de53358bb0fec14.js new file mode 100644 index 0000000..4919f68 --- /dev/null +++ b/CompareTables/src/main/resources/static/polyfills.a4021de53358bb0fec14.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{1:function(e,t,n){e.exports=n("hN/g")},"hN/g":function(e,t,n){"use strict";n.r(t),n("pDpN")},pDpN:function(e,t,n){var o,r;void 0===(r="function"==typeof(o=function(){"use strict";!function(e){const t=e.performance;function n(e){t&&t.mark&&t.mark(e)}function o(e,n){t&&t.measure&&t.measure(e,n)}n("Zone");const r=e.__Zone_symbol_prefix||"__zone_symbol__";function s(e){return r+e}const a=!0===e[s("forceDuplicateZoneCheck")];if(e.Zone){if(a||"function"!=typeof e.Zone.__symbol__)throw new Error("Zone already loaded.");return e.Zone}class i{constructor(e,t){this._parent=e,this._name=t?t.name||"unnamed":"",this._properties=t&&t.properties||{},this._zoneDelegate=new l(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(e.Promise!==C.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let e=i.current;for(;e.parent;)e=e.parent;return e}static get current(){return z.zone}static get currentTask(){return j}static __load_patch(t,r){if(C.hasOwnProperty(t)){if(a)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){const s="Zone:"+t;n(s),C[t]=r(e,i,O),o(s,s)}}get parent(){return this._parent}get name(){return this._name}get(e){const t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const n=this._zoneDelegate.intercept(this,e,t),o=this;return function(){return o.runGuarded(n,this,arguments,t)}}run(e,t,n,o){z={parent:z,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,o)}finally{z=z.parent}}runGuarded(e,t=null,n,o){z={parent:z,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,o)}catch(r){if(this._zoneDelegate.handleError(this,r))throw r}}finally{z=z.parent}}runTask(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||y).name+"; Execution: "+this.name+")");if(e.state===v&&(e.type===P||e.type===D))return;const o=e.state!=E;o&&e._transitionTo(E,T),e.runCount++;const r=j;j=e,z={parent:z,zone:this};try{e.type==D&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(s){if(this._zoneDelegate.handleError(this,s))throw s}}finally{e.state!==v&&e.state!==Z&&(e.type==P||e.data&&e.data.isPeriodic?o&&e._transitionTo(T,E):(e.runCount=0,this._updateTaskCount(e,-1),o&&e._transitionTo(v,E,v))),z=z.parent,j=r}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(b,v);const t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(n){throw e._transitionTo(Z,b,v),this._zoneDelegate.handleError(this,n),n}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==b&&e._transitionTo(T,b),e}scheduleMicroTask(e,t,n,o){return this.scheduleTask(new u(S,e,t,n,o,void 0))}scheduleMacroTask(e,t,n,o,r){return this.scheduleTask(new u(D,e,t,n,o,r))}scheduleEventTask(e,t,n,o,r){return this.scheduleTask(new u(P,e,t,n,o,r))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||y).name+"; Execution: "+this.name+")");e._transitionTo(w,T,E);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(Z,w),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(v,w),e.runCount=0,e}_updateTaskCount(e,t){const n=e._zoneDelegates;-1==t&&(e._zoneDelegates=null);for(let o=0;oe.hasTask(n,o),onScheduleTask:(e,t,n,o)=>e.scheduleTask(n,o),onInvokeTask:(e,t,n,o,r,s)=>e.invokeTask(n,o,r,s),onCancelTask:(e,t,n,o)=>e.cancelTask(n,o)};class l{constructor(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t._forkCurrZone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t._interceptCurrZone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t._invokeCurrZone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t._handleErrorCurrZone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t._scheduleTaskCurrZone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t._invokeTaskCurrZone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const o=n&&n.onHasTask;(o||t&&t._hasTaskZS)&&(this._hasTaskZS=o?n:c,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new i(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,o,r){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,o,r):t.apply(n,o)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=S)throw new Error("Task is missing scheduleFn.");k(t)}return n}invokeTask(e,t,n,o){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,o):t.callback.apply(n,o)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){this.handleError(e,n)}}_updateTaskCount(e,t){const n=this._taskCounts,o=n[e],r=n[e]=o+t;if(r<0)throw new Error("More tasks executed then were scheduled.");0!=o&&0!=r||this.hasTask(this.zone,{microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e})}}class u{constructor(t,n,o,r,s,a){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=t,this.source=n,this.data=r,this.scheduleFn=s,this.cancelFn=a,!o)throw new Error("callback is not defined");this.callback=o;const i=this;this.invoke=t===P&&r&&r.useG?u.invokeTask:function(){return u.invokeTask.call(e,i,this,arguments)}}static invokeTask(e,t,n){e||(e=this),I++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{1==I&&m(),I--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(v,b)}_transitionTo(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?" or '"+n+"'":""}, was '${this._state}'.`);this._state=e,e==v&&(this._zoneDelegates=null)}toString(){return this.data&&void 0!==this.data.handleId?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const h=s("setTimeout"),p=s("Promise"),f=s("then");let d,g=[],_=!1;function k(t){if(0===I&&0===g.length)if(d||e[p]&&(d=e[p].resolve(0)),d){let e=d[f];e||(e=d.then),e.call(d,m)}else e[h](m,0);t&&g.push(t)}function m(){if(!_){for(_=!0;g.length;){const t=g;g=[];for(let n=0;nz,onUnhandledError:N,microtaskDrainDone:N,scheduleMicroTask:k,showUncaughtError:()=>!i[s("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:N,patchMethod:()=>N,bindArguments:()=>[],patchThen:()=>N,patchMacroTask:()=>N,setNativePromise:e=>{e&&"function"==typeof e.resolve&&(d=e.resolve(0))},patchEventPrototype:()=>N,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>N,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>N,wrapWithCurrentZone:()=>N,filterProperties:()=>[],attachOriginToPatched:()=>N,_redefineProperty:()=>N,patchCallbacks:()=>N};let z={parent:null,zone:new i(null,null)},j=null,I=0;function N(){}o("Zone","Zone"),e.Zone=i}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global),Zone.__load_patch("ZoneAwarePromise",(e,t,n)=>{const o=Object.getOwnPropertyDescriptor,r=Object.defineProperty,s=n.symbol,a=[],i=!0===e[s("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],c=s("Promise"),l=s("then");n.onUnhandledError=e=>{if(n.showUncaughtError()){const t=e&&e.rejection;t?console.error("Unhandled Promise rejection:",t instanceof Error?t.message:t,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;a.length;){const t=a.shift();try{t.zone.runGuarded(()=>{throw t})}catch(e){h(e)}}};const u=s("unhandledPromiseRejectionHandler");function h(e){n.onUnhandledError(e);try{const n=t[u];"function"==typeof n&&n.call(this,e)}catch(o){}}function p(e){return e&&e.then}function f(e){return e}function d(e){return D.reject(e)}const g=s("state"),_=s("value"),k=s("finally"),m=s("parentPromiseValue"),y=s("parentPromiseState");function v(e,t){return n=>{try{T(e,t,n)}catch(o){T(e,!1,o)}}}const b=s("currentTaskTrace");function T(e,o,s){const c=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}}();if(e===s)throw new TypeError("Promise resolved with itself");if(null===e[g]){let h=null;try{"object"!=typeof s&&"function"!=typeof s||(h=s&&s.then)}catch(u){return c(()=>{T(e,!1,u)})(),e}if(!1!==o&&s instanceof D&&s.hasOwnProperty(g)&&s.hasOwnProperty(_)&&null!==s[g])w(s),T(e,s[g],s[_]);else if(!1!==o&&"function"==typeof h)try{h.call(s,c(v(e,o)),c(v(e,!1)))}catch(u){c(()=>{T(e,!1,u)})()}else{e[g]=o;const c=e[_];if(e[_]=s,e[k]===k&&!0===o&&(e[g]=e[y],e[_]=e[m]),!1===o&&s instanceof Error){const e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&r(s,b,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t{try{const o=e[_],r=!!n&&k===n[k];r&&(n[m]=o,n[y]=s);const i=t.run(a,void 0,r&&a!==d&&a!==f?[]:[o]);T(n,!0,i)}catch(o){T(n,!1,o)}},n)}const S=function(){};class D{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(e){return T(new this(null),!0,e)}static reject(e){return T(new this(null),!1,e)}static race(e){let t,n,o=new this((e,o)=>{t=e,n=o});function r(e){t(e)}function s(e){n(e)}for(let a of e)p(a)||(a=this.resolve(a)),a.then(r,s);return o}static all(e){return D.allWithCallback(e)}static allSettled(e){return(this&&this.prototype instanceof D?this:D).allWithCallback(e,{thenCallback:e=>({status:"fulfilled",value:e}),errorCallback:e=>({status:"rejected",reason:e})})}static allWithCallback(e,t){let n,o,r=new this((e,t)=>{n=e,o=t}),s=2,a=0;const i=[];for(let l of e){p(l)||(l=this.resolve(l));const e=a;try{l.then(o=>{i[e]=t?t.thenCallback(o):o,s--,0===s&&n(i)},r=>{t?(i[e]=t.errorCallback(r),s--,0===s&&n(i)):o(r)})}catch(c){o(c)}s++,a++}return s-=2,0===s&&n(i),r}constructor(e){const t=this;if(!(t instanceof D))throw new Error("Must be an instanceof Promise.");t[g]=null,t[_]=[];try{e&&e(v(t,!0),v(t,!1))}catch(n){T(t,!1,n)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return D}then(e,n){let o=this.constructor[Symbol.species];o&&"function"==typeof o||(o=this.constructor||D);const r=new o(S),s=t.current;return null==this[g]?this[_].push(s,r,e,n):Z(this,s,r,e,n),r}catch(e){return this.then(null,e)}finally(e){let n=this.constructor[Symbol.species];n&&"function"==typeof n||(n=D);const o=new n(S);o[k]=k;const r=t.current;return null==this[g]?this[_].push(r,o,e,e):Z(this,r,o,e,e),o}}D.resolve=D.resolve,D.reject=D.reject,D.race=D.race,D.all=D.all;const P=e[c]=e.Promise,C=t.__symbol__("ZoneAwarePromise");let O=o(e,"Promise");O&&!O.configurable||(O&&delete O.writable,O&&delete O.value,O||(O={configurable:!0,enumerable:!0}),O.get=function(){return e[C]?e[C]:e[c]},O.set=function(t){t===D?e[C]=t:(e[c]=t,t.prototype[l]||j(t),n.setNativePromise(t))},r(e,"Promise",O)),e.Promise=D;const z=s("thenPatched");function j(e){const t=e.prototype,n=o(t,"then");if(n&&(!1===n.writable||!n.configurable))return;const r=t.then;t[l]=r,e.prototype.then=function(e,t){return new D((e,t)=>{r.call(this,e,t)}).then(e,t)},e[z]=!0}if(n.patchThen=j,P){j(P);const t=e.fetch;"function"==typeof t&&(e[n.symbol("fetch")]=t,e.fetch=(I=t,function(){let e=I.apply(this,arguments);if(e instanceof D)return e;let t=e.constructor;return t[z]||j(t),e}))}var I;return Promise[t.__symbol__("uncaughtPromiseErrors")]=a,D});const e=Object.getOwnPropertyDescriptor,t=Object.defineProperty,n=Object.getPrototypeOf,o=Object.create,r=Array.prototype.slice,s=Zone.__symbol__("addEventListener"),a=Zone.__symbol__("removeEventListener"),i=Zone.__symbol__("");function c(e,t){return Zone.current.wrap(e,t)}function l(e,t,n,o,r){return Zone.current.scheduleMacroTask(e,t,n,o,r)}const u=Zone.__symbol__,h="undefined"!=typeof window,p=h?window:void 0,f=h&&p||"object"==typeof self&&self||global,d=[null];function g(e,t){for(let n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=c(e[n],t+"_"+n));return e}function _(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&void 0===e.set)}const k="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,m=!("nw"in f)&&void 0!==f.process&&"[object process]"==={}.toString.call(f.process),y=!m&&!k&&!(!h||!p.HTMLElement),v=void 0!==f.process&&"[object process]"==={}.toString.call(f.process)&&!k&&!(!h||!p.HTMLElement),b={},T=function(e){if(!(e=e||f.event))return;let t=b[e.type];t||(t=b[e.type]=u("ON_PROPERTY"+e.type));const n=this||e.target||f,o=n[t];let r;if(y&&n===p&&"error"===e.type){const t=e;r=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===r&&e.preventDefault()}else r=o&&o.apply(this,arguments),null==r||r||e.preventDefault();return r};function E(n,o,r){let s=e(n,o);if(!s&&r&&e(r,o)&&(s={enumerable:!0,configurable:!0}),!s||!s.configurable)return;const a=u("on"+o+"patched");if(n.hasOwnProperty(a)&&n[a])return;delete s.writable,delete s.value;const i=s.get,c=s.set,l=o.substr(2);let h=b[l];h||(h=b[l]=u("ON_PROPERTY"+l)),s.set=function(e){let t=this;t||n!==f||(t=f),t&&(t[h]&&t.removeEventListener(l,T),c&&c.apply(t,d),"function"==typeof e?(t[h]=e,t.addEventListener(l,T,!1)):t[h]=null)},s.get=function(){let e=this;if(e||n!==f||(e=f),!e)return null;const t=e[h];if(t)return t;if(i){let t=i&&i.call(this);if(t)return s.set.call(this,t),"function"==typeof e.removeAttribute&&e.removeAttribute(o),t}return null},t(n,o,s),n[a]=!0}function w(e,t,n){if(t)for(let o=0;ofunction(t,o){const s=n(t,o);return s.cbIdx>=0&&"function"==typeof o[s.cbIdx]?l(s.name,o[s.cbIdx],s,r):e.apply(t,o)})}function C(e,t){e[u("OriginalDelegate")]=t}let O=!1,z=!1;function j(){try{const e=p.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch(e){}return!1}function I(){if(O)return z;O=!0;try{const e=p.navigator.userAgent;-1===e.indexOf("MSIE ")&&-1===e.indexOf("Trident/")&&-1===e.indexOf("Edge/")||(z=!0)}catch(e){}return z}Zone.__load_patch("toString",e=>{const t=Function.prototype.toString,n=u("OriginalDelegate"),o=u("Promise"),r=u("Error"),s=function(){if("function"==typeof this){const s=this[n];if(s)return"function"==typeof s?t.call(s):Object.prototype.toString.call(s);if(this===Promise){const n=e[o];if(n)return t.call(n)}if(this===Error){const n=e[r];if(n)return t.call(n)}}return t.call(this)};s[n]=t,Function.prototype.toString=s;const a=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":a.call(this)}});let N=!1;if("undefined"!=typeof window)try{const e=Object.defineProperty({},"passive",{get:function(){N=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(ie){N=!1}const R={useG:!0},x={},L={},M=new RegExp("^"+i+"(\\w+)(true|false)$"),A=u("propagationStopped");function H(e,t){const n=(t?t(e):e)+"false",o=(t?t(e):e)+"true",r=i+n,s=i+o;x[e]={},x[e].false=r,x[e].true=s}function F(e,t,o){const r=o&&o.add||"addEventListener",s=o&&o.rm||"removeEventListener",a=o&&o.listeners||"eventListeners",c=o&&o.rmAll||"removeAllListeners",l=u(r),h="."+r+":",p=function(e,t,n){if(e.isRemoved)return;const o=e.callback;"object"==typeof o&&o.handleEvent&&(e.callback=e=>o.handleEvent(e),e.originalDelegate=o),e.invoke(e,t,[n]);const r=e.options;r&&"object"==typeof r&&r.once&&t[s].call(t,n.type,e.originalDelegate?e.originalDelegate:e.callback,r)},f=function(t){if(!(t=t||e.event))return;const n=this||t.target||e,o=n[x[t.type].false];if(o)if(1===o.length)p(o[0],n,t);else{const e=o.slice();for(let o=0;ofunction(t,n){t[A]=!0,e&&e.apply(t,n)})}function q(e,t,n,o,r){const s=Zone.__symbol__(o);if(t[s])return;const a=t[s]=t[o];t[o]=function(s,i,c){return i&&i.prototype&&r.forEach((function(t){const r=`${n}.${o}::`+t,s=i.prototype;if(s.hasOwnProperty(t)){const n=e.ObjectGetOwnPropertyDescriptor(s,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,r),e._redefineProperty(i.prototype,t,n)):s[t]&&(s[t]=e.wrapWithCurrentZone(s[t],r))}else s[t]&&(s[t]=e.wrapWithCurrentZone(s[t],r))})),a.call(t,s,i,c)},e.attachOriginToPatched(t[o],a)}const W=["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplayconnected","vrdisplaydisconnected","vrdisplaypresentchange"],U=["encrypted","waitingforkey","msneedkey","mozinterruptbegin","mozinterruptend"],V=["load"],$=["blur","error","focus","load","resize","scroll","messageerror"],X=["bounce","finish","start"],J=["loadstart","progress","abort","error","load","progress","timeout","loadend","readystatechange"],Y=["upgradeneeded","complete","abort","success","error","blocked","versionchange","close"],K=["close","error","open","message"],Q=["error","message"],ee=["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"].concat(["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],["autocomplete","autocompleteerror"],["toggle"],["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],W,["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"]);function te(e,t,n){if(!n||0===n.length)return t;const o=n.filter(t=>t.target===e);if(!o||0===o.length)return t;const r=o[0].ignoreProperties;return t.filter(e=>-1===r.indexOf(e))}function ne(e,t,n,o){e&&w(e,te(e,t,n),o)}function oe(e,t){if(m&&!v)return;if(Zone[e.symbol("patchEvents")])return;const o="undefined"!=typeof WebSocket,r=t.__Zone_ignore_on_properties;if(y){const e=window,t=j?[{target:e,ignoreProperties:["error"]}]:[];ne(e,ee.concat(["messageerror"]),r?r.concat(t):r,n(e)),ne(Document.prototype,ee,r),void 0!==e.SVGElement&&ne(e.SVGElement.prototype,ee,r),ne(Element.prototype,ee,r),ne(HTMLElement.prototype,ee,r),ne(HTMLMediaElement.prototype,U,r),ne(HTMLFrameSetElement.prototype,W.concat($),r),ne(HTMLBodyElement.prototype,W.concat($),r),ne(HTMLFrameElement.prototype,V,r),ne(HTMLIFrameElement.prototype,V,r);const o=e.HTMLMarqueeElement;o&&ne(o.prototype,X,r);const s=e.Worker;s&&ne(s.prototype,Q,r)}const s=t.XMLHttpRequest;s&&ne(s.prototype,J,r);const a=t.XMLHttpRequestEventTarget;a&&ne(a&&a.prototype,J,r),"undefined"!=typeof IDBIndex&&(ne(IDBIndex.prototype,Y,r),ne(IDBRequest.prototype,Y,r),ne(IDBOpenDBRequest.prototype,Y,r),ne(IDBDatabase.prototype,Y,r),ne(IDBTransaction.prototype,Y,r),ne(IDBCursor.prototype,Y,r)),o&&ne(WebSocket.prototype,K,r)}Zone.__load_patch("util",(n,s,a)=>{a.patchOnProperties=w,a.patchMethod=D,a.bindArguments=g,a.patchMacroTask=P;const l=s.__symbol__("BLACK_LISTED_EVENTS"),u=s.__symbol__("UNPATCHED_EVENTS");n[u]&&(n[l]=n[u]),n[l]&&(s[l]=s[u]=n[l]),a.patchEventPrototype=B,a.patchEventTarget=F,a.isIEOrEdge=I,a.ObjectDefineProperty=t,a.ObjectGetOwnPropertyDescriptor=e,a.ObjectCreate=o,a.ArraySlice=r,a.patchClass=S,a.wrapWithCurrentZone=c,a.filterProperties=te,a.attachOriginToPatched=C,a._redefineProperty=Object.defineProperty,a.patchCallbacks=q,a.getGlobalObjects=()=>({globalSources:L,zoneSymbolEventNames:x,eventNames:ee,isBrowser:y,isMix:v,isNode:m,TRUE_STR:"true",FALSE_STR:"false",ZONE_SYMBOL_PREFIX:i,ADD_EVENT_LISTENER_STR:"addEventListener",REMOVE_EVENT_LISTENER_STR:"removeEventListener"})});const re=u("zoneTask");function se(e,t,n,o){let r=null,s=null;n+=o;const a={};function i(t){const n=t.data;return n.args[0]=function(){try{t.invoke.apply(this,arguments)}finally{t.data&&t.data.isPeriodic||("number"==typeof n.handleId?delete a[n.handleId]:n.handleId&&(n.handleId[re]=null))}},n.handleId=r.apply(e,n.args),t}function c(e){return s(e.data.handleId)}r=D(e,t+=o,n=>function(r,s){if("function"==typeof s[0]){const e=l(t,s[0],{isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?s[1]||0:void 0,args:s},i,c);if(!e)return e;const n=e.data.handleId;return"number"==typeof n?a[n]=e:n&&(n[re]=e),n&&n.ref&&n.unref&&"function"==typeof n.ref&&"function"==typeof n.unref&&(e.ref=n.ref.bind(n),e.unref=n.unref.bind(n)),"number"==typeof n||n?n:e}return n.apply(e,s)}),s=D(e,n,t=>function(n,o){const r=o[0];let s;"number"==typeof r?s=a[r]:(s=r&&r[re],s||(s=r)),s&&"string"==typeof s.type?"notScheduled"!==s.state&&(s.cancelFn&&s.data.isPeriodic||0===s.runCount)&&("number"==typeof r?delete a[r]:r&&(r[re]=null),s.zone.cancelTask(s)):t.apply(e,o)})}function ae(e,t){if(Zone[t.symbol("patchEventTarget")])return;const{eventNames:n,zoneSymbolEventNames:o,TRUE_STR:r,FALSE_STR:s,ZONE_SYMBOL_PREFIX:a}=t.getGlobalObjects();for(let c=0;c{const t=e[Zone.__symbol__("legacyPatch")];t&&t()}),Zone.__load_patch("timers",e=>{se(e,"set","clear","Timeout"),se(e,"set","clear","Interval"),se(e,"set","clear","Immediate")}),Zone.__load_patch("requestAnimationFrame",e=>{se(e,"request","cancel","AnimationFrame"),se(e,"mozRequest","mozCancel","AnimationFrame"),se(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(e,t)=>{const n=["alert","prompt","confirm"];for(let o=0;ofunction(o,s){return t.current.run(n,e,s,r)})}),Zone.__load_patch("EventTarget",(e,t,n)=>{!function(e,t){t.patchEventPrototype(e,t)}(e,n),ae(e,n);const o=e.XMLHttpRequestEventTarget;o&&o.prototype&&n.patchEventTarget(e,[o.prototype]),S("MutationObserver"),S("WebKitMutationObserver"),S("IntersectionObserver"),S("FileReader")}),Zone.__load_patch("on_property",(e,t,n)=>{oe(n,e)}),Zone.__load_patch("customElements",(e,t,n)=>{!function(e,t){const{isBrowser:n,isMix:o}=t.getGlobalObjects();(n||o)&&e.customElements&&"customElements"in e&&t.patchCallbacks(t,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(e,n)}),Zone.__load_patch("XHR",(e,t)=>{!function(e){const p=e.XMLHttpRequest;if(!p)return;const f=p.prototype;let d=f[s],g=f[a];if(!d){const t=e.XMLHttpRequestEventTarget;if(t){const e=t.prototype;d=e[s],g=e[a]}}function _(e){const o=e.data,c=o.target;c[i]=!1,c[h]=!1;const l=c[r];d||(d=c[s],g=c[a]),l&&g.call(c,"readystatechange",l);const u=c[r]=()=>{if(c.readyState===c.DONE)if(!o.aborted&&c[i]&&"scheduled"===e.state){const n=c[t.__symbol__("loadfalse")];if(n&&n.length>0){const r=e.invoke;e.invoke=function(){const n=c[t.__symbol__("loadfalse")];for(let t=0;tfunction(e,t){return e[o]=0==t[2],e[c]=t[1],y.apply(e,t)}),v=u("fetchTaskAborting"),b=u("fetchTaskScheduling"),T=D(f,"send",()=>function(e,n){if(!0===t.current[b])return T.apply(e,n);if(e[o])return T.apply(e,n);{const t={target:e,url:e[c],isPeriodic:!1,args:n,aborted:!1},o=l("XMLHttpRequest.send",k,t,_,m);e&&!0===e[h]&&!t.aborted&&"scheduled"===o.state&&o.invoke()}}),E=D(f,"abort",()=>function(e,o){const r=e[n];if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(!0===t.current[v])return E.apply(e,o)})}(e);const n=u("xhrTask"),o=u("xhrSync"),r=u("xhrListener"),i=u("xhrScheduled"),c=u("xhrURL"),h=u("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",t=>{t.navigator&&t.navigator.geolocation&&function(t,n){const o=t.constructor.name;for(let r=0;r{const t=function(){return e.apply(this,g(arguments,o+"."+s))};return C(t,e),t})(a)}}}(t.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(e,t)=>{function n(t){return function(n){G(e,t).forEach(o=>{const r=e.PromiseRejectionEvent;if(r){const e=new r(t,{promise:n.promise,reason:n.rejection});o.invoke(e)}})}}e.PromiseRejectionEvent&&(t[u("unhandledPromiseRejectionHandler")]=n("unhandledrejection"),t[u("rejectionHandledHandler")]=n("rejectionhandled"))})})?o.call(t,n,t,e):o)||(e.exports=r)}},[[1,0]]]); \ No newline at end of file diff --git a/CompareTables/src/main/resources/static/runtime.e227d1a0e31cbccbf8ec.js b/CompareTables/src/main/resources/static/runtime.e227d1a0e31cbccbf8ec.js new file mode 100644 index 0000000..effa6ae --- /dev/null +++ b/CompareTables/src/main/resources/static/runtime.e227d1a0e31cbccbf8ec.js @@ -0,0 +1 @@ +!function(e){function r(r){for(var n,l,f=r[0],i=r[1],p=r[2],c=0,s=[];c